| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- # data file for the Fltk User Interface Designer (fluid)
- version 1.0300
- header_name {.h}
- code_name {.cxx}
- comment {//
- // "$Id: template_panel.fl 8864 2011-07-19 04:49:30Z greg.ercolano $"
- //
- // FLUID template support for the Fast Light Tool Kit (FLTK).
- //
- // Copyright 1998-2010 by Bill Spitzak and others.
- //
- // This library is free software. Distribution and use rights are outlined in
- // the file "COPYING" which should have been included with this file. If this
- // file is missing or damaged, see the license at:
- //
- // http://www.fltk.org/COPYING.php
- //
- // Please report all bugs and problems on the following page:
- //
- // http://www.fltk.org/str.php
- //
- } {in_source in_header
- }
- decl {\#include <stdio.h>} {}
- decl {\#include <stdlib.h>} {}
- decl {\#include "../src/flstring.h"} {}
- decl {\#include <errno.h>} {}
- decl {\#include <FL/filename.H>} {}
- decl {\#include <FL/fl_ask.H>} {}
- decl {\#include <FL/Fl_Shared_Image.H>} {}
- decl {\#include <FL/Fl_Preferences.H>} {}
- declblock {\#if defined(WIN32) && !defined(__CYGWIN__)} {after {\#endif // WIN32 && !__CYGWIN__}
- } {
- decl {\#include <io.h>} {}
- decl {\#else} {}
- decl {\#include <unistd.h>} {}
- }
- decl {extern Fl_Preferences fluid_prefs;} {}
- Function {make_template_panel()} {} {
- Fl_Window template_panel {
- label {New/Save Template}
- callback {Fl_Shared_Image *img = (Fl_Shared_Image *)template_preview->image();
- if (img) img->release();
- template_preview->image(0);
- template_browser->deselect();
- template_name->value("");
- template_instance->value("");
- template_panel->hide();} open
- xywh {340 237 460 355} type Double resizable modal visible
- } {
- Fl_Browser template_browser {
- label {Available Templates:}
- callback {if (Fl::event_clicks()) {
- template_panel->hide();
- return;
- }
- Fl_Shared_Image *img = (Fl_Shared_Image *)template_preview->image();
- if (img) img->release();
- template_preview->image(0);
- template_preview->redraw();
- int item = template_browser->value();
- if (item <= 1) template_instance->deactivate();
- else template_instance->activate();
- if (item < 1) {
- template_submit->deactivate();
- template_delete->deactivate();
- return;
- }
- template_submit->activate();
- const char *flfile = (const char *)template_browser->data(item);
- if (!flfile) {
- template_delete->deactivate();
- return;
- }
- template_name->value(template_browser->text(item));
- template_delete->activate();
- char pngfile[1024], *ext;
- strlcpy(pngfile, flfile, sizeof(pngfile));
- if ((ext = strrchr(pngfile, '.')) == NULL) return;
- strcpy(ext, ".png");
- img = Fl_Shared_Image::get(pngfile);
- if (img) {
- template_preview->image(img);
- template_preview->redraw();
- }}
- xywh {10 28 180 250} type Hold labelfont 1 align 5 when 3
- }
- Fl_Box template_preview {
- xywh {200 28 250 250} box THIN_DOWN_BOX align 85 resizable
- }
- Fl_Input template_name {
- label {Template Name:}
- callback {if (strlen(template_name->value())) {
- template_submit->activate();
- if (Fl::event_key() == FL_Enter) template_panel->hide();
- } else template_submit->deactivate();}
- xywh {124 288 326 25} labelfont 1 when 3 textfont 4
- }
- Fl_Input template_instance {
- label {Instance Name:}
- xywh {124 288 326 25} labelfont 1 textfont 4 hide
- }
- Fl_Group {} {
- xywh {10 323 440 25}
- } {
- Fl_Button template_delete {
- label {Delete Template}
- callback template_delete_cb
- xywh {10 323 133 25}
- }
- Fl_Box {} {
- xywh {153 323 126 25} resizable
- }
- Fl_Button {} {
- label Cancel
- callback {Fl_Shared_Image *img = (Fl_Shared_Image *)template_preview->image();
- if (img) img->release();
- template_preview->image(0);
- template_browser->deselect();
- template_name->value("");
- template_instance->value("");
- template_panel->hide();}
- xywh {289 323 72 25}
- }
- Fl_Return_Button template_submit {
- label Save
- callback {Fl_Shared_Image *img = (Fl_Shared_Image *)template_preview->image();
- if (img) img->release();
- template_preview->image(0);
- template_panel->hide();}
- xywh {371 323 79 25}
- }
- }
- }
- }
- Function {template_clear()} {return_type void
- } {
- code {int i;
- void *filename;
- for (i = 1; i <= template_browser->size(); i ++) {
- if ((filename = template_browser->data(i)) != NULL) free(filename);
- }
- template_browser->deselect();
- template_browser->clear();} {}
- }
- Function {template_delete_cb(Fl_Button *, void *)} {selected return_type void
- } {
- code {int item = template_browser->value();
- if (item < 1) return;
- const char *name = template_browser->text(item);
- const char *flfile = (const char *)template_browser->data(item);
- if (!flfile) return;
- if (!fl_choice("Are you sure you want to delete the template \\"%s\\"?",
- "Cancel", "Delete", 0, name)) return;
- if (unlink(flfile)) {
- fl_alert("Unable to delete template \\"%s\\":\\n%s", name, strerror(errno));
- return;
- }
- template_browser->remove(item);
- template_browser->do_callback();} {}
- }
- Function {template_load()} {return_type void
- } {
- code {int i;
- char name[1024], filename[1024], path[1024], *ptr;
- struct dirent **files;
- int num_files;
- fluid_prefs.getUserdataPath(path, sizeof(path));
- strlcat(path, "templates", sizeof(path));
- num_files = fl_filename_list(path, &files);
- for (i = 0; i < num_files; i ++) {
- if (fl_filename_match(files[i]->d_name, "*.fl")) {
- // Format the name as the filename with "_" replaced with " "
- // and without the trailing ".fl"...
- strlcpy(name, files[i]->d_name, sizeof(name));
- *strstr(name, ".fl") = '\\0';
- for (ptr = name; *ptr; ptr ++) {
- if (*ptr == '_') *ptr = ' ';
- }
- // Add the template to the browser...
- snprintf(filename, sizeof(filename), "%s/%s", path, files[i]->d_name);
- template_browser->add(name, strdup(filename));
- }
- free(files[i]);
- }
- if (num_files > 0) free(files);} {}
- }
- comment {
- //
- // End of "$Id: template_panel.fl 8864 2011-07-19 04:49:30Z greg.ercolano $".
- //} {in_source in_header
- }
|