9ca4aed1fa
* this commit introduces a few FIXMEs and TODOs that probably can't be solved until we do some major refactoring. They work for now, but adding more layout controlling widgets will be hard.
1608 lines
55 KiB
Plaintext
1608 lines
55 KiB
Plaintext
# data file for the Fltk User Interface Designer (fluid)
|
|
version 1.0400
|
|
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 "fluid.h"} {public global
|
|
}
|
|
|
|
decl {\#include "undo.h"} {private global
|
|
}
|
|
|
|
decl {\#include "widget_browser.h"} {public global
|
|
}
|
|
|
|
decl {\#include "Fd_Snap_Action.h"} {public global
|
|
}
|
|
|
|
decl {\#include "shell_command.h"} {public global
|
|
}
|
|
|
|
decl {\#include <FL/Fl_Text_Buffer.H>} {public local
|
|
}
|
|
|
|
decl {\#include <FL/Fl_Text_Display.H>} {public local
|
|
}
|
|
|
|
decl {\#include "fluid_filename.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 <string.h>} {private global
|
|
}
|
|
|
|
decl {\#include "../src/flstring.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 {make_script_panel()} {open selected
|
|
} {
|
|
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 {} {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 {} {
|
|
label General open
|
|
image {icons/general_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 resizable
|
|
code0 {o->image()->scale(36, 24);}
|
|
} {
|
|
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 Low Contrast Groups Ghosted}
|
|
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
|
|
image {icons/document_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 hide
|
|
code0 {o->image()->scale(36, 24);}
|
|
} {
|
|
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
|
|
image {icons/layout_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 hide
|
|
code0 {o->image()->scale(36, 24);}
|
|
} {
|
|
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;
|
|
|
|
Fl_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
|
|
|
|
Fl_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");
|
|
Fl_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 {Margin:}
|
|
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 {Margin:}
|
|
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 {Margin:}
|
|
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
|
|
image {icons/shell_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 hide
|
|
code0 {o->image()->scale(36, 24);}
|
|
} {
|
|
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());
|
|
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->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());
|
|
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;
|
|
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 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 {MS 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 220 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 220 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 497 220 20} 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
|
|
image {icons/language_64.png} compress_image 1 xywh {10 60 320 480} labelsize 11 hide
|
|
code0 {o->image()->scale(36, 24);}
|
|
} {
|
|
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 {File:}
|
|
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 {} {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 585 555 430} type Double align 80 resizable visible
|
|
} {
|
|
Fl_Simple_Terminal shell_run_terminal {
|
|
xywh {10 10 535 375} resizable
|
|
code0 {shell_run_terminal->ansi(1);}
|
|
}
|
|
Fl_Group {} {open
|
|
xywh {10 395 535 25}
|
|
} {
|
|
Fl_Button {} {
|
|
label Clear
|
|
callback {shell_run_terminal->clear();}
|
|
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
|
|
}
|