# data file for the Fltk User Interface Designer (fluid) version 1.0500 header_name {.h} code_name {.cxx} include_guard {} snap { ver 1 current_suite {FLUID (based on FLTK)} current_preset 1 suite { name {FLUID (based on FLTK)} preset { 1 15 15 15 15 0 0 10 10 10 10 0 0 25 25 24 12 6 24 6 10 0 14 0 14 } preset { 1 10 10 10 10 0 0 10 10 10 10 0 0 20 20 22 11 6 22 6 6 0 12 0 12 } preset { 1 10 10 10 10 0 0 10 10 10 10 0 0 18 18 18 9 2 18 5 2 0 11 0 11 } } } comment {// // Setting and shell dialogs for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2025 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 "Fluid.h"} {public global } decl {\#include "Project.h"} {private local } decl {\#include "proj/undo.h"} {private global } decl {\#include "app/Snap_Action.h"} {public global } decl {\#include "app/shell_command.h"} {public global } decl {\#include "tools/filename.h"} {public local } decl {\#include "widgets/Node_Browser.h"} {public global } decl {\#include } {public local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include } {private global } decl {\#include } {private global } decl {\#include } {private global } decl {\#include "../src/flstring.h"} {private global } decl {\#include } {private global } decl {using namespace fld::widget;} {private 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 {869 311 540 184} 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 12 when 13 textfont 4 textsize 12 resizable code0 {script_input->buffer(new Fl_Text_Buffer);} } Fl_Group {} { callback propagate_load open xywh {10 150 520 24} labelsize 11 } { Fl_Button script_panel_cancel { label Cancel selected xywh {348 150 88 24} } Fl_Return_Button script_panel_ok { label OK xywh {442 150 88 24} hotspot } Fl_Box {} { xywh {10 150 338 24} 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 {504 366 360 585} 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 340 530} selection_color 12 labelsize 12 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 340 480} labelsize 12 resizable } { Fl_Group {} { callback {propagate_load(o, v);} open xywh {130 78 210 25} } { Fl_Choice scheme_choice { label {Scheme: } callback {Fluid.set_scheme(o->text(o->value()));} open xywh {130 78 120 25} down_box BORDER_BOX labelfont 1 labelsize 12 textsize 12 code0 {Fluid.init_scheme();} class Fl_Scheme_Choice } {} Fl_Box {} { xywh {250 78 10 25} hide resizable } } Fl_Box {} { label {Options: } xywh {130 115 0 20} labelfont 1 labelsize 12 align 4 } Fl_Check_Button tooltips_button { label {Show Tooltips} callback {Fl_Tooltip::enable(tooltips_button->value()); Fluid.preferences.set("show_tooltips", tooltips_button->value());} xywh {130 115 210 20} down_box DOWN_BOX labelsize 12 code0 {int b;} code1 {Fluid.preferences.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.preferences.set("show_completion_dialogs", completion_button->value());} xywh {130 135 210 20} down_box DOWN_BOX labelsize 12 code0 {int b;} code1 {Fluid.preferences.get("show_completion_dialogs", b, 1);} code2 {completion_button->value(b);} } Fl_Check_Button openlast_button { label {Open Previous File on Startup} callback {Fluid.preferences.set("open_previous_file", openlast_button->value());} xywh {130 155 210 20} down_box DOWN_BOX labelsize 12 code0 {int b;} code1 {Fluid.preferences.get("open_previous_file", b, 0);} code2 {openlast_button->value(b);} } Fl_Check_Button prevpos_button { label {Remember Window Positions} callback {Fluid.preferences.set("prev_window_pos", prevpos_button->value());} xywh {130 175 210 20} down_box DOWN_BOX labelsize 12 code0 {int b;} code1 {Fluid.preferences.get("prev_window_pos", b, 1);} code2 {prevpos_button->value(b);} } Fl_Check_Button show_comments_button { label {Show Comments in Browser} callback {Fluid.show_comments = show_comments_button->value(); Fluid.preferences.set("Fluid.show_comments", Fluid.show_comments); redraw_browser();} xywh {130 195 210 20} down_box DOWN_BOX labelsize 12 code1 {Fluid.preferences.get("Fluid.show_comments", Fluid.show_comments, 1);} code2 {show_comments_button->value(Fluid.show_comments);} } Fl_Group {} { callback {propagate_load(o, v);} open xywh {130 225 210 20} } { Fl_Spinner recent_spinner { label {\# Recent Files:} callback {Fluid.preferences.set("recent_files", recent_spinner->value()); Fluid.history.load();} xywh {130 225 40 20} labelfont 1 labelsize 12 when 1 maximum 10 textsize 12 code0 {int c;} code1 {Fluid.preferences.get("recent_files", c, 5);} code2 {recent_spinner->maximum(10);} code3 {recent_spinner->value(c);} } Fl_Box {} { xywh {170 225 10 20} hide resizable } } Fl_Input editor_command_input { label {External Editor:} callback {strncpy(Fluid.external_editor_command, editor_command_input->value(), sizeof(Fluid.external_editor_command)-1); Fluid.external_editor_command[sizeof(Fluid.external_editor_command)-1] = 0; Fluid.preferences.set("external_editor_command", Fluid.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 {130 255 210 20} labelfont 1 labelsize 12 when 1 textfont 4 textsize 12 code1 {Fluid.preferences.get("external_editor_command", Fluid.external_editor_command, "", sizeof(Fluid.external_editor_command)-1);} code2 {editor_command_input->value(Fluid.external_editor_command);} } Fl_Check_Button use_external_editor_button { label {Use for Code Nodes} callback {Fluid.use_external_editor = use_external_editor_button->value(); Fluid.preferences.set("use_external_editor", Fluid.use_external_editor); redraw_browser();} xywh {130 278 210 20} down_box DOWN_BOX labelsize 12 code1 {Fluid.preferences.get("use_external_editor", Fluid.use_external_editor, 0);} code2 {use_external_editor_button->value(Fluid.use_external_editor);} } Fl_Box {} { label {Overlays: } xywh {130 306 0 20} labelfont 1 labelsize 12 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 {130 306 210 20} down_box DOWN_BOX labelsize 12 code0 {o->value(Fluid.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 {130 326 210 20} down_box DOWN_BOX labelsize 12 code0 {o->value(Fluid.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 {130 346 210 20} down_box DOWN_BOX labelsize 12 code0 {o->value(Fluid.show_ghosted_outline);} } Fl_Box {} { xywh {130 530 210 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 340 480} labelsize 12 hide } { Fl_Group {} {open xywh {110 78 230 30} } { Fl_Box {} { label {Use "name.ext" to set a file name or just ".ext" to set extension.} xywh {110 78 210 30} labelsize 11 align 148 } Fl_Box {} { xywh {320 78 20 30} hide resizable } } Fl_Input header_file_input { label {Header File:} user_data 1 user_data_type {void*} callback {if (v == LOAD) { o->value(Fluid.proj.header_file_name.c_str()); } else { if (strcmp(Fluid.proj.header_file_name.c_str(), o->value())) { Fluid.proj.header_file_name = o->value(); Fluid.proj.set_modflag(1); } }} tooltip {The name of the generated header file.} xywh {110 112 230 20} box THIN_DOWN_BOX labelfont 1 labelsize 12 when 1 textfont 4 textsize 12 } Fl_Input code_file_input { label {Code File:} user_data 1 user_data_type {void*} callback {if (v == LOAD) { o->value(Fluid.proj.code_file_name.c_str()); } else { if (strcmp(Fluid.proj.code_file_name.c_str(), o->value())) { Fluid.proj.code_file_name = o->value(); Fluid.proj.set_modflag(1); } }} tooltip {The name of the generated code file.} xywh {110 137 230 20} box THIN_DOWN_BOX labelfont 1 labelsize 12 when 1 textfont 4 textsize 12 } Fl_Check_Button include_H_from_C_button { label {Include Header from Code} callback {if (v == LOAD) { o->value(Fluid.proj.include_H_from_C); } else { if (Fluid.proj.include_H_from_C != o->value()) { Fluid.proj.set_modflag(1); Fluid.proj.include_H_from_C = o->value(); } }} tooltip {Include the header file from the code file.} xywh {110 160 230 20} down_box DOWN_BOX labelsize 12 } Fl_Input include_guard_input { label {Include Guard:} user_data 1 user_data_type {void*} callback {if (v == LOAD) { o->value(Fluid.proj.include_guard.c_str()); } else { if (strcmp(Fluid.proj.include_guard.c_str(), o->value())) { Fluid.proj.include_guard = o->value(); Fluid.proj.set_modflag(1); } }} tooltip {Name of macro used as an include guard in header file: \#ifdef GUARD \#define GUARD ... \#endif} xywh {110 188 230 20} box THIN_DOWN_BOX labelfont 1 labelsize 12 when 1 textfont 4 textsize 12 } Fl_Box {} { label {Options: } xywh {110 214 0 20} labelfont 1 labelsize 12 align 4 } Fl_Check_Button use_FL_COMMAND_button { label {Menu shortcuts use FL_COMMAND} callback {if (v == LOAD) { o->value(Fluid.proj.use_FL_COMMAND); } else { if (Fluid.proj.use_FL_COMMAND != o->value()) { Fluid.proj.set_modflag(1); Fluid.proj.use_FL_COMMAND = o->value(); } }} tooltip {Replace FL_CTRL and FL_META with FL_COMMAND when generating menu shortcuts} xywh {110 214 230 20} down_box DOWN_BOX labelsize 12 } Fl_Check_Button utf8_in_src_button { label {Allow Unicode UTF-8 in source code} callback {if (v == LOAD) { o->value(Fluid.proj.utf8_in_src); } else { if (Fluid.proj.utf8_in_src != o->value()) { Fluid.proj.set_modflag(1); Fluid.proj.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 {110 234 230 20} down_box DOWN_BOX labelsize 12 } Fl_Check_Button avoid_early_includes_button { label {Avoid early include of Fl.H} callback {if (v == LOAD) { o->value(Fluid.proj.avoid_early_includes); } else { if (Fluid.proj.avoid_early_includes != o->value()) { Fluid.proj.set_modflag(1); Fluid.proj.avoid_early_includes = o->value(); } }} tooltip {Do not emit \#include until it is needed by another include file.} xywh {110 254 230 20} down_box DOWN_BOX labelsize 12 } Fl_Box {} { label {Experimental: } xywh {110 280 0 20} labelfont 1 labelsize 12 align 4 } Fl_Check_Button w_proj_mergeback { label {Generate MergeBack data} callback {if (v == LOAD) { o->value(Fluid.proj.write_mergeback_data); } else { if (Fluid.proj.write_mergeback_data != o->value()) { Fluid.proj.set_modflag(1); Fluid.proj.write_mergeback_data = o->value(); } }} 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 {110 280 230 20} down_box DOWN_BOX labelsize 12 } Fl_Box {} { xywh {110 530 230 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 340 480} labelsize 12 hide } { Fl_Box {} { label {Layout:} xywh {20 78 75 24} labelfont 1 labelsize 12 align 24 } Fl_Choice layout_choice { callback {if (v == LOAD) { o->value(Fluid.layout_list.current_suite()); } else { int index = o->value(); Fluid.layout_list.current_suite(index); Fluid.layout_list.update_dialogs(); }} open xywh {95 78 197 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(Fluid.layout_list[Fluid.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 == nullptr) return; Fluid.layout_list.add(new_name); Fluid.layout_list.update_dialogs();} xywh {292 78 24 24} } Fl_Menu_Button w_layout_menu { callback {if (v == LOAD) { fld::app::Layout_Suite &suite = Fluid.layout_list[Fluid.layout_list.current_suite()]; if (suite.storage_ == FLD_TOOL_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[static_cast(suite.storage_)]->setonly(menu_w_layout_menu); }} open xywh {316 78 24 24} } { MenuItem w_layout_menu_rename { label {Rename...} callback {// Rename the current layout suite std::string old_name = Fluid.layout_list[Fluid.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 == nullptr) return; Fluid.layout_list.rename(new_name); Fluid.layout_list.update_dialogs();} xywh {0 0 31 20} divider } MenuItem {w_layout_menu_storage[0]} { label {@fd_beaker FLUID Built-In} callback {fld::app::Layout_Suite &suite = Fluid.layout_list[Fluid.layout_list.current_suite()]; suite.storage(FLD_TOOL_STORE_INTERNAL); Fluid.layout_list.update_dialogs();} xywh {0 0 31 20} type Radio deactivate } MenuItem {w_layout_menu_storage[1]} { label {@fd_user User Preference} callback {fld::app::Layout_Suite &suite = Fluid.layout_list[Fluid.layout_list.current_suite()]; suite.storage(FLD_TOOL_STORE_USER); Fluid.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 {fld::app::Layout_Suite &suite = Fluid.layout_list[Fluid.layout_list.current_suite()]; suite.storage(FLD_TOOL_STORE_PROJECT); Fluid.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 {fld::app::Layout_Suite &suite = Fluid.layout_list[Fluid.layout_list.current_suite()]; suite.storage(FLD_TOOL_STORE_FILE); Fluid.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; Fluid.layout_list.load(new_filename); //Fluid.layout_list.current_suite(n); Fluid.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 = Fluid.layout_list.filename_; fnfc.directory(fl_filename_path_str(filename).c_str()); fnfc.preset_file(fl_filename_name_str(filename).c_str()); if (fnfc.show() != 0) return; const char *new_filename = fnfc.filename(); if (!new_filename) return; Fluid.layout_list.filename_ = new_filename; Fluid.layout_list.save(new_filename);} xywh {0 0 31 20} divider code0 {\#include } } MenuItem w_layout_menu_delete { label Delete callback {// remove the current suite Fluid.layout_list.remove(Fluid.layout_list.current_suite()); Fluid.layout_list.update_dialogs();} xywh {0 0 31 20} } } Fl_Box {} { label {Preset:} xywh {20 107 75 20} labelfont 1 labelsize 12 align 24 } Fl_Group {} { callback propagate_load open xywh {95 107 245 20} labelsize 11 } { Fl_Button {preset_choice[0]} { label Application user_data 0 callback edit_layout_preset_cb xywh {95 107 81 20} type Radio value 1 selection_color 45 labelsize 12 compact 1 } Fl_Button {preset_choice[1]} { label Dialog user_data 1 callback edit_layout_preset_cb xywh {176 107 82 20} type Radio selection_color 45 labelsize 12 compact 1 } Fl_Button {preset_choice[2]} { label Toolbox user_data 2 callback edit_layout_preset_cb xywh {258 107 82 20} type Radio selection_color 45 labelsize 12 compact 1 } } Fl_Box {} { label {---- Window ----} xywh {95 132 235 20} labelfont 1 labelsize 12 align 20 } Fl_Box {} { label {Margins:} xywh {20 167 75 20} labelfont 1 labelsize 12 align 24 } Fl_Value_Input {} { label {Left:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->left_window_margin); } else { Fluid.proj.layout->left_window_margin = (int)o->value(); }} xywh {95 167 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Top:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->top_window_margin); } else { Fluid.proj.layout->top_window_margin = (int)o->value(); }} xywh {155 167 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Right:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->right_window_margin); } else { Fluid.proj.layout->right_window_margin = (int)o->value(); }} xywh {215 167 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Bottom:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->bottom_window_margin); } else { Fluid.proj.layout->bottom_window_margin = (int)o->value(); }} xywh {275 167 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Box {} { label {Grid:} xywh {20 201 75 20} labelfont 1 labelsize 12 align 24 } Fl_Value_Input {} { label {Horizontal:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->window_grid_x); } else { Fluid.proj.layout->window_grid_x = (int)o->value(); }} xywh {95 201 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Vertical:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->window_grid_y); } else { Fluid.proj.layout->window_grid_y = (int)o->value(); }} xywh {155 201 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Box {} { label {---- Group ----} xywh {95 226 235 20} labelfont 1 labelsize 12 align 20 } Fl_Box {} { label {Margins:} xywh {20 261 75 20} labelfont 1 labelsize 12 align 24 } Fl_Value_Input {} { label {Left:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->left_group_margin); } else { Fluid.proj.layout->left_group_margin = (int)o->value(); }} xywh {95 261 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Top:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->top_group_margin); } else { Fluid.proj.layout->top_group_margin = (int)o->value(); }} xywh {155 261 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Right:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->right_group_margin); } else { Fluid.proj.layout->right_group_margin = (int)o->value(); }} xywh {215 261 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Bottom:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->bottom_group_margin); } else { Fluid.proj.layout->bottom_group_margin = (int)o->value(); }} xywh {275 261 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Box {} { label {Grid:} xywh {20 295 75 20} labelfont 1 labelsize 12 align 24 } Fl_Value_Input {} { label {Horizontal:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->group_grid_x); } else { Fluid.proj.layout->group_grid_x = (int)o->value(); }} xywh {95 295 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Vertical:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->group_grid_y); } else { Fluid.proj.layout->group_grid_y = (int)o->value(); }} xywh {155 295 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Box {} { label {---- Tabs ----} xywh {95 320 235 20} labelfont 1 labelsize 12 align 20 } Fl_Box {} { label {Margins:} xywh {20 355 75 20} labelfont 1 labelsize 12 align 24 } Fl_Value_Input {} { label {Top:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->top_tabs_margin); } else { Fluid.proj.layout->top_tabs_margin = (int)o->value(); }} xywh {95 355 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Bottom:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->bottom_tabs_margin); } else { Fluid.proj.layout->bottom_tabs_margin = (int)o->value(); }} xywh {155 355 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Box {} { label {---- Widget ----} xywh {95 380 235 20} labelfont 1 labelsize 12 align 20 } Fl_Box {} { label {Horizontal:} xywh {20 415 75 20} labelfont 1 labelsize 12 align 24 } Fl_Value_Input {} { label {Minimum:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->widget_min_w); } else { Fluid.proj.layout->widget_min_w = (int)o->value(); }} xywh {95 414 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Increment:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->widget_inc_w); } else { Fluid.proj.layout->widget_inc_w = (int)o->value(); }} xywh {155 414 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { label {Gap:} callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->widget_gap_x); } else { Fluid.proj.layout->widget_gap_x = (int)o->value(); }} xywh {215 414 55 20} labelsize 11 align 5 maximum 32767 step 1 textsize 12 } Fl_Box {} { label {Vertical:} xywh {20 440 75 20} labelfont 1 labelsize 12 align 24 } Fl_Value_Input {} { callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->widget_min_h); } else { Fluid.proj.layout->widget_min_h = (int)o->value(); }} xywh {95 440 55 20} labelsize 12 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->widget_inc_h); } else { Fluid.proj.layout->widget_inc_h = (int)o->value(); }} xywh {155 440 55 20} labelsize 12 align 5 maximum 32767 step 1 textsize 12 } Fl_Value_Input {} { callback {if (v == LOAD) { o->value((double)Fluid.proj.layout->widget_gap_y); } else { Fluid.proj.layout->widget_gap_y = (int)o->value(); }} xywh {215 440 55 20} labelsize 12 align 5 maximum 32767 step 1 textsize 12 } Fl_Group {} { label {Label Font:} callback propagate_load open xywh {95 465 201 20} labelfont 1 labelsize 12 align 4 } { Fl_Choice {} { callback {if (v == LOAD) { o->value(Fluid.proj.layout->labelfont+1); } else { Fluid.proj.layout->labelfont = (int)o->value()-1; }} open tooltip {The style of the label text.} xywh {95 465 150 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 12 textsize 12 resizable code0 {extern Fl_Menu_Item fontmenu_w_default[];} code1 {o->menu(fontmenu_w_default);} } {} Fl_Value_Input {} { callback {if (v == LOAD) { o->value(Fluid.proj.layout->labelsize); } else { Fluid.proj.layout->labelsize = (int)o->value(); }} tooltip {The size of the label text.} xywh {245 465 50 20} labelsize 12 minimum 1 maximum 1000 step 1 value 14 textsize 12 } } Fl_Group {} { label {Text Font:} callback propagate_load open xywh {95 490 200 20} labelfont 1 labelsize 12 align 4 } { Fl_Choice {} { callback {if (v == LOAD) { o->value(Fluid.proj.layout->textfont+1); } else { Fluid.proj.layout->textfont = (int)o->value()-1; }} open tooltip {The value text style.} xywh {95 490 150 20} box DOWN_BOX down_box BORDER_BOX labelfont 1 labelsize 12 textsize 12 resizable code0 {extern Fl_Menu_Item fontmenu_w_default[];} code1 {o->menu(fontmenu_w_default);} } {} Fl_Value_Input {} { callback {if (v == LOAD) { o->value(Fluid.proj.layout->textsize); } else { Fluid.proj.layout->textsize = (int)o->value(); }} tooltip {The value text size.} xywh {245 490 50 20} labelsize 12 maximum 1000 step 1 value 14 textsize 12 } } Fl_Box {} { xywh {95 535 245 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 340 480} labelsize 12 hide } { Fl_Group {} { callback propagate_load open xywh {20 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; ilist_size; i++) { Fd_Shell_Command *cmd = g_shell_config->list[i]; o->add(cmd->name.c_str()); if (cmd->storage == FLD_TOOL_STORE_USER) o->icon(i+1, w_settings_shell_fd_user->image()); else if (cmd->storage == FLD_TOOL_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 {110 90 230 110} type Multi labelfont 1 labelsize 12 align 4 textsize 12 resizable } Fl_Group w_settings_shell_toolbox { callback {if (v==LOAD) { propagate_load(o, v); }} open xywh {110 200 230 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 == FLD_TOOL_STORE_USER) { w_settings_shell_list->icon(selected+1, w_settings_shell_fd_user->image()); } else if (cmd->storage == FLD_TOOL_STORE_PROJECT) { w_settings_shell_list->icon(selected+1, w_settings_shell_fd_project->image()); Fluid.proj.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 {110 200 24 22} labelfont 1 labelsize 12 } 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 == FLD_TOOL_STORE_USER) { w_settings_shell_list->icon(selected+1, w_settings_shell_fd_user->image()); } else if (cmd->storage == FLD_TOOL_STORE_PROJECT) { w_settings_shell_list->icon(selected+1, w_settings_shell_fd_project->image()); Fluid.proj.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 {134 200 24 22} labelfont 1 labelsize 12 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", nullptr, g_shell_config->list[selected-1]->name.c_str()); if (ret==1) return; if (g_shell_config->at(selected-1)->storage == FLD_TOOL_STORE_PROJECT) Fluid.proj.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 {158 200 24 22} labelsize 12 deactivate } Fl_Menu_Button w_settings_shell_menu {open xywh {182 200 24 22} labelsize 12 textsize 12 } { 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 12 } 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 12 } MenuItem {} { label {Example Scripts:} xywh {20 20 100 20} labelfont 1 labelsize 12 hide deactivate } MenuItem {} { label {Compile with fltk-config} xywh {30 30 100 20} labelsize 12 hide } MenuItem {} { label {Build and run} xywh {40 40 100 20} labelsize 12 hide } MenuItem {} { label {Build with Xcode on macOS} xywh {50 50 100 20} labelsize 12 hide } MenuItem {} { label {Build with CMake} xywh {60 60 100 20} labelsize 12 hide } } Fl_Box {} { xywh {243 200 13 22} hide resizable } Fl_Button {} { label T callback {if (v!=LOAD) show_terminal_window();} tooltip {show terminal window} xywh {256 200 24 22} labelfont 5 labelsize 12 } 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 {280 200 60 22} labelsize 12 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 {20 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} tooltip {file the shell command under this name in the shell command list} xywh {110 246 230 20} labelfont 1 labelsize 12 when 13 textfont 4 textsize 12 } 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} tooltip {label text for the Shell menu in the main menu bar} xywh {110 272 230 20} labelfont 1 labelsize 12 textfont 4 textsize 12 } Fl_Group {} { callback {propagate_load(o, v);} open xywh {110 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} tooltip {an optional keyboard shortcut to run this shell command} xywh {110 297 130 20} labelsize 12 align 16 code0 {\#include } class Fl_Shortcut_Button } Fl_Choice {} { label {Store:} callback {int selected = w_settings_shell_list_selected; if (v == LOAD) { if (selected) { fld::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)FLD_TOOL_STORE_USER)); } } else { if (selected) { Fd_Shell_Command *cmd = g_shell_config->list[selected-1]; fld::Tool_Store ts = (fld::Tool_Store)(o->mvalue()->argument()); if (cmd->storage == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); cmd->storage = ts; //w_settings_shell_list->text(selected, cmd->name.c_str()); if (cmd->storage == FLD_TOOL_STORE_USER) w_settings_shell_list->icon(selected, w_settings_shell_fd_user->image()); else if (cmd->storage == FLD_TOOL_STORE_PROJECT) w_settings_shell_list->icon(selected, w_settings_shell_fd_project->image()); if (cmd->storage == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} open tooltip {store this shell command as a user setting or save it with the .fl project file} xywh {110 322 130 20} down_box BORDER_BOX labelfont 1 labelsize 12 textsize 12 } { MenuItem {} { label {@fd_user User Setting} user_data {FLD_TOOL_STORE_USER} user_data_type long xywh {0 0 100 20} labelsize 12 } MenuItem {} { label {@fd_project Project File} user_data {FLD_TOOL_STORE_PROJECT} user_data_type long xywh {0 0 100 20} labelsize 12 } } 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} open tooltip {add this command to the main menu bar only if this condition is true} xywh {110 348 130 20} down_box BORDER_BOX labelfont 1 labelsize 12 textsize 12 } { MenuItem {} { label {all platforms} user_data {Fd_Shell_Command::ALWAYS} user_data_type long xywh {0 0 100 20} labelsize 12 } MenuItem {} { label {Windows only} user_data {Fd_Shell_Command::WIN_ONLY} user_data_type long xywh {0 0 100 20} labelsize 12 } MenuItem {} { label {Linux only} user_data {Fd_Shell_Command::UX_ONLY} user_data_type long xywh {0 0 100 20} labelsize 12 } MenuItem {} { label {macOS only} user_data {Fd_Shell_Command::MAC_ONLY} user_data_type long xywh {0 0 100 20} labelsize 12 } MenuItem {} { label {Linux and macOS} user_data {Fd_Shell_Command::MAC_AND_UX_ONLY} user_data_type long xywh {0 0 100 20} labelsize 12 } MenuItem {} { label {don't use} user_data {Fd_Shell_Command::NEVER} user_data_type long xywh {0 0 100 20} labelsize 12 } } Fl_Box {} { xywh {240 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 {240 348 90 20} labelfont 1 labelsize 12 textfont 4 textsize 12 hide } Fl_Group {} { callback propagate_load open xywh {110 373 230 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} xywh {110 373 208 80} labelfont 1 labelsize 12 align 4 textfont 4 textsize 12 resizable code0 {o->buffer(new Fl_Text_Buffer);} } Fl_Group {} {open xywh {318 373 22 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*)nullptr); }} open tooltip {a list of text replacements available for the shell script} xywh {318 373 22 22} labelsize 12 textsize 12 } { MenuItem {} { label {@@BASENAME@@} xywh {80 80 100 20} labelfont 4 labelsize 12 } MenuItem {} { label {@@PROJECTFILE_PATH@@} xywh {0 0 100 20} labelfont 4 labelsize 12 } MenuItem {} { label {@@PROJECTFILE_NAME@@} xywh {10 10 100 20} labelfont 4 labelsize 12 } MenuItem {} { label {@@CODEFILE_PATH@@} xywh {20 20 100 20} labelfont 4 labelsize 12 } MenuItem {} { label {@@CODEFILE_NAME@@} xywh {30 30 100 20} labelfont 4 labelsize 12 } MenuItem {} { label {@@HEADERFILE_PATH@@} xywh {40 40 100 20} labelfont 4 labelsize 12 } MenuItem {} { label {@@HEADERFILE_NAME@@} xywh {50 50 100 20} labelfont 4 labelsize 12 } MenuItem {} { label {@@TEXTFILE_PATH@@} xywh {60 60 100 20} labelfont 4 labelsize 12 } MenuItem {} { label {@@TEXTFILE_NAME@@} xywh {70 70 100 20} labelfont 4 labelsize 12 } MenuItem {} { label {@@FLTK_CONFIG@@} comment {Not yet implemented} xywh {70 70 100 20} labelfont 4 labelsize 12 hide } MenuItem {} { label {@@TMPDIR@@} xywh {70 70 100 20} labelfont 4 labelsize 12 } } 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 {318 395 22 22} labelsize 12 } Fl_Box {} { xywh {318 417 12 10} hide resizable } } } Fl_Group {} {open xywh {110 458 230 60} } { 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} tooltip {save the project to the .fl file before running the command} xywh {110 458 110 20} down_box DOWN_BOX labelsize 12 } 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} tooltip {generate the source code and header file before running the command} xywh {110 478 110 19} down_box DOWN_BOX labelsize 12 } 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} tooltip {save the internationalisation strings before running the command} xywh {110 498 110 20} down_box DOWN_BOX labelsize 12 } 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} tooltip {show the terminal window when launching this script} xywh {229 458 106 20} down_box DOWN_BOX labelsize 12 } 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} tooltip {clear the teminal window before running this script} xywh {229 478 106 19} down_box DOWN_BOX labelsize 12 } 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 == FLD_TOOL_STORE_PROJECT) Fluid.proj.set_modflag(1); } }} tooltip {clear the teminal history in the terminal window} xywh {229 498 106 19} down_box DOWN_BOX labelsize 12 } Fl_Box {} { xywh {335 458 5 60} labelsize 12 resizable } } } 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 340 480} labelsize 12 hide } { Fl_Group {} { callback propagate_load open xywh {110 78 170 20} } { Fl_Choice i18n_type_chooser { label {i18n Library:} callback i18n_type_cb open tooltip {Type of internationalization to use.} xywh {110 78 160 20} box THIN_UP_BOX down_box BORDER_BOX labelsize 12 textsize 12 } { MenuItem {} { label None xywh {0 -11 100 20} labelsize 12 } MenuItem {} { label {GNU gettext} xywh {0 -11 100 20} labelsize 12 } MenuItem {} { label {POSIX catgets} xywh {0 -11 100 20} labelsize 12 } } Fl_Box {} { xywh {270 78 10 20} hide resizable } } Fl_Group i18n_gnu_group { callback {propagate_load(o, v);} open xywh {110 103 230 95} labelsize 12 } { Fl_Input i18n_gnu_include_input { label {\#include:} callback {if (v == LOAD) { o->value(Fluid.proj.i18n.gnu_include); } else { Fluid.proj.undo.checkpoint(); Fluid.proj.i18n.set_gnu_include(o->value()); Fluid.proj.set_modflag(1); }} tooltip {The include file for internationalization.} xywh {110 103 230 20} box THIN_DOWN_BOX labelsize 12 textfont 4 textsize 12 } Fl_Input i18n_gnu_conditional_input { label {Conditional:} callback {if (v == LOAD) { o->value(Fluid.proj.i18n.gnu_conditional); } else { Fluid.proj.undo.checkpoint(); Fluid.proj.i18n.set_gnu_conditional(o->value()); Fluid.proj.set_modflag(1); }} tooltip {only include the header file if this preprocessor macro is defined, for example FLTK_GETTEXT_FOUND} xywh {110 128 230 20} box THIN_DOWN_BOX labelsize 12 textfont 4 textsize 12 } Fl_Input i18n_gnu_function_input { label {Function:} callback {if (v == LOAD) { o->value(Fluid.proj.i18n.gnu_function); } else { Fluid.proj.undo.checkpoint(); Fluid.proj.i18n.set_gnu_function(o->value()); Fluid.proj.set_modflag(1); }} tooltip {The function to call to translate labels and tooltips, usually "gettext" or "_"} xywh {110 153 230 20} box THIN_DOWN_BOX labelsize 12 textfont 4 textsize 12 } Fl_Input i18n_gnu_static_function_input { label {Static Function:} callback {if (v == LOAD) { o->value(Fluid.proj.i18n.gnu_static_function); } else { Fluid.proj.undo.checkpoint(); Fluid.proj.i18n.set_gnu_static_function(o->value()); Fluid.proj.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 {110 178 230 20} box THIN_DOWN_BOX labelsize 12 textfont 4 textsize 12 } } Fl_Group i18n_posix_group { callback {propagate_load(o, v);} open xywh {110 103 230 95} labelsize 12 hide } { Fl_Input i18n_pos_include_input { label {\#include:} callback {if (v == LOAD) { o->value(Fluid.proj.i18n.posix_include); } else { Fluid.proj.undo.checkpoint(); Fluid.proj.i18n.set_posix_include(o->value()); Fluid.proj.set_modflag(1); }} tooltip {The include file for internationalization.} xywh {110 103 230 20} box THIN_DOWN_BOX labelsize 12 textfont 4 textsize 12 } Fl_Input i18n_pos_conditional_input { label {Conditional:} callback {if (v == LOAD) { o->value(Fluid.proj.i18n.posix_conditional); } else { Fluid.proj.undo.checkpoint(); Fluid.proj.i18n.set_posix_conditional(o->value()); Fluid.proj.set_modflag(1); }} tooltip {only include the header file if this preprocessor macro is defined, for example FLTK_GETTEXT_FOUND} xywh {110 128 230 20} box THIN_DOWN_BOX labelsize 12 textfont 4 textsize 12 } Fl_Input i18n_pos_file_input { label {Catalog:} callback {if (v == LOAD) { o->value(Fluid.proj.i18n.posix_file); } else { Fluid.proj.undo.checkpoint(); Fluid.proj.i18n.set_posix_file(o->value()); Fluid.proj.set_modflag(1); }} tooltip {The name of the message catalog.} xywh {110 153 230 20} box THIN_DOWN_BOX labelsize 12 textfont 4 textsize 12 } Fl_Group {} { callback {propagate_load(o, v);} open xywh {110 178 90 20} } { Fl_Input i18n_pos_set_input { label {Set:} callback {if (v == LOAD) { o->value(Fluid.proj.i18n.posix_set); } else { Fluid.proj.undo.checkpoint(); Fluid.proj.i18n.set_posix_set(o->value()); Fluid.proj.set_modflag(1); }} tooltip {The message set number.} xywh {110 178 80 20} type Int box THIN_DOWN_BOX labelsize 12 textfont 4 textsize 12 } Fl_Box {} { xywh {190 178 10 20} hide resizable } } } Fl_Box {} { xywh {110 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 340 480} labelsize 12 hide code0 {\#include } } { Fl_Box {} { label {---- Widget Browser ----} xywh {110 84 220 20} labelfont 1 labelsize 12 align 20 } Fl_Group {} { label {Label:} callback propagate_load open xywh {110 112 230 20} labelfont 1 labelsize 12 align 4 } { Fl_Choice {} { user_data {&Node_Browser::label_font} callback cb_Comments open xywh {110 112 161 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 12 textsize 11 resizable code0 {extern Fl_Menu_Item fontmenu[];} code1 {o->menu(fontmenu);} } {} Fl_Button {} { user_data {&Node_Browser::label_color} callback cb_Color_Chip xywh {271 112 51 20} labelsize 12 } Fl_Menu_Button {} { user_data {&Node_Browser::label_color} callback cb_Color_Choice open xywh {322 112 18 20} labelsize 12 code0 {extern Fl_Menu_Item colormenu[];} code1 {o->menu(colormenu);} } {} } Fl_Group {} { label {Class:} callback propagate_load open xywh {110 137 230 20} labelfont 1 labelsize 12 align 4 } { Fl_Choice {} { user_data {&Node_Browser::class_font} callback cb_Comments open xywh {110 137 161 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 12 textsize 11 resizable code0 {extern Fl_Menu_Item fontmenu[];} code1 {o->menu(fontmenu);} } {} Fl_Button {} { user_data {&Node_Browser::class_color} callback cb_Color_Chip xywh {271 137 51 20} labelsize 12 } Fl_Menu_Button {} { user_data {&Node_Browser::class_color} callback cb_Color_Choice open xywh {322 137 18 20} labelsize 12 code0 {extern Fl_Menu_Item colormenu[];} code1 {o->menu(colormenu);} } {} } Fl_Group {} { label {Function:} callback propagate_load open xywh {110 162 230 20} labelfont 1 labelsize 12 align 4 } { Fl_Choice {} { user_data {&Node_Browser::func_font} callback cb_Comments open xywh {110 162 161 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 12 textsize 11 resizable code0 {extern Fl_Menu_Item fontmenu[];} code1 {o->menu(fontmenu);} } {} Fl_Button {} { user_data {&Node_Browser::func_color} callback cb_Color_Chip xywh {271 162 51 20} labelsize 12 } Fl_Menu_Button {} { user_data {&Node_Browser::func_color} callback cb_Color_Choice open xywh {322 162 18 20} labelsize 12 code0 {extern Fl_Menu_Item colormenu[];} code1 {o->menu(colormenu);} } {} } Fl_Group {} { label {Name:} callback propagate_load open xywh {110 187 230 20} labelfont 1 labelsize 12 align 4 } { Fl_Choice {} { user_data {&Node_Browser::name_font} callback cb_Comments open xywh {110 187 161 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 12 textsize 11 resizable code0 {extern Fl_Menu_Item fontmenu[];} code1 {o->menu(fontmenu);} } {} Fl_Button {} { user_data {&Node_Browser::name_color} callback cb_Color_Chip xywh {271 187 51 20} labelsize 12 } Fl_Menu_Button {} { user_data {&Node_Browser::name_color} callback cb_Color_Choice open xywh {322 187 18 20} labelsize 12 code0 {extern Fl_Menu_Item colormenu[];} code1 {o->menu(colormenu);} } {} } Fl_Group {} { label {Code:} callback propagate_load open xywh {110 212 230 20} labelfont 1 labelsize 12 align 4 } { Fl_Choice {} { user_data {&Node_Browser::code_font} callback cb_Comments open xywh {110 212 161 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 12 textsize 11 resizable code0 {extern Fl_Menu_Item fontmenu[];} code1 {o->menu(fontmenu);} } {} Fl_Button {} { user_data {&Node_Browser::code_color} callback cb_Color_Chip xywh {271 212 51 20} labelsize 12 } Fl_Menu_Button {} { user_data {&Node_Browser::code_color} callback cb_Color_Choice open xywh {322 212 18 20} labelsize 12 code0 {extern Fl_Menu_Item colormenu[];} code1 {o->menu(colormenu);} } {} } Fl_Group {} { label {Comments:} callback propagate_load open xywh {110 237 230 20} labelfont 1 labelsize 12 align 4 } { Fl_Choice w_settings_user_commenttext { user_data {&Node_Browser::comment_font} callback cb_Comments open xywh {110 237 161 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 12 textsize 11 resizable code0 {extern Fl_Menu_Item fontmenu[];} code1 {o->menu(fontmenu);} } {} Fl_Button {} { user_data {&Node_Browser::comment_color} callback cb_Color_Chip xywh {271 237 51 20} labelsize 12 } Fl_Menu_Button {} { user_data {&Node_Browser::comment_color} callback cb_Color_Choice open xywh {322 237 18 20} labelsize 12 code0 {extern Fl_Menu_Item colormenu[];} code1 {o->menu(colormenu);} } {} } Fl_Box {} { xywh {110 530 230 10} hide resizable } Fl_Button {} { label Reset callback {if (v == LOAD) return; Node_Browser::label_color = 72; Node_Browser::label_font = FL_HELVETICA; Node_Browser::class_color = FL_FOREGROUND_COLOR; Node_Browser::class_font = FL_HELVETICA_BOLD; Node_Browser::func_color = FL_FOREGROUND_COLOR; Node_Browser::func_font = FL_HELVETICA; Node_Browser::name_color = FL_FOREGROUND_COLOR; Node_Browser::name_font = FL_HELVETICA; Node_Browser::code_color = FL_FOREGROUND_COLOR; Node_Browser::code_font = FL_HELVETICA; Node_Browser::comment_color = FL_DARK_GREEN; Node_Browser::comment_font = FL_DARK_GREEN; o->parent()->do_callback(o->parent(), LOAD); widget_browser->redraw(); widget_browser->save_prefs();} xywh {251 269 77 22} labelsize 12 } } } Fl_Group {} {open xywh {10 550 340 25} } { Fl_Button {} { label Close callback {if (g_shell_config) g_shell_config->write(Fluid.preferences, FLD_TOOL_STORE_USER); Fluid.layout_list.write(Fluid.preferences, FLD_TOOL_STORE_USER); settings_window->hide();} tooltip {Close this dialog.} xywh {230 550 120 25} } Fl_Box {} { xywh {220 550 10 25} 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 {880 548 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.preferences, "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 }