summaryrefslogtreecommitdiff
path: root/fluid/panels/settings_panel.fl
diff options
context:
space:
mode:
authorMatthias Melcher <github@matthiasm.com>2025-03-07 16:34:35 +0100
committerMatthias Melcher <github@matthiasm.com>2025-03-07 16:34:48 +0100
commit1985aefc0e502048f92b91beef87c0dfbe669fed (patch)
treeaf62874def4590e437a47784b4428d975ceb262f /fluid/panels/settings_panel.fl
parent42a04c064d4b31c3a85210311f3ada163c406a25 (diff)
Restructuring Fluid source files.
Diffstat (limited to 'fluid/panels/settings_panel.fl')
-rw-r--r--fluid/panels/settings_panel.fl1883
1 files changed, 1883 insertions, 0 deletions
diff --git a/fluid/panels/settings_panel.fl b/fluid/panels/settings_panel.fl
new file mode 100644
index 000000000..a53e96b4b
--- /dev/null
+++ b/fluid/panels/settings_panel.fl
@@ -0,0 +1,1883 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0500
+header_name {.h}
+code_name {.cxx}
+snap {
+ ver 1
+ current_suite {FLUID (based on FLTK)}
+ current_preset 0
+ suite {
+ name {FLUID (based on FLTK)}
+ preset { 1
+ 15 15 15 15 0 0
+ 10 10 10 10 0 0
+ 25 25
+ 20 10 4 20 4 8
+ 0 14 0 14
+ }
+ preset { 1
+ 10 10 10 10 0 0
+ 10 10 10 10 0 0
+ 20 20
+ 20 10 5 20 5 5
+ 0 11 0 11
+ }
+ preset { 1
+ 10 10 10 10 0 0
+ 10 10 10 10 0 0
+ 18 18
+ 16 8 2 16 4 2
+ 0 10 0 10
+ }
+ }
+}
+comment {//
+// Setting and shell dialogs for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2023 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:
+//
+// https://www.fltk.org/COPYING.php
+//
+// Please see the following page on how to report bugs and issues:
+//
+// https://www.fltk.org/bugs.php
+//
+} {in_source in_header
+}
+
+decl {\#include "app/fluid.h"} {public global
+}
+
+decl {\#include "app/undo.h"} {private global
+}
+
+decl {\#include "app/Fd_Snap_Action.h"} {public global
+}
+
+decl {\#include "app/shell_command.h"} {public global
+}
+
+decl {\#include "tools/fluid_filename.h"} {public local
+}
+
+decl {\#include "widgets/widget_browser.h"} {public global
+}
+
+decl {\#include <FL/Fl_Text_Buffer.H>} {public local
+}
+
+decl {\#include <FL/Fl_Text_Display.H>} {public local
+}
+
+decl {\#include <FL/fl_string_functions.h>} {public local
+}
+
+decl {\#include <FL/Fl_Scheme_Choice.H>} {public local
+}
+
+decl {\#include <FL/Fl_Preferences.H>} {private global
+}
+
+decl {\#include <FL/Fl_Tooltip.H>} {private global
+}
+
+decl {\#include <FL/fl_ask.H>} {private global
+}
+
+decl {\#include "../src/flstring.h"} {selected private global
+}
+
+decl {\#include <string.h>} {private global
+}
+
+decl {void init_scheme(void);} {
+ comment {// initialize the scheme from preferences} public global
+}
+
+decl {extern struct Fl_Menu_Item *dbmanager_item;} {public local
+}
+
+decl {extern void i18n_cb(Fl_Choice *,void *);} {public local
+}
+
+decl {void scheme_cb(Fl_Scheme_Choice *, void *);} {public local
+}
+
+decl {int w_settings_shell_list_selected;} {public local
+}
+
+Function {cb_Comments(Fl_Choice* o, void* v)} {open private return_type void
+} {
+ code {Fl_Font *font = (Fl_Font*)o->user_data();
+if (v == LOAD) {
+ o->value(*font);
+} else {
+ *font = (int)o->value();
+ widget_browser->redraw();
+ widget_browser->save_prefs();
+}} {}
+}
+
+Function {cb_Color_Chip(Fl_Button* o, void* v)} {open private return_type void
+} {
+ code {Fl_Color *color = (Fl_Color*)o->user_data();
+if (v == LOAD) {
+ o->color(*color);
+ o->redraw();
+} else {
+ Fl_Color d = fl_show_colormap(*color);
+ *color = d;
+ o->color(d);
+ widget_browser->redraw();
+ widget_browser->save_prefs();
+}} {}
+}
+
+Function {cb_Color_Choice(Fl_Menu_Button* o, void* v)} {open private return_type void
+} {
+ code {if (v != LOAD) {
+ Fl_Color *color = (Fl_Color*)o->user_data();
+ Fl_Color d = (Fl_Color)(o->mvalue()->argument());
+ *color = d;
+ o->parent()->do_callback(o->parent(), LOAD);
+ widget_browser->redraw();
+ widget_browser->save_prefs();
+}} {}
+}
+
+Function {make_script_panel()} {open
+} {
+ Fl_Window script_panel {
+ label {Shell Script Editor}
+ callback {if (Fl::event()==FL_SHORTCUT && Fl::event_key()==FL_Escape)
+ return; // ignore Escape
+script_panel->hide(); // otherwise hide..} open
+ xywh {764 319 540 180} type Double labelsize 11 resizable
+ code0 {o->size_range(200, 150);} modal visible
+ } {
+ Fl_Text_Editor script_input {
+ xywh {10 10 520 130} box DOWN_BOX labelsize 11 when 13 textfont 4 textsize 11 resizable
+ code0 {script_input->buffer(new Fl_Text_Buffer);}
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {10 150 520 20} labelsize 11
+ } {
+ Fl_Return_Button script_panel_ok {
+ label OK
+ xywh {400 150 60 20} labelsize 11 hotspot
+ }
+ Fl_Button script_panel_cancel {
+ label Cancel
+ xywh {470 150 60 20} labelsize 11
+ }
+ Fl_Box {} {
+ xywh {10 150 380 20} labelsize 11 resizable
+ }
+ }
+ }
+ code {// Enable line numbers
+script_input->linenumber_width(60);
+script_input->linenumber_size(script_input->Fl_Text_Display::textsize());} {}
+}
+
+Function {make_settings_window()} {open
+} {
+ Fl_Window settings_window {
+ label {FLUID Settings} open
+ xywh {392 362 340 580} type Double align 80 resizable size_range {340 580 0 0} visible
+ } {
+ Fl_Tabs w_settings_tabs {
+ callback {propagate_load(o, v);} open
+ xywh {10 10 320 530} selection_color 12 labelsize 11 labelcolor 255 resizable
+ } {
+ Fl_Group w_settings_general_tab {
+ label General open
+ scale_image {36 24} image {../icons/general_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 resizable
+ } {
+ Fl_Group {} {
+ callback {propagate_load(o, v);} open
+ xywh {120 78 130 25}
+ } {
+ Fl_Choice scheme_choice {
+ label {Scheme: }
+ callback scheme_cb open
+ xywh {120 78 120 25} down_box BORDER_BOX labelfont 1 labelsize 11
+ code0 {init_scheme();}
+ class Fl_Scheme_Choice
+ } {}
+ Fl_Box {} {
+ xywh {240 78 10 25} hide resizable
+ }
+ }
+ Fl_Box {} {
+ label {Options: }
+ xywh {120 115 0 20} labelfont 1 labelsize 11 align 4
+ }
+ Fl_Check_Button tooltips_button {
+ label {Show Tooltips}
+ callback {Fl_Tooltip::enable(tooltips_button->value());
+fluid_prefs.set("show_tooltips", tooltips_button->value());}
+ xywh {120 115 200 20} down_box DOWN_BOX labelsize 11
+ code0 {int b;}
+ code1 {fluid_prefs.get("show_tooltips", b, 1);}
+ code2 {tooltips_button->value(b);}
+ code3 {Fl_Tooltip::enable(b);}
+ }
+ Fl_Check_Button completion_button {
+ label {Show Completion Dialogs}
+ callback {fluid_prefs.set("show_completion_dialogs", completion_button->value());}
+ xywh {120 135 200 20} down_box DOWN_BOX labelsize 11
+ code0 {int b;}
+ code1 {fluid_prefs.get("show_completion_dialogs", b, 1);}
+ code2 {completion_button->value(b);}
+ }
+ Fl_Check_Button openlast_button {
+ label {Open Previous File on Startup}
+ callback {fluid_prefs.set("open_previous_file", openlast_button->value());}
+ xywh {120 155 200 20} down_box DOWN_BOX labelsize 11
+ code0 {int b;}
+ code1 {fluid_prefs.get("open_previous_file", b, 0);}
+ code2 {openlast_button->value(b);}
+ }
+ Fl_Check_Button prevpos_button {
+ label {Remember Window Positions}
+ callback {fluid_prefs.set("prev_window_pos", prevpos_button->value());}
+ xywh {120 175 200 20} down_box DOWN_BOX labelsize 11
+ code0 {int b;}
+ code1 {fluid_prefs.get("prev_window_pos", b, 1);}
+ code2 {prevpos_button->value(b);}
+ }
+ Fl_Check_Button show_comments_button {
+ label {Show Comments in Browser}
+ callback {show_comments = show_comments_button->value();
+fluid_prefs.set("show_comments", show_comments);
+redraw_browser();}
+ xywh {120 195 200 20} down_box DOWN_BOX labelsize 11
+ code1 {fluid_prefs.get("show_comments", show_comments, 1);}
+ code2 {show_comments_button->value(show_comments);}
+ }
+ Fl_Group {} {
+ callback {propagate_load(o, v);} open
+ xywh {120 225 50 20}
+ } {
+ Fl_Spinner recent_spinner {
+ label {\# Recent Files:}
+ callback {fluid_prefs.set("recent_files", recent_spinner->value());
+load_history();}
+ xywh {120 225 40 20} labelfont 1 labelsize 11 when 1 maximum 10 textsize 11
+ code0 {int c;}
+ code1 {fluid_prefs.get("recent_files", c, 5);}
+ code2 {recent_spinner->maximum(10);}
+ code3 {recent_spinner->value(c);}
+ }
+ Fl_Box {} {
+ xywh {160 225 10 20} hide resizable
+ }
+ }
+ Fl_Check_Button use_external_editor_button {
+ label {Use for Code Nodes}
+ callback {G_use_external_editor = use_external_editor_button->value();
+fluid_prefs.set("use_external_editor", G_use_external_editor);
+redraw_browser();}
+ xywh {120 275 200 20} down_box DOWN_BOX labelsize 11
+ code1 {fluid_prefs.get("use_external_editor", G_use_external_editor, 0);}
+ code2 {use_external_editor_button->value(G_use_external_editor);}
+ }
+ Fl_Input editor_command_input {
+ label {External Editor:}
+ callback {strncpy(G_external_editor_command, editor_command_input->value(), sizeof(G_external_editor_command)-1);
+G_external_editor_command[sizeof(G_external_editor_command)-1] = 0;
+fluid_prefs.set("external_editor_command", G_external_editor_command);
+redraw_browser();}
+ tooltip {The editor command to open your external text editor.
+Include any necessary flags to ensure your editor does not background itself.
+Examples:
+ gvim -f
+ gedit
+ emacs} xywh {120 255 200 20} labelfont 1 labelsize 11 when 1 textfont 4 textsize 11
+ code1 {fluid_prefs.get("external_editor_command", G_external_editor_command, "", sizeof(G_external_editor_command)-1);}
+ code2 {editor_command_input->value(G_external_editor_command);}
+ }
+ Fl_Box {} {
+ label {Overlays: }
+ xywh {120 300 0 20} labelfont 1 labelsize 11 align 4
+ }
+ Fl_Check_Button guides_button {
+ label {Show Positioning Guides}
+ callback toggle_guides_cb
+ tooltip {show guides that help to position and resize widgets and enable snapping} xywh {120 300 200 20} down_box DOWN_BOX labelsize 11
+ code0 {o->value(show_guides);}
+ }
+ Fl_Check_Button restricted_button {
+ label {Show Restricted Areas}
+ callback toggle_restricted_cb
+ tooltip {show overlapping and out of bounds areas, show unfilled areas in Fl_Pack groups} xywh {120 320 200 20} down_box DOWN_BOX labelsize 11
+ code0 {o->value(show_restricted);}
+ }
+ Fl_Check_Button ghosted_outline_button {
+ label {Show Ghosted Group Outlines}
+ callback toggle_ghosted_outline_cb
+ tooltip {groups with no box type or flat boxtypes without contrast will be rendered with a dim outline in the editing window only} xywh {120 340 200 20} down_box DOWN_BOX labelsize 11
+ code0 {o->value(show_ghosted_outline);}
+ }
+ Fl_Box {} {
+ xywh {120 530 200 10} hide resizable
+ }
+ }
+ Fl_Group w_settings_project_tab {
+ label Project
+ callback {propagate_load(o, v);} open
+ scale_image {36 24} image {../icons/document_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 hide
+ } {
+ Fl_Group {} {open
+ xywh {100 78 220 30}
+ } {
+ Fl_Box {} {
+ label {Use "name.ext" to set a file name
+or just ".ext" to set extension.}
+ xywh {100 78 210 30} labelsize 11 align 148
+ }
+ Fl_Box {} {
+ xywh {310 78 10 30} hide resizable
+ }
+ }
+ Fl_Input header_file_input {
+ label {Header File:}
+ user_data 1 user_data_type {void*}
+ callback {if (v == LOAD) {
+ o->value(g_project.header_file_name.c_str());
+} else {
+ if (strcmp(g_project.header_file_name.c_str(), o->value())) {
+ g_project.header_file_name = o->value();
+ set_modflag(1);
+ }
+}}
+ tooltip {The name of the generated header file.} xywh {100 112 220 20} box THIN_DOWN_BOX labelfont 1 labelsize 11 when 1 textfont 4 textsize 11
+ }
+ Fl_Input code_file_input {
+ label {Code File:}
+ user_data 1 user_data_type {void*}
+ callback {if (v == LOAD) {
+ o->value(g_project.code_file_name.c_str());
+} else {
+ if (strcmp(g_project.code_file_name.c_str(), o->value())) {
+ g_project.code_file_name = o->value();
+ set_modflag(1);
+ }
+}}
+ tooltip {The name of the generated code file.} xywh {100 137 220 20} box THIN_DOWN_BOX labelfont 1 labelsize 11 when 1 textfont 4 textsize 11
+ }
+ Fl_Check_Button include_H_from_C_button {
+ label {Include Header from Code}
+ callback {if (v == LOAD) {
+ o->value(g_project.include_H_from_C);
+} else {
+ if (g_project.include_H_from_C != o->value()) {
+ set_modflag(1);
+ g_project.include_H_from_C = o->value();
+ }
+}}
+ tooltip {Include the header file from the code file.} xywh {100 162 220 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Box {} {
+ label {Options: }
+ xywh {100 205 0 20} labelfont 1 labelsize 11 align 4
+ }
+ Fl_Check_Button use_FL_COMMAND_button {
+ label {Menu shortcuts use FL_COMMAND}
+ callback {if (v == LOAD) {
+ o->value(g_project.use_FL_COMMAND);
+} else {
+ if (g_project.use_FL_COMMAND != o->value()) {
+ set_modflag(1);
+ g_project.use_FL_COMMAND = o->value();
+ }
+}}
+ tooltip {Replace FL_CTRL and FL_META with FL_COMMAND when generating menu shortcuts} xywh {100 205 220 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Check_Button utf8_in_src_button {
+ label {allow Unicode UTF-8 in source code}
+ callback {if (v == LOAD) {
+ o->value(g_project.utf8_in_src);
+} else {
+ if (g_project.utf8_in_src != o->value()) {
+ set_modflag(1);
+ g_project.utf8_in_src = o->value();
+ }
+}}
+ tooltip {For older compilers, characters outside of the printable ASCII range are escaped using octal notation `\\0123`. If this option is checked, Fluid will write UTF-8 characters unchanged.} xywh {100 230 220 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Check_Button avoid_early_includes_button {
+ label {avoid early include of Fl.H}
+ callback {if (v == LOAD) {
+ o->value(g_project.avoid_early_includes);
+} else {
+ if (g_project.avoid_early_includes != o->value()) {
+ set_modflag(1);
+ g_project.avoid_early_includes = o->value();
+ }
+}}
+ tooltip {Do not emit \#include <FL//Fl.H> until it is needed by another include file.} xywh {100 255 220 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Box {} {
+ label {Experimental: }
+ xywh {100 283 0 20} labelfont 1 labelsize 11 align 4 hide
+ }
+ Fl_Check_Button w_proj_mergeback {
+ label {generate MergeBack data}
+ callback {if (v == LOAD) {
+ o->value(g_project.write_mergeback_data);
+} else {
+ if (g_project.write_mergeback_data != o->value()) {
+ set_modflag(1);
+ g_project.write_mergeback_data = o->value();
+ }
+}}
+ comment {// Matt: disabled}
+ tooltip {MergeBack is a feature under construction that allows changes in code files to be merged back into the project file. Checking this option will generate additional data in code and project files.} xywh {100 283 220 20} down_box DOWN_BOX labelsize 11 hide
+ }
+ Fl_Box {} {
+ xywh {100 530 220 10} hide resizable
+ }
+ }
+ Fl_Group w_settings_layout_tab {
+ label Layout
+ callback {propagate_load(o, v);} open
+ scale_image {36 24} image {../icons/layout_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 hide
+ } {
+ Fl_Box {} {
+ label {Layout:}
+ xywh {25 78 60 24} labelfont 1 labelsize 11 align 24
+ }
+ Fl_Choice layout_choice {
+ callback {if (v == LOAD) {
+ o->value(g_layout_list.current_suite());
+ } else {
+ int index = o->value();
+ g_layout_list.current_suite(index);
+ g_layout_list.update_dialogs();
+ }}
+ xywh {85 78 187 24} down_box BORDER_BOX
+ } {
+ MenuItem {} {
+ label FLTK
+ xywh {0 0 31 20}
+ }
+ MenuItem {} {
+ label Grid
+ xywh {0 0 31 20}
+ }
+ }
+ Fl_Button {} {
+ label {+}
+ callback {// Clone the current layout suite
+
+if (v == LOAD) return;
+
+std::string old_name = "Copy of ";
+old_name.append(g_layout_list[g_layout_list.current_suite()].name_);
+const char *new_name = fl_input("Enter a name for the new layout:", old_name.c_str());
+if (new_name == NULL)
+ return;
+
+g_layout_list.add(new_name);
+g_layout_list.update_dialogs();}
+ xywh {272 78 24 24}
+ }
+ Fl_Menu_Button w_layout_menu {
+ callback {if (v == LOAD) {
+ Fd_Layout_Suite &suite = g_layout_list[g_layout_list.current_suite()];
+ if (suite.storage_ == FD_STORE_INTERNAL) {
+ w_layout_menu_rename->deactivate();
+ for (int i=1; i<4; i++) w_layout_menu_storage[i]->deactivate();
+ w_layout_menu_delete->deactivate();
+ } else {
+ w_layout_menu_rename->activate();
+ for (int i=1; i<4; i++) w_layout_menu_storage[i]->activate();
+ w_layout_menu_delete->activate();
+ }
+ w_layout_menu_storage[suite.storage_]->setonly();
+}} open
+ xywh {296 78 24 24}
+ } {
+ MenuItem w_layout_menu_rename {
+ label {Rename...}
+ callback {// Rename the current layout suite
+
+std::string old_name = g_layout_list[g_layout_list.current_suite()].name_;
+const char *new_name = fl_input("Enter a new name for the layout:", old_name.c_str());
+if (new_name == NULL)
+ return;
+
+g_layout_list.rename(new_name);
+g_layout_list.update_dialogs();}
+ xywh {0 0 31 20} divider
+ }
+ MenuItem {w_layout_menu_storage[0]} {
+ label {@fd_beaker FLUID Built-In}
+ callback {Fd_Layout_Suite &suite = g_layout_list[g_layout_list.current_suite()];
+suite.storage(FD_STORE_INTERNAL);
+g_layout_list.update_dialogs();}
+ xywh {0 0 31 20} type Radio deactivate
+ }
+ MenuItem {w_layout_menu_storage[1]} {
+ label {@fd_user User Preference}
+ callback {Fd_Layout_Suite &suite = g_layout_list[g_layout_list.current_suite()];
+suite.storage(FD_STORE_USER);
+g_layout_list.update_dialogs();}
+ xywh {0 0 31 20} type Radio
+ }
+ MenuItem {w_layout_menu_storage[2]} {
+ label {@fd_project Store in .fl Project File}
+ callback {Fd_Layout_Suite &suite = g_layout_list[g_layout_list.current_suite()];
+suite.storage(FD_STORE_PROJECT);
+g_layout_list.update_dialogs();}
+ xywh {0 0 31 20} type Radio
+ }
+ MenuItem {w_layout_menu_storage[3]} {
+ label {@fd_file Store in External File}
+ callback {Fd_Layout_Suite &suite = g_layout_list[g_layout_list.current_suite()];
+suite.storage(FD_STORE_FILE);
+g_layout_list.update_dialogs();}
+ xywh {0 0 31 20} type Radio divider
+ }
+ MenuItem w_layout_menu_load {
+ label {Load...}
+ callback {// Give the user a file chooser and load that file
+Fl_Native_File_Chooser fnfc;
+fnfc.title("Load Layout Settings:");
+fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE);
+fnfc.options(Fl_Native_File_Chooser::USE_FILTER_EXT);
+fnfc.filter("FLUID Layouts\\t*.fll\\n");
+if (fnfc.show() != 0) return;
+const char *new_filename = fnfc.filename();
+if (!new_filename) return;
+g_layout_list.load(new_filename);
+//g_layout_list.current_suite(n);
+g_layout_list.update_dialogs();}
+ xywh {0 0 31 20}
+ }
+ MenuItem w_layout_menu_save {
+ label {Save...}
+ callback {// Give the user a file chooser with a suggested name
+ Fl_Native_File_Chooser fnfc;
+ fnfc.title("Save Layout Settings:");
+ fnfc.type(Fl_Native_File_Chooser::BROWSE_SAVE_FILE);
+ fnfc.options(Fl_Native_File_Chooser::SAVEAS_CONFIRM | Fl_Native_File_Chooser::USE_FILTER_EXT);
+ fnfc.filter("FLUID Layouts\\t*.fll\\n");
+ std::string filename = g_layout_list.filename_;
+ fnfc.directory(fl_filename_path(filename).c_str());
+ fnfc.preset_file(fl_filename_name(filename).c_str());
+ if (fnfc.show() != 0) return;
+ const char *new_filename = fnfc.filename();
+ if (!new_filename) return;
+ g_layout_list.filename_ = new_filename;
+ g_layout_list.save(new_filename);}
+ xywh {0 0 31 20} divider
+ code0 {\#include <FL/Fl_Native_File_Chooser.H>}
+ }
+ MenuItem w_layout_menu_delete {
+ label Delete
+ callback {// remove the current suite
+
+g_layout_list.remove(g_layout_list.current_suite());
+g_layout_list.update_dialogs();}
+ xywh {0 0 31 20}
+ }
+ }
+ Fl_Box {} {
+ label {Preset:}
+ xywh {25 107 60 20} labelfont 1 labelsize 11 align 24
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {85 107 235 20} labelsize 11
+ } {
+ Fl_Button {preset_choice[0]} {
+ label Application
+ user_data 0 user_data_type long
+ callback edit_layout_preset_cb
+ xywh {85 107 78 20} type Radio value 1 selection_color 45 labelsize 11 compact 1
+ }
+ Fl_Button {preset_choice[1]} {
+ label Dialog
+ user_data 1 user_data_type long
+ callback edit_layout_preset_cb
+ xywh {163 107 79 20} type Radio selection_color 45 labelsize 11 compact 1
+ }
+ Fl_Button {preset_choice[2]} {
+ label Toolbox
+ user_data 2 user_data_type long
+ callback edit_layout_preset_cb
+ xywh {242 107 78 20} type Radio selection_color 45 labelsize 11 compact 1
+ }
+ }
+ Fl_Box {} {
+ label {---- Window ----}
+ xywh {85 132 235 20} labelfont 1 labelsize 11 align 20
+ }
+ Fl_Box {} {
+ label {Margins:}
+ xywh {25 167 60 20} labelsize 11 align 24
+ }
+ Fl_Value_Input {} {
+ label {Left:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->left_window_margin);
+} else {
+ layout->left_window_margin = (int)o->value();
+}}
+ xywh {85 167 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Top:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->top_window_margin);
+} else {
+ layout->top_window_margin = (int)o->value();
+}}
+ xywh {145 167 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Right:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->right_window_margin);
+} else {
+ layout->right_window_margin = (int)o->value();
+}}
+ xywh {205 167 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Bottom:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->bottom_window_margin);
+} else {
+ layout->bottom_window_margin = (int)o->value();
+}}
+ xywh {265 167 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Box {} {
+ label {Grid:}
+ xywh {32 201 53 20} labelsize 11 align 24
+ }
+ Fl_Value_Input {} {
+ label {Horizontal:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->window_grid_x);
+} else {
+ layout->window_grid_x = (int)o->value();
+}}
+ xywh {85 201 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Vertical:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->window_grid_y);
+} else {
+ layout->window_grid_y = (int)o->value();
+}}
+ xywh {145 201 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Box {} {
+ label {---- Group ----}
+ xywh {85 226 235 20} labelfont 1 labelsize 11 align 20
+ }
+ Fl_Box {} {
+ label {Margins:}
+ xywh {25 261 60 20} labelsize 11 align 24
+ }
+ Fl_Value_Input {} {
+ label {Left:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->left_group_margin);
+} else {
+ layout->left_group_margin = (int)o->value();
+}}
+ xywh {85 261 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Top:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->top_group_margin);
+} else {
+ layout->top_group_margin = (int)o->value();
+}}
+ xywh {145 261 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Right:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->right_group_margin);
+} else {
+ layout->right_group_margin = (int)o->value();
+}}
+ xywh {205 261 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Bottom:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->bottom_group_margin);
+} else {
+ layout->bottom_group_margin = (int)o->value();
+}}
+ xywh {265 261 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Box {} {
+ label {Grid:}
+ xywh {32 295 53 20} labelsize 11 align 24
+ }
+ Fl_Value_Input {} {
+ label {Horizontal:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->group_grid_x);
+} else {
+ layout->group_grid_x = (int)o->value();
+}}
+ xywh {85 295 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Vertical:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->group_grid_y);
+} else {
+ layout->group_grid_y = (int)o->value();
+}}
+ xywh {145 295 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Box {} {
+ label {---- Tabs ----}
+ xywh {85 320 235 20} labelfont 1 labelsize 11 align 20
+ }
+ Fl_Box {} {
+ label {Margins:}
+ xywh {25 355 60 20} labelsize 11 align 24
+ }
+ Fl_Value_Input {} {
+ label {Top:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->top_tabs_margin);
+} else {
+ layout->top_tabs_margin = (int)o->value();
+}}
+ xywh {85 355 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Bottom:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->bottom_tabs_margin);
+} else {
+ layout->bottom_tabs_margin = (int)o->value();
+}}
+ xywh {145 355 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Box {} {
+ label {---- Widget ----}
+ xywh {85 380 235 20} labelfont 1 labelsize 11 align 20
+ }
+ Fl_Box {} {
+ label {Horizontal:}
+ xywh {25 415 60 20} labelsize 11 align 24
+ }
+ Fl_Value_Input {} {
+ label {Minimum:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->widget_min_w);
+} else {
+ layout->widget_min_w = (int)o->value();
+}}
+ xywh {85 414 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Increment:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->widget_inc_w);
+} else {
+ layout->widget_inc_w = (int)o->value();
+}}
+ xywh {145 414 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Gap:}
+ callback {if (v == LOAD) {
+ o->value((double)layout->widget_gap_x);
+} else {
+ layout->widget_gap_x = (int)o->value();
+}}
+ xywh {205 414 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Box {} {
+ label {Vertical:}
+ xywh {32 440 53 20} labelsize 11 align 24
+ }
+ Fl_Value_Input {} {
+ callback {if (v == LOAD) {
+ o->value((double)layout->widget_min_h);
+} else {
+ layout->widget_min_h = (int)o->value();
+}}
+ xywh {85 440 55 20} labelsize 11 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ callback {if (v == LOAD) {
+ o->value((double)layout->widget_inc_h);
+} else {
+ layout->widget_inc_h = (int)o->value();
+}}
+ xywh {145 440 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ callback {if (v == LOAD) {
+ o->value((double)layout->widget_gap_y);
+} else {
+ layout->widget_gap_y = (int)o->value();
+}}
+ xywh {205 440 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 11
+ }
+ Fl_Group {} {
+ label {Label Font:}
+ callback propagate_load open
+ xywh {85 465 201 20} labelsize 11 align 4
+ } {
+ Fl_Choice {} {
+ callback {if (v == LOAD) {
+ o->value(layout->labelfont+1);
+} else {
+ layout->labelfont = (int)o->value()-1;
+}} open
+ tooltip {The style of the label text.} xywh {85 465 150 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item fontmenu_w_default[];}
+ code1 {o->menu(fontmenu_w_default);}
+ } {}
+ Fl_Value_Input {} {
+ callback {if (v == LOAD) {
+ o->value(layout->labelsize);
+} else {
+ layout->labelsize = (int)o->value();
+}}
+ tooltip {The size of the label text.} xywh {235 465 50 20} labelsize 11 minimum 1 maximum 1000 step 1 value 14 textsize 11
+ }
+ }
+ Fl_Group {} {
+ label {Text Font:}
+ callback propagate_load open
+ xywh {85 490 200 20} labelsize 11 align 4
+ } {
+ Fl_Choice {} {
+ callback {if (v == LOAD) {
+ o->value(layout->textfont+1);
+} else {
+ layout->textfont = (int)o->value()-1;
+}} open
+ tooltip {The value text style.} xywh {85 490 150 20} box DOWN_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11
+ code0 {extern Fl_Menu_Item fontmenu_w_default[];}
+ code1 {o->menu(fontmenu_w_default);}
+ } {}
+ Fl_Value_Input {} {
+ callback {if (v == LOAD) {
+ o->value(layout->textsize);
+} else {
+ layout->textsize = (int)o->value();
+}}
+ tooltip {The value text size.} xywh {235 490 50 20} labelsize 11 maximum 1000 step 1 value 14 textsize 11
+ }
+ }
+ Fl_Box {} {
+ xywh {325 535 5 5} hide resizable
+ }
+ }
+ Fl_Group w_settings_shell_tab {
+ label Shell
+ callback propagate_load open
+ scale_image {36 24} image {../icons/shell_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 hide
+ } {
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {10 90 320 132}
+ } {
+ Fl_Browser w_settings_shell_list {
+ label {Shell
+command
+list:}
+ callback {if (v == LOAD) {
+ // load from g_shell_config
+ if (g_shell_config) {
+ o->clear();
+ w_settings_shell_list_selected = 0;
+ for (int i=0; i<g_shell_config->list_size; i++) {
+ Fd_Shell_Command *cmd = g_shell_config->list[i];
+ o->add(cmd->name.c_str());
+ if (cmd->storage == FD_STORE_USER)
+ o->icon(i+1, w_settings_shell_fd_user->image());
+ else if (cmd->storage == FD_STORE_PROJECT)
+ o->icon(i+1, w_settings_shell_fd_project->image());
+ }
+ }
+} else {
+// int prev_selected = w_settings_shell_list_selected;
+ w_settings_shell_list_selected = 0;
+ int selected = w_settings_shell_list->value();
+ if (selected) {
+ if (w_settings_shell_list->selected(selected))
+ w_settings_shell_list_selected = selected;
+ }
+ w_settings_shell_cmd->do_callback(w_settings_shell_cmd, LOAD);
+ w_settings_shell_toolbox->do_callback(w_settings_shell_toolbox, LOAD);
+}}
+ xywh {100 90 220 110} type Multi labelfont 1 labelsize 11 align 4 textsize 13 resizable
+ }
+ Fl_Group w_settings_shell_toolbox {
+ callback {if (v==LOAD) {
+ propagate_load(o, v);
+}} open
+ xywh {100 200 220 22}
+ } {
+ Fl_Button {} {
+ label {+}
+ callback {if (v != LOAD) {
+ int selected = w_settings_shell_list_selected;
+ Fd_Shell_Command *cmd = new Fd_Shell_Command("new shell command");
+ g_shell_config->insert(selected, cmd);
+ w_settings_shell_list->insert(selected+1, cmd->name.c_str());
+ w_settings_shell_list->deselect();
+ w_settings_shell_list->value(selected+1);
+ if (cmd->storage == FD_STORE_USER) {
+ w_settings_shell_list->icon(selected+1, w_settings_shell_fd_user->image());
+ } else if (cmd->storage == FD_STORE_PROJECT) {
+ w_settings_shell_list->icon(selected+1, w_settings_shell_fd_project->image());
+ set_modflag(1);
+ }
+ w_settings_shell_list->do_callback();
+ w_settings_shell_cmd->do_callback(w_settings_shell_cmd, LOAD);
+ w_settings_shell_toolbox->do_callback(w_settings_shell_toolbox, LOAD);
+ g_shell_config->rebuild_shell_menu();
+}}
+ tooltip {insert a new shell command into the list after the selected command} xywh {100 200 24 22} labelfont 1 labelsize 11
+ }
+ Fl_Button w_settings_shell_dup {
+ label {++}
+ callback {int selected = w_settings_shell_list_selected;
+if (v==LOAD) {
+ if (selected) {
+ o->activate();
+ } else {
+ o->deactivate();
+ }
+} else {
+ if (!selected) return;
+ Fd_Shell_Command *cmd = new Fd_Shell_Command(g_shell_config->list[selected-1]);
+ g_shell_config->insert(selected, cmd);
+ w_settings_shell_list->insert(selected+1, cmd->name.c_str());
+ w_settings_shell_list->deselect();
+ w_settings_shell_list->value(selected+1);
+ if (cmd->storage == FD_STORE_USER) {
+ w_settings_shell_list->icon(selected+1, w_settings_shell_fd_user->image());
+ } else if (cmd->storage == FD_STORE_PROJECT) {
+ w_settings_shell_list->icon(selected+1, w_settings_shell_fd_project->image());
+ set_modflag(1);
+ }
+ w_settings_shell_list->do_callback();
+ w_settings_shell_cmd->do_callback(w_settings_shell_cmd, LOAD);
+ w_settings_shell_toolbox->do_callback(w_settings_shell_toolbox, LOAD);
+ g_shell_config->rebuild_shell_menu();
+}}
+ tooltip {duplicate the selected shell command and insert it into the list} xywh {124 200 24 22} labelfont 1 labelsize 11 deactivate
+ }
+ Fl_Button w_settings_shell_remove {
+ label DEL
+ callback {int selected = w_settings_shell_list_selected;
+if (v==LOAD) {
+ if (selected) {
+ o->activate();
+ } else {
+ o->deactivate();
+ }
+} else {
+ if (!selected) return;
+ int ret = fl_choice("Delete the shell command\\n\\"%s\\"?\\n\\nThis can not be undone.",
+ "Delete", "Cancel", NULL, g_shell_config->list[selected-1]->name.c_str());
+ if (ret==1) return;
+ if (g_shell_config->at(selected-1)->storage == FD_STORE_PROJECT) set_modflag(1);
+ g_shell_config->remove(selected-1);
+ w_settings_shell_list->remove(selected);
+ if (selected <= w_settings_shell_list->size())
+ w_settings_shell_list->value(selected);
+ else
+ w_settings_shell_list->value(0);
+ w_settings_shell_list->do_callback();
+ w_settings_shell_cmd->do_callback(w_settings_shell_cmd, LOAD);
+ w_settings_shell_toolbox->do_callback(w_settings_shell_toolbox, LOAD);
+ g_shell_config->rebuild_shell_menu();
+}}
+ tooltip {remove the selected shell command - this can not be undone} xywh {148 200 24 22} labelsize 10 deactivate
+ }
+ Fl_Menu_Button w_settings_shell_menu {open
+ xywh {172 200 24 22} labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label {Import...}
+ callback {if (v != LOAD)
+ Fd_Shell_Command_List::import_from_file();}
+ tooltip {import shell commands from an external file} xywh {90 90 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {Export selected...}
+ callback {if (v != LOAD)
+ Fd_Shell_Command_List::export_selected();}
+ tooltip {export selected shell commands to an external file} xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {Example Scripts:}
+ xywh {20 20 100 20} labelfont 1 labelsize 10 hide deactivate
+ }
+ MenuItem {} {
+ label {Compile with fltk-config}
+ xywh {30 30 100 20} labelsize 11 hide
+ }
+ MenuItem {} {
+ label {Build and run}
+ xywh {40 40 100 20} labelsize 11 hide
+ }
+ MenuItem {} {
+ label {Build with Xcode on macOS}
+ xywh {50 50 100 20} labelsize 11 hide
+ }
+ MenuItem {} {
+ label {Build with CMake}
+ xywh {60 60 100 20} labelsize 11 hide
+ }
+ }
+ Fl_Box {} {
+ xywh {253 200 13 22} hide resizable
+ }
+ Fl_Button {} {
+ label T
+ callback {if (v!=LOAD) show_terminal_window();}
+ tooltip {show terminal window} xywh {246 200 24 22} labelfont 5 labelsize 11
+ }
+ Fl_Button w_settings_shell_play {
+ label Run
+ callback {int selected = w_settings_shell_list_selected;
+if (v==LOAD) {
+ if (selected) {
+ o->activate();
+ } else {
+ o->deactivate();
+ }
+} else {
+ if (!selected) return;
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ cmd->run();
+}}
+ tooltip {run the selected shell command} xywh {270 200 50 22} labelsize 11 deactivate
+ }
+ }
+ }
+ Fl_Group w_settings_shell_cmd {
+ callback {if (v==LOAD) {
+ int selected = w_settings_shell_list_selected;
+ if (selected) {
+ o->activate();
+ } else {
+ o->deactivate();
+ }
+ propagate_load(o, v);
+}} open
+ xywh {10 235 320 291} resizable
+ } {
+ Fl_Input {} {
+ label {Name:}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ o->value(g_shell_config->list[selected-1]->name.c_str());
+ } else {
+ o->value("");
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ cmd->name = o->value();
+ w_settings_shell_list->text(selected, o->value());
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}}
+ tooltip {file the shell command under this name in the shell command list} xywh {100 246 220 20} labelfont 1 labelsize 11 when 13 textfont 4 textsize 11
+ }
+ Fl_Input {} {
+ label {Menu Label:}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ o->value(g_shell_config->list[selected-1]->label.c_str());
+ } else {
+ o->value("");
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ cmd->label = o->value();
+ cmd->update_shell_menu();
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}}
+ tooltip {label text for the Shell menu in the main menu bar} xywh {100 272 220 20} labelfont 1 labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Group {} {
+ callback {propagate_load(o, v);} open
+ xywh {100 297 140 71}
+ } {
+ Fl_Button {} {
+ label Shortcut
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ o->value(g_shell_config->list[selected-1]->shortcut);
+ //o->default_value(o->value());
+ } else {
+ o->value(0);
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ cmd->shortcut = o->value();
+ cmd->update_shell_menu();
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}}
+ tooltip {an optional keyboard shortcut to run this shell command} xywh {100 297 130 20} labelsize 11 align 16
+ code0 {\#include <FL/Fl_Shortcut_Button.H>}
+ class Fl_Shortcut_Button
+ }
+ Fl_Choice {} {
+ label {Store:}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ Fd_Tool_Store ts = g_shell_config->list[selected-1]->storage;
+ o->value(o->find_item_with_argument((long)ts));
+ } else {
+ o->value(o->find_item_with_argument((long)FD_STORE_USER));
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ Fd_Tool_Store ts = (Fd_Tool_Store)(o->mvalue()->argument());
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ cmd->storage = ts;
+ //w_settings_shell_list->text(selected, cmd->name.c_str());
+ if (cmd->storage == FD_STORE_USER)
+ w_settings_shell_list->icon(selected, w_settings_shell_fd_user->image());
+ else if (cmd->storage == FD_STORE_PROJECT)
+ w_settings_shell_list->icon(selected, w_settings_shell_fd_project->image());
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}} open
+ tooltip {store this shell command as a user setting or save it with the .fl project file} xywh {100 322 130 20} down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label {@fd_user User Setting}
+ user_data FD_STORE_USER user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {@fd_project Project File}
+ user_data FD_STORE_PROJECT user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
+ }
+ Fl_Choice {} {
+ label {Condition:}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ int cond = g_shell_config->list[selected-1]->condition;
+ o->value(o->find_item_with_argument(cond));
+ } else {
+ o->value(o->find_item_with_argument(0));
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ int cond = (int)(o->mvalue()->argument());
+ cmd->condition = cond;
+ g_shell_config->rebuild_shell_menu();
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}} open
+ tooltip {add this command to the main menu bar only if this condition is true} xywh {100 348 130 20} down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label {all platforms}
+ user_data {Fd_Shell_Command::ALWAYS} user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {Windows only}
+ user_data {Fd_Shell_Command::WIN_ONLY} user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {Linux only}
+ user_data {Fd_Shell_Command::UX_ONLY} user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {macOS only}
+ user_data {Fd_Shell_Command::MAC_ONLY} user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {Linux and macOS}
+ user_data {Fd_Shell_Command::MAC_AND_UX_ONLY} user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {don't use}
+ user_data {Fd_Shell_Command::NEVER} user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
+ }
+ Fl_Box {} {
+ xywh {230 297 10 71} hide resizable
+ }
+ }
+ Fl_Input {} {
+ label {Label:}
+ callback {if (v == LOAD) {
+// o->value(g_shell_command.c_str());
+} else {
+// g_shell_command = o->value();
+}}
+ xywh {230 348 90 20} labelfont 1 labelsize 11 textfont 4 textsize 11 hide
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {100 373 220 80} resizable
+ } {
+ Fl_Text_Editor w_settings_shell_command {
+ label {Shell script:}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ o->buffer()->text(g_shell_config->list[selected-1]->command.c_str());
+ } else {
+ o->buffer()->text("");
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ cmd->command = o->buffer()->text();
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}}
+ xywh {100 373 196 80} labelfont 1 labelsize 11 align 4 textfont 4 textsize 12 resizable
+ code0 {o->buffer(new Fl_Text_Buffer);}
+ }
+ Fl_Group {} {open
+ xywh {296 373 24 80}
+ } {
+ Fl_Menu_Button w_settings_shell_text_macros {
+ callback {const Fl_Menu_Item *mi = o->mvalue();
+if (mi) {
+ char buffer[256];
+ fl_strlcpy(buffer, mi->label(), 255);
+ int n = (int)strlen(buffer)-1;
+ if (buffer[n]=='@') buffer[n] = 0;
+ char *word = buffer;
+ if (word[0]=='@') word++;
+ if (w_settings_shell_command->buffer()->selected()) {
+ int start = 0, end = 0;
+ w_settings_shell_command->buffer()->selection_position(&start, &end);
+ w_settings_shell_command->buffer()->replace(start, end, word);
+ } else {
+ int pos = w_settings_shell_command->insert_position();
+ w_settings_shell_command->buffer()->insert(pos, word);
+ }
+ w_settings_shell_command->do_callback(w_settings_shell_command, (void*)NULL);
+}} open
+ tooltip {a list of text replacements available for the shell script} xywh {296 373 24 22} labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label {@@BASENAME@@}
+ xywh {80 80 100 20} labelfont 4 labelsize 11
+ }
+ MenuItem {} {
+ label {@@PROJECTFILE_PATH@@}
+ xywh {0 0 100 20} labelfont 4 labelsize 11
+ }
+ MenuItem {} {
+ label {@@PROJECTFILE_NAME@@}
+ xywh {10 10 100 20} labelfont 4 labelsize 11
+ }
+ MenuItem {} {
+ label {@@CODEFILE_PATH@@}
+ xywh {20 20 100 20} labelfont 4 labelsize 11
+ }
+ MenuItem {} {
+ label {@@CODEFILE_NAME@@}
+ xywh {30 30 100 20} labelfont 4 labelsize 11
+ }
+ MenuItem {} {
+ label {@@HEADERFILE_PATH@@}
+ xywh {40 40 100 20} labelfont 4 labelsize 11
+ }
+ MenuItem {} {
+ label {@@HEADERFILE_NAME@@}
+ xywh {50 50 100 20} labelfont 4 labelsize 11
+ }
+ MenuItem {} {
+ label {@@TEXTFILE_PATH@@}
+ xywh {60 60 100 20} labelfont 4 labelsize 11
+ }
+ MenuItem {} {
+ label {@@TEXTFILE_NAME@@}
+ xywh {70 70 100 20} labelfont 4 labelsize 11
+ }
+ MenuItem {} {
+ label {@@FLTK_CONFIG@@}
+ comment {Not yet implemented}
+ xywh {70 70 100 20} labelfont 4 labelsize 11 hide
+ }
+ MenuItem {} {
+ label {@@TMPDIR@@}
+ xywh {70 70 100 20} labelfont 4 labelsize 11
+ }
+ }
+ Fl_Button {} {
+ label {@+1fd_zoom}
+ callback {if (!script_panel) make_script_panel();
+script_input->buffer()->text(w_settings_shell_command->buffer()->text());
+script_panel->show();
+
+for (;;) {
+ Fl_Widget* w = Fl::readqueue();
+ if (w == script_panel_cancel) goto BREAK2;
+ else if (w == script_panel_ok) break;
+ else if (!w) Fl::wait();
+}
+
+w_settings_shell_command->buffer()->text(script_input->buffer()->text());
+w_settings_shell_command->do_callback();
+BREAK2:
+script_panel->hide();}
+ tooltip {open the big code editor} xywh {296 395 24 22} labelsize 11
+ }
+ Fl_Box {} {
+ xywh {296 417 24 10} hide resizable
+ }
+ }
+ }
+ Fl_Check_Button {} {
+ label {save .fl project file}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ o->value(g_shell_config->list[selected-1]->flags & Fd_Shell_Command::SAVE_PROJECT);
+ } else {
+ o->value(0);
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ int v = o->value();
+ if (v) {
+ cmd->flags |= Fd_Shell_Command::SAVE_PROJECT;
+ } else {
+ cmd->flags &= ~Fd_Shell_Command::SAVE_PROJECT;
+ }
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}}
+ tooltip {save the project to the .fl file before running the command} xywh {100 458 110 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Check_Button {} {
+ label {save source code}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ o->value(g_shell_config->list[selected-1]->flags & Fd_Shell_Command::SAVE_SOURCECODE);
+ } else {
+ o->value(0);
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ int v = o->value();
+ if (v) {
+ cmd->flags |= Fd_Shell_Command::SAVE_SOURCECODE;
+ } else {
+ cmd->flags &= ~Fd_Shell_Command::SAVE_SOURCECODE;
+ }
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}}
+ tooltip {generate the source code and header file before running the command} xywh {100 478 110 19} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Check_Button {} {
+ label {save i18n strings}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ o->value(g_shell_config->list[selected-1]->flags & Fd_Shell_Command::SAVE_STRINGS);
+ } else {
+ o->value(0);
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ int v = o->value();
+ if (v) {
+ cmd->flags |= Fd_Shell_Command::SAVE_STRINGS;
+ } else {
+ cmd->flags &= ~Fd_Shell_Command::SAVE_STRINGS;
+ }
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}}
+ tooltip {save the internationalisation strings before running the command} xywh {100 498 110 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Check_Button {} {
+ label {show terminal}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ o->value(!(g_shell_config->list[selected-1]->flags & Fd_Shell_Command::DONT_SHOW_TERMINAL));
+ } else {
+ o->value(0);
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ int v = o->value();
+ if (!v) {
+ cmd->flags |= Fd_Shell_Command::DONT_SHOW_TERMINAL;
+ } else {
+ cmd->flags &= ~Fd_Shell_Command::DONT_SHOW_TERMINAL;
+ }
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}}
+ tooltip {show the terminal window when launching this script} xywh {214 458 106 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Check_Button {} {
+ label {clear terminal}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ o->value(g_shell_config->list[selected-1]->flags & Fd_Shell_Command::CLEAR_TERMINAL);
+ } else {
+ o->value(0);
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ int v = o->value();
+ if (v) {
+ cmd->flags |= Fd_Shell_Command::CLEAR_TERMINAL;
+ } else {
+ cmd->flags &= ~Fd_Shell_Command::CLEAR_TERMINAL;
+ }
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}}
+ tooltip {clear the teminal window before running this script} xywh {214 478 106 19} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Check_Button {} {
+ label {clear term history}
+ callback {int selected = w_settings_shell_list_selected;
+if (v == LOAD) {
+ if (selected) {
+ o->value(g_shell_config->list[selected-1]->flags & Fd_Shell_Command::CLEAR_HISTORY);
+ } else {
+ o->value(0);
+ }
+} else {
+ if (selected) {
+ Fd_Shell_Command *cmd = g_shell_config->list[selected-1];
+ int v = o->value();
+ if (v) {
+ cmd->flags |= Fd_Shell_Command::CLEAR_HISTORY;
+ } else {
+ cmd->flags &= ~Fd_Shell_Command::CLEAR_HISTORY;
+ }
+ if (cmd->storage == FD_STORE_PROJECT) set_modflag(1);
+ }
+}}
+ tooltip {clear the teminal history in the terminal window} xywh {214 498 106 19} down_box DOWN_BOX labelsize 11
+ }
+ }
+ Fl_Box w_settings_shell_fd_project {
+ image {../pixmaps/fd_project.png} compress_image 1 bind_image 1 bind_deimage 1 xywh {20 70 16 15} labelsize 11 hide deactivate
+ code0 {o->image()->scale(16, 16);}
+ }
+ Fl_Box w_settings_shell_fd_user {
+ image {../pixmaps/fd_user.png} compress_image 1 bind_image 1 bind_deimage 1 xywh {20 70 16 15} labelsize 11 hide deactivate
+ code0 {o->image()->scale(16, 16);}
+ }
+ }
+ Fl_Group w_settings_i18n_tab {
+ label Locale
+ callback {propagate_load(o, v);} open
+ scale_image {36 24} image {../icons/language_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 hide
+ } {
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {100 78 170 20}
+ } {
+ Fl_Choice i18n_type_chooser {
+ label {i18n Library:}
+ callback i18n_type_cb open
+ tooltip {Type of internationalization to use.} xywh {100 78 160 20} box THIN_UP_BOX down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label None
+ xywh {0 -11 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {GNU gettext}
+ xywh {0 -11 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {POSIX catgets}
+ xywh {0 -11 100 20} labelsize 11
+ }
+ }
+ Fl_Box {} {
+ xywh {260 78 10 20} hide resizable
+ }
+ }
+ Fl_Group i18n_gnu_group {
+ callback {propagate_load(o, v);} open
+ xywh {100 103 220 95}
+ } {
+ Fl_Input i18n_gnu_include_input {
+ label {\#include:}
+ callback {if (v == LOAD) {
+ o->value(g_project.i18n_gnu_include.c_str());
+} else {
+ undo_checkpoint();
+ g_project.i18n_gnu_include = o->value();
+ set_modflag(1);
+}}
+ tooltip {The include file for internationalization.} xywh {100 103 220 20} box THIN_DOWN_BOX labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input i18n_gnu_conditional_input {
+ label {Conditional:}
+ callback {if (v == LOAD) {
+ o->value(g_project.i18n_gnu_conditional.c_str());
+} else {
+ undo_checkpoint();
+ g_project.i18n_gnu_conditional = o->value();
+ set_modflag(1);
+}}
+ tooltip {only include the header file if this preprocessor macro is defined, for example FLTK_GETTEXT_FOUND} xywh {100 128 220 20} box THIN_DOWN_BOX labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input i18n_gnu_function_input {
+ label {Function:}
+ callback {if (v == LOAD) {
+ o->value(g_project.i18n_gnu_function.c_str());
+} else {
+ undo_checkpoint();
+ g_project.i18n_gnu_function = o->value();
+ set_modflag(1);
+}}
+ tooltip {The function to call to translate labels and tooltips, usually "gettext" or "_"} xywh {100 153 220 20} box THIN_DOWN_BOX labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input i18n_gnu_static_function_input {
+ label {Static Function:}
+ callback {if (v == LOAD) {
+ o->value(g_project.i18n_gnu_static_function.c_str());
+} else {
+ undo_checkpoint();
+ g_project.i18n_gnu_static_function = o->value();
+ set_modflag(1);
+}}
+ tooltip {function to call to translate static text, The function to call to internationalize labels and tooltips, usually "gettext_noop" or "N_"} xywh {100 178 220 20} box THIN_DOWN_BOX labelsize 11 textfont 4 textsize 11
+ }
+ }
+ Fl_Group i18n_posix_group {
+ callback {propagate_load(o, v);} open
+ xywh {100 103 220 95} hide
+ } {
+ Fl_Input i18n_pos_include_input {
+ label {\#include:}
+ callback {if (v == LOAD) {
+ o->value(g_project.i18n_pos_include.c_str());
+} else {
+ undo_checkpoint();
+ g_project.i18n_pos_include = o->value();
+ set_modflag(1);
+}}
+ tooltip {The include file for internationalization.} xywh {100 103 220 20} box THIN_DOWN_BOX labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input i18n_pos_conditional_input {
+ label {Conditional:}
+ callback {if (v == LOAD) {
+ o->value(g_project.i18n_pos_conditional.c_str());
+} else {
+ undo_checkpoint();
+ g_project.i18n_pos_conditional = o->value();
+ set_modflag(1);
+}}
+ tooltip {only include the header file if this preprocessor macro is defined, for example FLTK_GETTEXT_FOUND} xywh {100 128 220 20} box THIN_DOWN_BOX labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input i18n_pos_file_input {
+ label {Catalog:}
+ callback {if (v == LOAD) {
+ o->value(g_project.i18n_pos_file.c_str());
+} else {
+ undo_checkpoint();
+ g_project.i18n_pos_file = o->value();
+ set_modflag(1);
+}}
+ tooltip {The name of the message catalog.} xywh {100 153 220 20} box THIN_DOWN_BOX labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Group {} {
+ callback {propagate_load(o, v);} open
+ xywh {100 178 90 20}
+ } {
+ Fl_Input i18n_pos_set_input {
+ label {Set:}
+ callback {if (v == LOAD) {
+ o->value(g_project.i18n_pos_set.c_str());
+} else {
+ undo_checkpoint();
+ g_project.i18n_pos_set = o->value();
+ set_modflag(1);
+}}
+ tooltip {The message set number.} xywh {100 178 80 20} type Int box THIN_DOWN_BOX labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Box {} {
+ xywh {180 178 10 20} hide resizable
+ }
+ }
+ }
+ Fl_Box {} {
+ xywh {100 530 220 10} hide resizable
+ }
+ }
+ Fl_Group w_settings_user_tab {
+ label User
+ callback {propagate_load(o, v);} open
+ scale_image {36 24} image {../icons/user_circle_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 hide
+ code0 {\#include <FL/fl_show_colormap.H>}
+ } {
+ Fl_Box {} {
+ label {---- Widget Browser ----}
+ xywh {100 84 220 20} labelfont 1 labelsize 11 align 20
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {100 112 220 20}
+ } {
+ Fl_Choice {} {
+ label {Label:}
+ user_data {&Widget_Browser::label_font}
+ callback cb_Comments open
+ xywh {100 112 151 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item fontmenu[];}
+ code1 {o->menu(fontmenu);}
+ } {}
+ Fl_Button {} {
+ user_data {&Widget_Browser::label_color}
+ callback cb_Color_Chip
+ xywh {251 112 51 20} labelsize 11
+ }
+ Fl_Menu_Button {} {
+ user_data {&Widget_Browser::label_color}
+ callback cb_Color_Choice open
+ xywh {302 112 18 20}
+ code0 {extern Fl_Menu_Item colormenu[];}
+ code1 {o->menu(colormenu);}
+ } {}
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {100 137 220 20}
+ } {
+ Fl_Choice {} {
+ label {Class:}
+ user_data {&Widget_Browser::class_font}
+ callback cb_Comments open
+ xywh {100 137 151 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item fontmenu[];}
+ code1 {o->menu(fontmenu);}
+ } {}
+ Fl_Button {} {
+ user_data {&Widget_Browser::class_color}
+ callback cb_Color_Chip
+ xywh {251 137 51 20} labelsize 11
+ }
+ Fl_Menu_Button {} {
+ user_data {&Widget_Browser::class_color}
+ callback cb_Color_Choice open
+ xywh {302 137 18 20}
+ code0 {extern Fl_Menu_Item colormenu[];}
+ code1 {o->menu(colormenu);}
+ } {}
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {100 162 220 20}
+ } {
+ Fl_Choice {} {
+ label {Function:}
+ user_data {&Widget_Browser::func_font}
+ callback cb_Comments open
+ xywh {100 162 151 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item fontmenu[];}
+ code1 {o->menu(fontmenu);}
+ } {}
+ Fl_Button {} {
+ user_data {&Widget_Browser::func_color}
+ callback cb_Color_Chip
+ xywh {251 162 51 20} labelsize 11
+ }
+ Fl_Menu_Button {} {
+ user_data {&Widget_Browser::func_color}
+ callback cb_Color_Choice open
+ xywh {302 162 18 20}
+ code0 {extern Fl_Menu_Item colormenu[];}
+ code1 {o->menu(colormenu);}
+ } {}
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {100 187 220 20}
+ } {
+ Fl_Choice {} {
+ label {Name:}
+ user_data {&Widget_Browser::name_font}
+ callback cb_Comments open
+ xywh {100 187 151 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item fontmenu[];}
+ code1 {o->menu(fontmenu);}
+ } {}
+ Fl_Button {} {
+ user_data {&Widget_Browser::name_color}
+ callback cb_Color_Chip
+ xywh {251 187 51 20} labelsize 11
+ }
+ Fl_Menu_Button {} {
+ user_data {&Widget_Browser::name_color}
+ callback cb_Color_Choice open
+ xywh {302 187 18 20}
+ code0 {extern Fl_Menu_Item colormenu[];}
+ code1 {o->menu(colormenu);}
+ } {}
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {100 212 220 20}
+ } {
+ Fl_Choice {} {
+ label {Code:}
+ user_data {&Widget_Browser::code_font}
+ callback cb_Comments open
+ xywh {100 212 151 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item fontmenu[];}
+ code1 {o->menu(fontmenu);}
+ } {}
+ Fl_Button {} {
+ user_data {&Widget_Browser::code_color}
+ callback cb_Color_Chip
+ xywh {251 212 51 20} labelsize 11
+ }
+ Fl_Menu_Button {} {
+ user_data {&Widget_Browser::code_color}
+ callback cb_Color_Choice open
+ xywh {302 212 18 20}
+ code0 {extern Fl_Menu_Item colormenu[];}
+ code1 {o->menu(colormenu);}
+ } {}
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {100 237 220 20}
+ } {
+ Fl_Choice w_settings_user_commenttext {
+ label {Comments:}
+ user_data {&Widget_Browser::comment_font}
+ callback cb_Comments open
+ xywh {100 237 151 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item fontmenu[];}
+ code1 {o->menu(fontmenu);}
+ } {}
+ Fl_Button {} {
+ user_data {&Widget_Browser::comment_color}
+ callback cb_Color_Chip
+ xywh {251 237 51 20} labelsize 11
+ }
+ Fl_Menu_Button {} {
+ user_data {&Widget_Browser::comment_color}
+ callback cb_Color_Choice open
+ xywh {302 237 18 20}
+ code0 {extern Fl_Menu_Item colormenu[];}
+ code1 {o->menu(colormenu);}
+ } {}
+ }
+ }
+ }
+ Fl_Group {} {open
+ xywh {10 550 320 20}
+ } {
+ Fl_Button {} {
+ label Close
+ callback {if (g_shell_config)
+ g_shell_config->write(fluid_prefs, FD_STORE_USER);
+g_layout_list.write(fluid_prefs, FD_STORE_USER);
+settings_window->hide();}
+ tooltip {Close this dialog.} xywh {230 550 100 20} labelsize 11
+ }
+ Fl_Box {} {
+ xywh {220 550 10 20} hide resizable
+ }
+ }
+ }
+ code {w_settings_tabs->do_callback(w_settings_tabs, LOAD);} {}
+}
+
+Function {make_shell_window()} {open
+} {
+ Fl_Window shell_run_window {
+ label {Shell Command Output} open
+ xywh {769 584 555 430} type Double align 80 resizable visible
+ } {
+ Fl_Terminal shell_run_terminal {
+ xywh {10 10 535 375} resizable
+ code0 {shell_run_terminal->ansi(1);}
+ code1 {shell_run_terminal->history_lines(1000);}
+ }
+ Fl_Group {} {open
+ xywh {10 395 535 25}
+ } {
+ Fl_Button {} {
+ label Clear
+ callback {// clear screen, clear scrollback, home cursor
+shell_run_terminal->append("\\033[2J\\033[3J\\033[H");}
+ xywh {10 395 94 25}
+ }
+ Fl_Box {} {
+ xywh {104 395 341 25} hide resizable
+ }
+ Fl_Return_Button shell_run_button {
+ label Close
+ callback {Fl_Preferences pos(fluid_prefs, "shell_run_Window_pos");
+pos.set("x", shell_run_window->x());
+pos.set("y", shell_run_window->y());
+pos.set("w", shell_run_window->w());
+pos.set("h", shell_run_window->h());
+shell_run_window->hide();}
+ xywh {445 395 100 25}
+ }
+ }
+ }
+}
+
+decl {Fl_Menu_Item *w_layout_menu_storage[4];} {private global
+}