diff options
| author | Matthias Melcher <github@matthiasm.com> | 2025-03-07 16:34:35 +0100 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2025-03-07 16:34:48 +0100 |
| commit | 1985aefc0e502048f92b91beef87c0dfbe669fed (patch) | |
| tree | af62874def4590e437a47784b4428d975ceb262f /fluid/panels/settings_panel.fl | |
| parent | 42a04c064d4b31c3a85210311f3ada163c406a25 (diff) | |
Restructuring Fluid source files.
Diffstat (limited to 'fluid/panels/settings_panel.fl')
| -rw-r--r-- | fluid/panels/settings_panel.fl | 1883 |
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 +} |
