diff options
| author | Matthias Melcher <github@matthiasm.com> | 2025-03-16 17:16:12 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-16 17:16:12 -0400 |
| commit | 51a55bc73660f64e8f4b32b8b4d3858f2a786f7b (patch) | |
| tree | 122ad9f838fcf8f61ed7cf5fa031e8ed69817e10 /fluid/panels/widget_panel.cxx | |
| parent | 13a7073a1e007ce5b71ef70bced1a9b15158820d (diff) | |
Fluid: restructuring and rejuvenation of the source code.
* Add classes for application and project
* Removed all globals from Fluid.h
* Extracting args and project history into their own classes
* Moving globals into Application class
* Initialize values inside headers for some classes.
* Undo functionality wrapped in a class inside Project.
* File reader and writer are now linked to a project.
* Avoid global project access
* Nodes (former Types) will be managed by a new Tree class.
* Removed static members (hidden globals) form Node/Fl_Type.
* Adding Tree iterator.
* Use nullptr instead of 0, NULL, or 0L
* Renamed Fl_..._Type to ..._Node, FL_OVERRIDE -> override
* Renaming ..._type to ...::prototype
* Splitting Widget Panel into multiple files.
* Moved callback code into widget panel file.
* Cleaning up Fluid_Image -> Image_asset
* Moving Fd_Snap_Action into new namespace fld::app::Snap_Action etc.
* Moved mergeback into proj folder.
* `enum ID` is now `enum class Type`.
Diffstat (limited to 'fluid/panels/widget_panel.cxx')
| -rw-r--r-- | fluid/panels/widget_panel.cxx | 2680 |
1 files changed, 1696 insertions, 984 deletions
diff --git a/fluid/panels/widget_panel.cxx b/fluid/panels/widget_panel.cxx index df903d4a2..61b480f36 100644 --- a/fluid/panels/widget_panel.cxx +++ b/fluid/panels/widget_panel.cxx @@ -17,11 +17,32 @@ // generated by Fast Light User Interface Designer (fluid) version 1.0500 #include "widget_panel.h" -#include "app/undo.h" -#include "nodes/Fl_Widget_Type.h" -#include "nodes/Fl_Grid_Type.h" +#include "Fluid.h" +#include "app/Snap_Action.h" +#include "app/Image_Asset.h" +#include "proj/undo.h" +#include "nodes/Window_Node.h" +#include "nodes/Grid_Node.h" +#include <FL/Fl_Spinner.H> #include <FL/Fl_Grid.H> -extern void set_modflag(int mf, int mfc=-1); +#include <FL/Fl_Flex.H> +#include <FL/fl_ask.H> +#include <FL/Fl_Menu_Item.H> +#define ZERO_ENTRY 1000 +extern const char* when_symbol_name(int n); +extern void set_whenmenu(int n); +extern void redraw_browser(); +const char *c_check(const char *c, int type=0); +extern Fl_Color fl_show_colormap(Fl_Color oldcol); +extern void labelcolor_common(Fl_Color c); +extern void color_common(Fl_Color c); +extern void color2_common(Fl_Color c); +extern void textcolor_common(Fl_Color c); +extern int widget_i; +extern fld::widget::Formula_Input_Vars widget_vars[]; +extern int numselected; +extern Fl_Menu_Item boxmenu[]; +extern int haderror; Fl_Double_Window *image_panel_window=(Fl_Double_Window *)0; @@ -56,14 +77,14 @@ fld::widget::Formula_Input *image_panel_imagew=(fld::widget::Formula_Input *)0; static void cb_image_panel_imagew(fld::widget::Formula_Input* o, void* v) { if (v == LOAD) { - if (current_widget->is_widget() && !current_widget->is_a(ID_Window)) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) { o->value(current_widget->scale_image_w_); } } else { int mod = 0; - for (Fl_Type *t = Fl_Type::first; t; t = t->next) { + for (Node *t = Fluid.proj.tree.first; t; t = t->next) { if (t->selected && t->is_widget()) { - Fl_Widget_Type* wt = ((Fl_Widget_Type*)t); + Widget_Node* wt = ((Widget_Node*)t); wt->scale_image_w_ = o->value(); Fl_Image *img = wt->o->image(); if (img) { @@ -78,7 +99,7 @@ static void cb_image_panel_imagew(fld::widget::Formula_Input* o, void* v) { mod = 1; } } - if (mod) set_modflag(1); + if (mod) Fluid.proj.set_modflag(1); } } @@ -86,14 +107,14 @@ fld::widget::Formula_Input *image_panel_imageh=(fld::widget::Formula_Input *)0; static void cb_image_panel_imageh(fld::widget::Formula_Input* o, void* v) { if (v == LOAD) { - if (current_widget->is_widget() && !current_widget->is_a(ID_Window)) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) { o->value(current_widget->scale_image_h_); } } else { int mod = 0; - for (Fl_Type *t = Fl_Type::first; t; t = t->next) { + for (Node *t = Fluid.proj.tree.first; t; t = t->next) { if (t->selected && t->is_widget()) { - Fl_Widget_Type* wt = ((Fl_Widget_Type*)t); + Widget_Node* wt = ((Widget_Node*)t); wt->scale_image_h_ = o->value(); Fl_Image *img = wt->o->image(); if (img) { @@ -108,7 +129,7 @@ static void cb_image_panel_imageh(fld::widget::Formula_Input* o, void* v) { mod = 1; } } - if (mod) set_modflag(1); + if (mod) Fluid.proj.set_modflag(1); } } @@ -121,6 +142,42 @@ static void cb_Reset(Fl_Button*, void* v) { } } +static void cb_convert(Fl_Check_Button* o, void* v) { + if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) { + o->activate(); + o->value(!current_widget->compress_image_); + } else { + o->deactivate(); + } + } else { + int mod = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->compress_image_ = !o->value(); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + } +} + +static void cb_bind(Fl_Check_Button* o, void* v) { + if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) { + o->activate(); + o->value(current_widget->bind_image_); + } else { + o->deactivate(); + } + } else { + int mod = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->bind_image_ = o->value(); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + } +} + Fl_Group *image_panel_deimagegroup=(Fl_Group *)0; Fl_Box *image_panel_dedata=(Fl_Box *)0; @@ -148,14 +205,14 @@ fld::widget::Formula_Input *image_panel_deimagew=(fld::widget::Formula_Input *)0 static void cb_image_panel_deimagew(fld::widget::Formula_Input* o, void* v) { if (v == LOAD) { - if (current_widget->is_widget() && !current_widget->is_a(ID_Window)) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) { o->value(current_widget->scale_deimage_w_); } } else { int mod = 0; - for (Fl_Type *t = Fl_Type::first; t; t = t->next) { + for (Node *t = Fluid.proj.tree.first; t; t = t->next) { if (t->selected && t->is_widget()) { - Fl_Widget_Type* wt = ((Fl_Widget_Type*)t); + Widget_Node* wt = ((Widget_Node*)t); wt->scale_deimage_w_ = o->value(); Fl_Image *img = wt->o->deimage(); if (img) { @@ -170,7 +227,7 @@ static void cb_image_panel_deimagew(fld::widget::Formula_Input* o, void* v) { mod = 1; } } - if (mod) set_modflag(1); + if (mod) Fluid.proj.set_modflag(1); } } @@ -178,14 +235,14 @@ fld::widget::Formula_Input *image_panel_deimageh=(fld::widget::Formula_Input *)0 static void cb_image_panel_deimageh(fld::widget::Formula_Input* o, void* v) { if (v == LOAD) { - if (current_widget->is_widget() && !current_widget->is_a(ID_Window)) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) { o->value(current_widget->scale_deimage_h_); } } else { int mod = 0; - for (Fl_Type *t = Fl_Type::first; t; t = t->next) { + for (Node *t = Fluid.proj.tree.first; t; t = t->next) { if (t->selected && t->is_widget()) { - Fl_Widget_Type* wt = ((Fl_Widget_Type*)t); + Widget_Node* wt = ((Widget_Node*)t); wt->scale_deimage_h_ = o->value(); Fl_Image *img = wt->o->deimage(); if (img) { @@ -200,7 +257,7 @@ static void cb_image_panel_deimageh(fld::widget::Formula_Input* o, void* v) { mod = 1; } } - if (mod) set_modflag(1); + if (mod) Fluid.proj.set_modflag(1); } } @@ -213,6 +270,42 @@ static void cb_Reset1(Fl_Button*, void* v) { } } +static void cb_convert1(Fl_Check_Button* o, void* v) { + if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) { + o->activate(); + o->value(!current_widget->compress_deimage_); + } else { + o->deactivate(); + } + } else { + int mod = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->compress_deimage_ = !o->value(); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + } +} + +static void cb_bind1(Fl_Check_Button* o, void* v) { + if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) { + o->activate(); + o->value(current_widget->bind_deimage_); + } else { + o->deactivate(); + } + } else { + int mod = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->bind_deimage_ = o->value(); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + } +} + Fl_Button *image_panel_close=(Fl_Button *)0; static void cb_image_panel_close(Fl_Button*, void* v) { @@ -291,13 +384,13 @@ Fl_Double_Window* make_image_panel() { "ixel data"); o->down_box(FL_DOWN_BOX); o->labelsize(11); - o->callback((Fl_Callback*)compress_image_cb); + o->callback((Fl_Callback*)cb_convert); } // Fl_Check_Button* o { Fl_Check_Button* o = new Fl_Check_Button(75, 120, 170, 20, "bind to widget"); o->tooltip("bind the image to the widget, so it will be deleted automatically"); o->down_box(FL_DOWN_BOX); o->labelsize(11); - o->callback((Fl_Callback*)bind_image_cb); + o->callback((Fl_Callback*)cb_bind); o->window()->hotspot(o); } // Fl_Check_Button* o image_panel_imagegroup->end(); @@ -367,13 +460,13 @@ Fl_Double_Window* make_image_panel() { "ixel data"); o->down_box(FL_DOWN_BOX); o->labelsize(11); - o->callback((Fl_Callback*)compress_deimage_cb); + o->callback((Fl_Callback*)cb_convert1); } // Fl_Check_Button* o { Fl_Check_Button* o = new Fl_Check_Button(75, 260, 170, 20, "bind to widget"); o->tooltip("bind the image to the widget, so it will be deleted automatically"); o->down_box(FL_DOWN_BOX); o->labelsize(11); - o->callback((Fl_Callback*)bind_deimage_cb); + o->callback((Fl_Callback*)cb_bind1); } // Fl_Check_Button* o image_panel_deimagegroup->end(); } // Fl_Group* image_panel_deimagegroup @@ -405,7 +498,29 @@ void run_image_panel() { Fl_Shared_Image *img = (Fl_Shared_Image*)image_panel_data->user_data(); if (img) { img->release(); - image_panel_data->user_data(NULL); + image_panel_data->user_data(nullptr); + } +} + +void flex_margin_cb(Fl_Value_Input* i, void* v, void (*load_margin)(Fl_Flex*,Fl_Value_Input*), int (*update_margin)(Fl_Flex*,int)) { + if (v == LOAD) { + if (current_widget->is_a(Type::Flex)) { + load_margin((Fl_Flex*)current_widget->o, i); + } + } else { + int mod = 0; + int new_value = (int)i->value(); + for (Node *o = Fluid.proj.tree.first; o; o = o->next) { + if (o->selected && o->is_a(Type::Flex)) { + Flex_Node* q = (Flex_Node*)o; + Fl_Flex* w = (Fl_Flex*)q->o; + if (update_margin(w, new_value)) { + w->layout(); + mod = 1; + } + } + } + if (mod) Fluid.proj.set_modflag(1); } } @@ -421,6 +536,42 @@ Fl_Input *wp_gui_label=(Fl_Input *)0; Fl_Input *widget_image_input=(Fl_Input *)0; +static void cb_widget_image_input(Fl_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) { + o->activate(); + o->value(((Widget_Node*)current_widget)->image_name()); + } else o->deactivate(); + } else { + int mod = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->image_name(o->value()); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + } +} + +static void cb_Browse(Fl_Button* o, void* v) { + if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) + o->activate(); + else + o->deactivate(); + } else { + int mod = 0; + Image_Asset *image_asset = ui_find_image(widget_image_input->value()); + if (image_asset) { + widget_image_input->value(image_asset->filename()); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->image_name(image_asset->filename()); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + } + } +} + static void cb_(Fl_Button*, void* v) { if (v != LOAD) { run_image_panel(); @@ -429,6 +580,42 @@ static void cb_(Fl_Button*, void* v) { Fl_Input *widget_deimage_input=(Fl_Input *)0; +static void cb_widget_deimage_input(Fl_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) { + o->activate(); + o->value(((Widget_Node*)current_widget)->inactive_name()); + } else o->deactivate(); + } else { + int mod = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->inactive_name(o->value()); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + } +} + +static void cb_Browse1(Fl_Button* o, void* v) { + if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) + o->activate(); + else + o->deactivate(); + } else { + int mod = 0; + Image_Asset *image_asset = ui_find_image(widget_deimage_input->value()); + if (image_asset) { + widget_deimage_input->value(image_asset->filename()); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->inactive_name(image_asset->filename()); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + } + } +} + Fl_Group *wp_gui_alignment=(Fl_Group *)0; Fl_Menu_Item menu_[] = { @@ -462,12 +649,151 @@ Fl_Menu_Item menu_1[] = { fld::widget::Formula_Input *widget_x_input=(fld::widget::Formula_Input *)0; +static void cb_widget_x_input(fld::widget::Formula_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_true_widget()) { + o->value(((Widget_Node *)current_widget)->o->x()); + o->activate(); + } else o->deactivate(); + } else { + Fluid.proj.undo.checkpoint(); + widget_i = 0; + int mod = 0; + int v = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_true_widget()) { + Fl_Widget *w = q->o; + o->variables(widget_vars, q); + v = o->value(); + w->resize(v, w->y(), w->w(), w->h()); + if (w->window()) w->window()->redraw(); + widget_i++; + mod = 1; + } + } + if (mod) { + Fluid.proj.set_modflag(1); + o->value(v); // change the displayed value to the result of the last + // calculation. Keep the formula if it was not used. + } + } +} + fld::widget::Formula_Input *widget_y_input=(fld::widget::Formula_Input *)0; +static void cb_widget_y_input(fld::widget::Formula_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_true_widget()) { + o->value(((Widget_Node *)current_widget)->o->y()); + o->activate(); + } else o->deactivate(); + } else { + Fluid.proj.undo.checkpoint(); + widget_i = 0; + int mod = 0; + int v = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_true_widget()) { + Fl_Widget *w = q->o; + o->variables(widget_vars, q); + v = o->value(); + w->resize(w->x(), v, w->w(), w->h()); + if (w->window()) w->window()->redraw(); + widget_i++; + mod = 1; + } + } + if (mod) { + Fluid.proj.set_modflag(1); + o->value(v); + } + } +} + fld::widget::Formula_Input *widget_w_input=(fld::widget::Formula_Input *)0; +static void cb_widget_w_input(fld::widget::Formula_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_true_widget()) { + o->value(((Widget_Node *)current_widget)->o->w()); + o->activate(); + } else o->deactivate(); + } else { + Fluid.proj.undo.checkpoint(); + widget_i = 0; + int mod = 0; + int v = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_true_widget()) { + Fl_Widget *w = q->o; + o->variables(widget_vars, q); + v = o->value(); + w->resize(w->x(), w->y(), v, w->h()); + if (w->window()) w->window()->redraw(); + widget_i++; + mod = 1; + } + } + if (mod) { + Fluid.proj.set_modflag(1); + o->value(v); + } + } +} + fld::widget::Formula_Input *widget_h_input=(fld::widget::Formula_Input *)0; +static void cb_widget_h_input(fld::widget::Formula_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_true_widget()) { + o->value(((Widget_Node *)current_widget)->o->h()); + o->activate(); + } else o->deactivate(); + } else { + Fluid.proj.undo.checkpoint(); + widget_i = 0; + int mod = 0; + int v = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_true_widget()) { + Fl_Widget *w = q->o; + o->variables(widget_vars, q); + v = o->value(); + w->resize(w->x(), w->y(), w->w(), v); + if (w->window()) w->window()->redraw(); + widget_i++; + mod = 1; + } + } + if (mod) { + Fluid.proj.set_modflag(1); + o->value(v); + } + } +} + +static void cb_Children(Fl_Choice* o, void* v) { + if (v == LOAD) { + if (current_widget->is_a(Type::Widget_Class)) { + o->show(); + o->value(((Widget_Class_Node *)current_widget)->wc_relative); + } else { + o->hide(); + } + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Widget_Class)) { + Widget_Class_Node *t = (Widget_Class_Node *)q; + t->wc_relative = o->value(); + mod = 1; + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} + Fl_Menu_Item menu_Children[] = { {"Fixed", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, {"Reposition", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, @@ -477,519 +803,1421 @@ Fl_Menu_Item menu_Children[] = { Fl_Group *wp_gui_flexp=(Fl_Group *)0; -Fl_Value_Input *widget_flex_size=(Fl_Value_Input *)0; - -Fl_Check_Button *widget_flex_fixed=(Fl_Check_Button *)0; - -Fl_Group *wp_gui_values=(Fl_Group *)0; - -Fl_Group *wp_gui_margins=(Fl_Group *)0; - -Fl_Group *wp_gui_sizerange=(Fl_Group *)0; - -Fl_Shortcut_Button *wp_gui_shortcut=(Fl_Shortcut_Button *)0; - -Fl_Group *wp_gui_xclass=(Fl_Group *)0; - -Fl_Group *wp_gui_attributes=(Fl_Group *)0; - -Fl_Input *wp_gui_tooltip=(Fl_Input *)0; - -Fl_Group *wp_style_tab=(Fl_Group *)0; +static void cb_wp_gui_flexp(Fl_Group* o, void* v) { + if (v == LOAD) { + if (Flex_Node::parent_is_flex(current_widget)) { + o->show(); + propagate_load(o, v); + } else { + o->hide(); + } + } +} -Fl_Group *wp_style_label=(Fl_Group *)0; +Fl_Value_Input *widget_flex_size=(Fl_Value_Input *)0; -Fl_Button *w_labelcolor=(Fl_Button *)0; +static void cb_widget_flex_size(Fl_Value_Input* o, void* v) { + if (v == LOAD) { + if (Flex_Node::parent_is_flex(current_widget)) { + o->value(Flex_Node::size(current_widget)); + } + } else { + int mod = 0; + int new_size = (int)o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (Flex_Node::parent_is_flex(q)) { + Fl_Widget* w = (Fl_Widget*)q->o; + Fl_Flex* f = (Fl_Flex*)((Flex_Node*)q->parent)->o; + int was_fixed = f->fixed(w); + if (new_size==0) { + if (was_fixed) { + f->fixed(w, 0); + f->layout(); + widget_flex_fixed->value(0); + mod = 1; + } + } else { + int old_size = Flex_Node::size(q); + if (old_size!=new_size || !was_fixed) { + f->fixed(w, new_size); + f->layout(); + widget_flex_fixed->value(1); + mod = 1; + } + } + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -Fl_Group *wp_style_box=(Fl_Group *)0; +Fl_Check_Button *widget_flex_fixed=(Fl_Check_Button *)0; -Fl_Button *w_color=(Fl_Button *)0; +static void cb_widget_flex_fixed(Fl_Check_Button* o, void* v) { + if (v == LOAD) { + if (Flex_Node::parent_is_flex(current_widget)) { + o->value(Flex_Node::is_fixed(current_widget)); + } + } else { + int mod = 0; + int new_fixed = (int)o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (Flex_Node::parent_is_flex(q)) { + Fl_Widget* w = q->o; + Fl_Flex* f = (Fl_Flex*)((Flex_Node*)q->parent)->o; + int was_fixed = f->fixed(w); + if (new_fixed==0) { + if (was_fixed) { + f->fixed(w, 0); + f->layout(); + mod = 1; + } + } else { + if (!was_fixed) { + f->fixed(w, Flex_Node::size(q)); + f->layout(); + mod = 1; + } + } + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -Fl_Group *wp_style_downbox=(Fl_Group *)0; +Fl_Group *wp_gui_values=(Fl_Group *)0; -Fl_Button *w_selectcolor=(Fl_Button *)0; +static void cb_wp_gui_values(Fl_Group* o, void* v) { + if (v == LOAD) { + if ( current_widget->is_a(Type::Flex) + || current_widget->is_a(Type::Grid) + || current_widget->is_a(Type::Window)) + { + o->hide(); + } else { + o->show(); + propagate_load(o, v); + } + } +} -Fl_Group *wp_style_text=(Fl_Group *)0; +static void cb_Size(Fl_Value_Input* o, void* v) { + if (v == LOAD) { + if (!current_widget->is_a(Type::Slider)) {o->deactivate(); return;} + o->activate(); + o->value(((Fl_Slider*)(current_widget->o))->slider_size()); + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + double n = o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Slider)) { + ((Fl_Slider*)(q->o))->slider_size(n); + q->o->redraw(); + mod = 1; + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -Fl_Button *w_textcolor=(Fl_Button *)0; +static void cb_Minimum(Fl_Value_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_a(Type::Valuator_)) { + o->activate(); + o->value(((Fl_Valuator*)(current_widget->o))->minimum()); + } else if (current_widget->is_a(Type::Spinner)) { + o->activate(); + o->value(((Fl_Spinner*)(current_widget->o))->minimum()); + } else { + o->deactivate(); + return; + } + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + double n = o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Valuator_)) { + ((Fl_Valuator*)(q->o))->minimum(n); + q->o->redraw(); + mod = 1; + } else if (q->is_a(Type::Spinner)) { + ((Fl_Spinner*)(q->o))->minimum(n); + q->o->redraw(); + mod = 1; + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -Fl_Group *wp_cpp_tab=(Fl_Group *)0; +static void cb_Maximum(Fl_Value_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_a(Type::Valuator_)) { + o->activate(); + o->value(((Fl_Valuator*)(current_widget->o))->maximum()); + } else if (current_widget->is_a(Type::Spinner)) { + o->activate(); + o->value(((Fl_Spinner*)(current_widget->o))->maximum()); + } else { + o->deactivate(); + return; + } + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + double n = o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Valuator_)) { + ((Fl_Valuator*)(q->o))->maximum(n); + q->o->redraw(); + mod = 1; + } else if (q->is_a(Type::Spinner)) { + ((Fl_Spinner*)(q->o))->maximum(n); + q->o->redraw(); + mod = 1; + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -Fl_Group *wp_cpp_class=(Fl_Group *)0; +static void cb_Step(Fl_Value_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_a(Type::Valuator_)) { + o->activate(); + o->value(((Fl_Valuator*)(current_widget->o))->step()); + } else if (current_widget->is_a(Type::Spinner)) { + o->activate(); + o->value(((Fl_Spinner*)(current_widget->o))->step()); + } else { + o->deactivate(); + return; + } + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + double n = o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Valuator_)) { + ((Fl_Valuator*)(q->o))->step(n); + q->o->redraw(); + mod = 1; + } else if (q->is_a(Type::Spinner)) { + ((Fl_Spinner*)(q->o))->step(n); + q->o->redraw(); + mod = 1; + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -Fl_Group *wp_cpp_name=(Fl_Group *)0; +static void cb_Value(Fl_Value_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_a(Type::Valuator_)) { + o->activate(); + o->value(((Fl_Valuator*)(current_widget->o))->value()); + } else if (current_widget->is_button()) { + o->activate(); + o->value(((Fl_Button*)(current_widget->o))->value()); + } else if (current_widget->is_a(Type::Spinner)) { + o->activate(); + o->value(((Fl_Spinner*)(current_widget->o))->value()); + } else + o->deactivate(); + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + double n = o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Valuator_)) { + ((Fl_Valuator*)(q->o))->value(n); + mod = 1; + } else if (q->is_button()) { + ((Fl_Button*)(q->o))->value(n != 0); + if (q->is_a(Type::Menu_Item)) q->redraw(); + mod = 1; + } else if (q->is_a(Type::Spinner)) { + ((Fl_Spinner*)(q->o))->value(n); + mod = 1; + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -Fl_Menu_Item menu_2[] = { - {"private", 0, 0, (void*)(0), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {"public", 0, 0, (void*)(1), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {"protected", 0, 0, (void*)(2), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {0,0,0,0,0,0,0,0,0} -}; +Fl_Group *wp_gui_margins=(Fl_Group *)0; -Fl_Menu_Item menu_3[] = { - {"local", 0, 0, (void*)(0), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {"global", 0, 0, (void*)(1), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {0,0,0,0,0,0,0,0,0} -}; +static void cb_wp_gui_margins(Fl_Group* o, void* v) { + if (v == LOAD) { + if (current_widget->is_a(Type::Flex)) { + o->show(); + propagate_load(o, v); + } else { + o->hide(); + } + } +} -Fl_Input *v_input[4]={(Fl_Input *)0}; +static void cb_Left(Fl_Value_Input* o, void* v) { + flex_margin_cb(o, v, + [](Fl_Flex *w, Fl_Value_Input* i) -> void + { + int v; + w->margin(&v, nullptr, nullptr, nullptr); + i->value((double)v); + }, + [](Fl_Flex *w, int new_value) -> int + { + int l, t, r, b; + w->margin(&l, &t, &r, &b); + if (new_value!=l) { + w->margin(new_value, t, r, b); + return 1; + } else { + return 0; + } + } + ); +} -static void cb_1(Fl_Tile*, void* v) { - wComment->do_callback(wComment, v); - wCallback->do_callback(wCallback, v); +static void cb_Top(Fl_Value_Input* o, void* v) { + flex_margin_cb(o, v, + [](Fl_Flex *w, Fl_Value_Input* i) -> void + { + int v; + w->margin(nullptr, &v, nullptr, nullptr); + i->value((double)v); + }, + [](Fl_Flex *w, int new_value) + { + int l, t, r, b; + w->margin(&l, &t, &r, &b); + if (new_value!=t) { + w->margin(l, new_value, r, b); + return 1; + } else { + return 0; + } + } + ); } -Fl_Text_Editor *wComment=(Fl_Text_Editor *)0; +static void cb_Right(Fl_Value_Input* o, void* v) { + flex_margin_cb(o, v, + [](Fl_Flex *w, Fl_Value_Input* i) -> void + { + int v; + w->margin(nullptr, nullptr, &v, nullptr); + i->value((double)v); + }, + [](Fl_Flex *w, int new_value) -> int + { + int l, t, r, b; + w->margin(&l, &t, &r, &b); + if (new_value!=r) { + w->margin(l, t, new_value, b); + return 1; + } else { + return 0; + } + } + ); +} -fld::widget::Code_Editor *wCallback=(fld::widget::Code_Editor *)0; +static void cb_Bottom(Fl_Value_Input* o, void* v) { + flex_margin_cb(o, v, + [](Fl_Flex *w, Fl_Value_Input* i) -> void + { + int v; + w->margin(nullptr, nullptr, nullptr, &v); + i->value((double)v); + }, + [](Fl_Flex *w, int new_value) -> int + { + int l, t, r, b; + w->margin(&l, &t, &r, &b); + if (new_value!=b) { + w->margin(l, t, r, new_value); + return 1; + } else { + return 0; + } + } + ); +} -Fl_Group *wp_cpp_callback=(Fl_Group *)0; +static void cb_Gap(Fl_Value_Input* o, void* v) { + flex_margin_cb(o, v, + [](Fl_Flex *w, Fl_Value_Input* o) -> void + { + int v = w->gap(); + o->value((double)v); + }, + [](Fl_Flex *w, int new_value) -> int + { + int g = w->gap(); + if (new_value!=g) { + w->gap(new_value); + return 1; + } else { + return 0; + } + } + ); +} -Fl_Menu_Item menu_4[] = { - {"void*", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 4, 11, 0}, - {"long", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 4, 11, 0}, - {0,0,0,0,0,0,0,0,0} -}; +Fl_Group *wp_gui_sizerange=(Fl_Group *)0; -Fl_Box *w_when_box=(Fl_Box *)0; +static void cb_wp_gui_sizerange(Fl_Group* o, void* v) { + if (v == LOAD) { + if (current_widget->is_a(Type::Window)) { + o->show(); + propagate_load(o, v); + } else { + o->hide(); + } + } +} -Fl_Group *widget_tab_grid_child=(Fl_Group *)0; +static void cb_Minimum1(Fl_Value_Input* o, void* v) { + if (v == LOAD) { + if (!current_widget->is_a(Type::Window)) return; + o->value(((Window_Node*)current_widget)->sr_min_w); + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + int n = (int)o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Window)) { + ((Window_Node*)q)->sr_min_w = n; + mod = 1; + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -fld::widget::Formula_Input *widget_grid_row_input=(fld::widget::Formula_Input *)0; +static void cb_1(Fl_Value_Input* o, void* v) { + if (v == LOAD) { + if (!current_widget->is_a(Type::Window)) return; + o->value(((Window_Node*)current_widget)->sr_min_h); + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + int n = (int)o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Window)) { + ((Window_Node*)q)->sr_min_h = n; + mod = 1; + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -fld::widget::Formula_Input *widget_grid_col_input=(fld::widget::Formula_Input *)0; +static void cb_set(Fl_Button* o, void* v) { + if (v == LOAD) { + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Window)) { + Window_Node *win = (Window_Node*)q; + win->sr_min_w = win->o->w(); + win->sr_min_h = win->o->h(); + mod = 1; + } + } + propagate_load(the_panel, LOAD); + if (mod) Fluid.proj.set_modflag(1); + } +} -Fl_Box *widget_grid_transient=(Fl_Box *)0; +static void cb_Maximum1(Fl_Value_Input* o, void* v) { + if (v == LOAD) { + if (!current_widget->is_a(Type::Window)) return; + o->value(((Window_Node*)current_widget)->sr_max_w); + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + int n = (int)o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Window)) { + ((Window_Node*)q)->sr_max_w = n; + mod = 1; + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -static void cb_widget_grid_transient(Fl_Box* o, void* v) { - if (v==LOAD) { - Fl_Widget *child = ((Fl_Widget_Type*)current_widget)->o; - Fl_Grid_Proxy *g = ((Fl_Grid_Proxy*)((Fl_Widget_Type*)current_widget->parent)->o); - // Fl_Grid::Cell *cell = g->cell(child); - // Fl_Grid::Cell *tcell = g->transient_cell(child); - widget_grid_transient->hide(); - widget_grid_unlinked->hide(); - if (g->transient_cell(child)) { - widget_grid_transient->show(); - } else if (!g->cell(child)) { - widget_grid_unlinked->show(); +static void cb_2(Fl_Value_Input* o, void* v) { + if (v == LOAD) { + if (!current_widget->is_a(Type::Window)) return; + o->value(((Window_Node*)current_widget)->sr_max_h); + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + int n = (int)o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Window)) { + ((Window_Node*)q)->sr_max_h = n; + mod = 1; + } } + if (mod) Fluid.proj.set_modflag(1); } } -Fl_Box *widget_grid_unlinked=(Fl_Box *)0; +static void cb_set1(Fl_Button* o, void* v) { + if (v == LOAD) { + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Window)) { + Window_Node *win = (Window_Node*)q; + win->sr_max_w = win->o->w(); + win->sr_max_h = win->o->h(); + mod = 1; + } + } + propagate_load(the_panel, LOAD); + if (mod) Fluid.proj.set_modflag(1); + } +} -Fl_Group *wp_gridc_align=(Fl_Group *)0; +Fl_Shortcut_Button *wp_gui_shortcut=(Fl_Shortcut_Button *)0; -Fl_Menu_Item menu_Horizontal[] = { - {"GRID_LEFT", 0, 0, (void*)((fl_intptr_t)FL_GRID_LEFT), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {"GRID_CENTER", 0, 0, (void*)((fl_intptr_t)FL_GRID_CENTER), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {"GRID_RIGHT", 0, 0, (void*)((fl_intptr_t)FL_GRID_RIGHT), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {"GRID_FILL", 0, 0, (void*)((fl_intptr_t)FL_GRID_HORIZONTAL), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {0,0,0,0,0,0,0,0,0} -}; +static void cb_wp_gui_shortcut(Fl_Shortcut_Button* o, void* v) { + if (v == LOAD) { + if (current_widget->is_button()) + o->value( ((Fl_Button*)(current_widget->o))->shortcut() ); + else if (current_widget->is_a(Type::Input)) + o->value( ((Fl_Input_*)(current_widget->o))->shortcut() ); + else if (current_widget->is_a(Type::Value_Input)) + o->value( ((Fl_Value_Input*)(current_widget->o))->shortcut() ); + else if (current_widget->is_a(Type::Text_Display)) + o->value( ((Fl_Text_Display*)(current_widget->o))->shortcut() ); + else { + o->hide(); + o->parent()->hide(); + return; + } + //i->default_value( i->value() ); // enable the "undo" capability of the shortcut button + o->show(); + o->parent()->show(); + o->redraw(); + } else { + int mod = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) + if (q->is_button()) { + Fl_Button* b = (Fl_Button*)(q->o); + if (b->shortcut() != (int)o->value()) mod = 1; + b->shortcut(o->value()); + if (q->is_a(Type::Menu_Item)) q->redraw(); + } else if (q->is_a(Type::Input)) { + Fl_Input_* b = (Fl_Input_*)(q->o); + if (b->shortcut() != (int)o->value()) mod = 1; + b->shortcut(o->value()); + } else if (q->is_a(Type::Value_Input)) { + Fl_Value_Input* b = (Fl_Value_Input*)(q->o); + if (b->shortcut() != (int)o->value()) mod = 1; + b->shortcut(o->value()); + } else if (q->is_a(Type::Text_Display)) { + Fl_Text_Display* b = (Fl_Text_Display*)(q->o); + if (b->shortcut() != (int)o->value()) mod = 1; + b->shortcut(o->value()); + } + if (mod) Fluid.proj.set_modflag(1); + } +} -Fl_Menu_Item menu_Vertical[] = { - {"GRID_TOP", 0, 0, (void*)((fl_intptr_t)FL_GRID_TOP), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {"GRID_CENTER", 0, 0, (void*)((fl_intptr_t)FL_GRID_CENTER), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {"GRID_BOTTOM", 0, 0, (void*)((fl_intptr_t)FL_GRID_BOTTOM), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {"GRID_FILL", 0, 0, (void*)((fl_intptr_t)FL_GRID_VERTICAL), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {0,0,0,0,0,0,0,0,0} -}; +Fl_Group *wp_gui_xclass=(Fl_Group *)0; -Fl_Group *wp_gridc_size=(Fl_Group *)0; +static void cb_3(Fl_Input* o, void* v) { + if (v == LOAD) { + if (current_widget->is_a(Type::Window)) { + o->show(); + o->parent()->show(); + o->value(((Window_Node *)current_widget)->xclass); + } else { + o->hide(); + o->parent()->hide(); // hides the "X Class:" label as well + } + } else { + int mod = 0; + Fluid.proj.undo.checkpoint(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Window)) { + mod = 1; + Window_Node *wt = (Window_Node *)q; + storestring(o->value(), wt->xclass); + ((Fl_Window*)(wt->o))->xclass(wt->xclass); + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} -fld::widget::Formula_Input *widget_grid_rowspan_input=(fld::widget::Formula_Input *)0; +static void cb_Border(Fl_Light_Button* o, void* v) { + if (v == LOAD) { + if (!current_widget->is_a(Type::Window)) {o->hide(); return;} + o->show(); + o->value(((Fl_Window*)(current_widget->o))->border()); + } else { + Fluid.proj.undo.checkpoint(); + ((Fl_Window*)(current_widget->o))->border(o->value()); + Fluid.proj.set_modflag(1); + } +} -fld::widget::Formula_Input *widget_grid_colspan_input=(fld::widget::Formula_Input *)0; +static void cb_Modal(Fl_Light_Button* o, void* v) { + if (v == LOAD) { + if (!current_widget->is_a(Type::Window)) {o->hide(); return;} + o->show(); + o->value(((Window_Node *)current_widget)->modal); + } else { + Fluid.proj.undo.checkpoint(); + ((Window_Node *)current_widget)->modal = o->value(); + Fluid.proj.set_modflag(1); + } +} -Fl_Group *widget_tab_grid=(Fl_Group *)0; +static void cb_Nonmodal(Fl_Light_Button* o, void* v) { + if (v == LOAD) { + if (!current_widget->is_a(Type::Window)) {o->hide(); return;} + o->show(); + o->value(((Window_Node *)current_widget)->non_modal); + } else { + Fluid.proj.undo.checkpoint(); + ((Window_Node *)current_widget)->non_modal = o->value(); + Fluid.proj.set_modflag(1); + } +} -fld::widget::Formula_Input *widget_grid_rows=(fld::widget::Formula_Input *)0; +Fl_Group *wp_gui_attributes=(Fl_Group *)0; -static void cb_widget_grid_rows(fld::widget::Formula_Input* o, void* v) { - // grid_rows_cb - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; +static void cb_Visible(Fl_Light_Button* o, void* v) { if (v == LOAD) { - o->value(grid->rows()); + o->value(current_widget->o->visible()); + if (current_widget->is_a(Type::Window)) o->deactivate(); + else o->activate(); } else { - int m = o->value(), old_m = grid->rows(); - if (m < 1) { - m = 1; - o->value(m); + int mod = 0; + int n = o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (!mod) { + mod = 1; + Fluid.proj.undo.checkpoint(); + } + n ? q->o->show() : q->o->hide(); + q->redraw(); + if (n && q->parent && q->parent->type_name()) { + if (q->parent->is_a(Type::Tabs)) { + ((Fl_Tabs *)q->o->parent())->value(q->o); + } else if (q->parent->is_a(Type::Wizard)) { + ((Fl_Wizard *)q->o->parent())->value(q->o); + } + } } - if (m < old_m) { - // TODO: verify that this will not unlink existings cells - // Offer a dialog with "delete children", "unlink cells", "cancel" + if (mod) { + Fluid.proj.set_modflag(1); + redraw_browser(); } - if (m != old_m) { - undo_checkpoint(); - grid->layout(m, grid->cols()); - grid->need_layout(true); - set_modflag(1); - widget_tab_grid->do_callback(widget_tab_grid, LOAD); + } +} + +static void cb_Active(Fl_Light_Button* o, void* v) { + if (v == LOAD) { + o->value(current_widget->o->active()); + if (current_widget->is_a(Type::Window)) o->deactivate(); + else o->activate(); + } else { + int mod = 0; + int n = o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (!mod) { + mod = 1; + Fluid.proj.undo.checkpoint(); + } + n ? q->o->activate() : q->o->deactivate(); + q->redraw(); } + if (mod) Fluid.proj.set_modflag(1); } } -static void cb_2(Fl_Button*, void* v) { - if (v != LOAD) { - widget_grid_rows->value( widget_grid_rows->value()-1 ); - widget_grid_rows->do_callback(); +static void cb_Resizable(Fl_Light_Button* o, void* v) { + if (v == LOAD) { + if (current_widget->is_a(Type::Menu_Item)) {o->deactivate(); return;} + if (numselected > 1) {o->deactivate(); return;} + o->activate(); + o->value(current_widget->resizable()); + } else { + Fluid.proj.undo.checkpoint(); + current_widget->resizable(o->value()); + Fluid.proj.set_modflag(1); } } -static void cb_3(Fl_Button*, void* v) { - if (v != LOAD) { - widget_grid_rows->value( widget_grid_rows->value()+1 ); - widget_grid_rows->do_callback(); +static void cb_Hotspot(Fl_Light_Button* o, void* v) { + if (v == LOAD) { + if (numselected > 1) {o->deactivate(); return;} + if (current_widget->is_a(Type::Menu_Item)) o->label("divider"); + else o->label("hotspot"); + o->activate(); + o->value(current_widget->hotspot()); + } else { + Fluid.proj.undo.checkpoint(); + current_widget->hotspot(o->value()); + if (current_widget->is_a(Type::Menu_Item)) { + current_widget->redraw(); + return; + } + if (o->value()) { + Node *p = current_widget->parent; + if (!p || !p->is_widget()) return; + while (!p->is_a(Type::Window)) p = p->parent; + for (Node *q = p->next; q && q->level > p->level; q = q->next) { + if (q->is_widget() && q != current_widget) + ((Widget_Node*)q)->hotspot(0); + } + } + Fluid.proj.set_modflag(1); } } -fld::widget::Formula_Input *widget_grid_cols=(fld::widget::Formula_Input *)0; +Fl_Input *wp_gui_tooltip=(Fl_Input *)0; -static void cb_widget_grid_cols(fld::widget::Formula_Input* o, void* v) { - // grid_rows_cb - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; +static void cb_wp_gui_tooltip(Fl_Input* o, void* v) { if (v == LOAD) { - o->value(grid->cols()); + if (current_widget->is_widget()) { + o->activate(); + o->value(((Widget_Node*)current_widget)->tooltip()); + } else { + o->deactivate(); + } } else { - int m = o->value(), old_m = grid->cols(); - if (m < 1) { - m = 1; - o->value(m); + int mod = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->tooltip(o->value()); + mod = 1; } - if (m < old_m) { - // TODO: verify that this will not unlink existings cells - // Offer a dialog with "delete children", "unlink cells", "cancel" + if (mod) Fluid.proj.set_modflag(1); + } +} + +Fl_Group *wp_style_tab=(Fl_Group *)0; + +Fl_Group *wp_style_label=(Fl_Group *)0; + +static void cb_4(Fl_Choice* o, void* v) { + if (v == LOAD) { + int n = current_widget->o->labelfont(); + if (n > 15) n = 0; + o->value(n); + } else { + int mod = 0; + int n = o->value(); + if (n <= 0) n = Fluid.proj.layout->labelfont; + if (n <= 0) n = FL_HELVETICA; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->o->labelfont(n); + q->redraw(); + mod = 1; } - if (m != old_m) { - undo_checkpoint(); - grid->layout(grid->rows(), m); - grid->need_layout(true); - set_modflag(1); - widget_tab_grid->do_callback(widget_tab_grid, LOAD); + if (mod) Fluid.proj.set_modflag(1); + } +} + +static void cb_5(Fl_Value_Input* o, void* v) { + int n; + if (v == LOAD) { + n = current_widget->o->labelsize(); + } else { + int mod = 0; + n = int(o->value()); + if (n <= 0) n = Fluid.proj.layout->labelsize; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->o->labelsize(n); + q->redraw(); + mod = 1; } + if (mod) Fluid.proj.set_modflag(1); } + o->value(n); } -static void cb_4(Fl_Button*, void* v) { +Fl_Button *w_labelcolor=(Fl_Button *)0; + +static void cb_w_labelcolor(Fl_Button* o, void* v) { + Fl_Color c = current_widget->o->labelcolor(); if (v != LOAD) { - widget_grid_cols->value( widget_grid_cols->value()-1 ); - widget_grid_cols->do_callback(); + Fl_Color d = fl_show_colormap(c); + if (d == c) return; + c = d; + labelcolor_common(c); } + o->color(c); + o->labelcolor(fl_contrast(FL_BLACK,c)); + o->redraw(); } -static void cb_5(Fl_Button*, void* v) { +static void cb_6(Fl_Menu_Button* o, void* v) { + Fl_Color c = current_widget->o->labelcolor(); if (v != LOAD) { - widget_grid_cols->value( widget_grid_cols->value()+1 ); - widget_grid_cols->do_callback(); + Fl_Color d = (Fl_Color)(o->mvalue()->argument()); + if (d == c) return; + c = d; + labelcolor_common(c); + w_labelcolor->color(c); + w_labelcolor->labelcolor(fl_contrast(FL_BLACK,c)); + w_labelcolor->redraw(); } } -Fl_Group *wp_grid_margin=(Fl_Group *)0; +Fl_Group *wp_style_box=(Fl_Group *)0; -static void cb_Left(Fl_Value_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int m = 0; +static void cb_7(Fl_Choice* o, void* v) { if (v == LOAD) { - grid->margin(&m, NULL, NULL, NULL); - o->value(m); + if (current_widget->is_a(Type::Menu_Item)) {o->deactivate(); return;} else o->activate(); + int n = current_widget->o->box(); + if (!n) n = ZERO_ENTRY; + for (int j = 0; j < 72 /*int(sizeof(boxmenu)/sizeof(*boxmenu))*/; j++) + if (boxmenu[j].argument() == n) {o->value(j); break;} } else { - int m = (int)o->value(), old_m; - grid->margin(&old_m, NULL, NULL, NULL); - if (m != old_m) { - undo_checkpoint(); - grid->margin(m, -1, -1, -1); - grid->need_layout(true); - set_modflag(1); + int mod = 0; + int m = o->value(); + int n = int(boxmenu[m].argument()); + if (!n) return; // should not happen + if (n == ZERO_ENTRY) n = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->o->box((Fl_Boxtype)n); + q->redraw(); + mod = 1; } + if (mod) Fluid.proj.set_modflag(1); } } -static void cb_Top(Fl_Value_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int m = 0; +Fl_Button *w_color=(Fl_Button *)0; + +static void cb_w_color(Fl_Button* o, void* v) { + Fl_Color c = current_widget->o->color(); if (v == LOAD) { - grid->margin(NULL, &m, NULL, NULL); - o->value(m); - } else { - int m = (int)o->value(), old_m; - grid->margin(NULL, &old_m, NULL, NULL); - if (m != old_m) { - undo_checkpoint(); - grid->margin(-1, m, -1, -1); - grid->need_layout(true); - set_modflag(1); + if (current_widget->is_a(Type::Menu_Item)) { + o->deactivate(); + } else { + o->activate(); } + } else { + Fl_Color d = fl_show_colormap(c); + if (d == c) return; + c = d; + color_common(c); } + o->color(c); + o->labelcolor(fl_contrast(FL_BLACK,c)); + o->redraw(); } -static void cb_Right(Fl_Value_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int m = 0; +static void cb_8(Fl_Menu_Button* o, void* v) { + Fl_Color c = current_widget->o->color(); if (v == LOAD) { - grid->margin(NULL, NULL, &m, NULL); - o->value(m); + if (current_widget->is_a(Type::Menu_Item)) {o->deactivate(); return;} else o->activate(); } else { - int m = (int)o->value(), old_m; - grid->margin(NULL, NULL, &old_m, NULL); - if (m != old_m) { - undo_checkpoint(); - grid->margin(-1, -1, m, -1); - grid->need_layout(true); - set_modflag(1); - } + Fl_Color d = (Fl_Color)(o->mvalue()->argument()); + if (d == c) return; + c = d; + color_common(c); + w_color->color(c); + w_color->labelcolor(fl_contrast(FL_BLACK,c)); + w_color->redraw(); } } -static void cb_Bottom(Fl_Value_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int m = 0; +Fl_Group *wp_style_downbox=(Fl_Group *)0; + +static void cb_9(Fl_Choice* o, void* v) { if (v == LOAD) { - grid->margin(NULL, NULL, NULL, &m); - o->value(m); + int n; + if (current_widget->is_a(Type::Button)) + n = ((Fl_Button*)(current_widget->o))->down_box(); + else if (current_widget->is_a(Type::Input_Choice)) + n = ((Fl_Input_Choice*)(current_widget->o))->down_box(); + else if (current_widget->is_a(Type::Menu_Manager_)) + n = ((Fl_Menu_*)(current_widget->o))->down_box(); + else { + o->deactivate(); return; + } + o->activate(); + if (!n) n = ZERO_ENTRY; + for (int j = 0; j < 72 /*int(sizeof(boxmenu)/sizeof(*boxmenu))*/; j++) + if (boxmenu[j].argument() == n) {o->value(j); break;} } else { - int m = (int)o->value(), old_m; - grid->margin(NULL, NULL, NULL, &old_m); - if (m != old_m) { - undo_checkpoint(); - grid->margin(-1, -1, -1, m); - grid->need_layout(true); - set_modflag(1); + int mod = 0; + int m = o->value(); + int n = int(boxmenu[m].argument()); + if (!n) return; // should not happen + if (n == ZERO_ENTRY) n = 0; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Button)) { + ((Fl_Button*)(q->o))->down_box((Fl_Boxtype)n); + if (((Fl_Button*)(q->o))->value()) q->redraw(); + } else if (q->is_a(Type::Input_Choice)) { + ((Fl_Input_Choice*)(q->o))->down_box((Fl_Boxtype)n); + } else if (q->is_a(Type::Menu_Manager_)) { + ((Fl_Menu_*)(q->o))->down_box((Fl_Boxtype)n); + } + mod = 1; } + if (mod) Fluid.proj.set_modflag(1); } } -Fl_Group *wp_grid_gaps=(Fl_Group *)0; +Fl_Button *w_selectcolor=(Fl_Button *)0; -static void cb_Row(Fl_Value_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; +static void cb_w_selectcolor(Fl_Button* o, void* v) { + Fl_Color c = current_widget->o->selection_color(); if (v == LOAD) { - int m = 0; - grid->gap(&m, NULL); - o->value(m); + if (current_widget->is_a(Type::Menu_Item)) { + o->deactivate(); + return; + } else { + o->activate(); + } } else { - int m = (int)o->value(), old_m, m2; - grid->gap(&old_m, &m2); - if (m != old_m) { - undo_checkpoint(); - grid->gap(m, m2); - grid->need_layout(true); - set_modflag(1); + Fl_Color d = fl_show_colormap(c); + if (d == c) return; + c = d; + color2_common(c); + } + o->color(c); + o->labelcolor(fl_contrast(FL_BLACK,c)); + o->redraw(); +} + +static void cb_a(Fl_Menu_Button* o, void* v) { + Fl_Color c = current_widget->o->selection_color(); + if (v == LOAD) { + if (current_widget->is_a(Type::Menu_Item)) { + o->deactivate(); + return; + } else { + o->activate(); } + } else { + Fl_Color d = (Fl_Color)(o->mvalue()->argument()); + if (d == c) return; + c = d; + color2_common(c); + w_selectcolor->color(c); + w_selectcolor->labelcolor(fl_contrast(FL_BLACK,c)); + w_selectcolor->redraw(); } } -static void cb_Col(Fl_Value_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; +Fl_Group *wp_style_text=(Fl_Group *)0; + +static void cb_b(Fl_Choice* o, void* v) { + Fl_Font n; int s; Fl_Color c; if (v == LOAD) { - int m = 0; - grid->gap(NULL, &m); - o->value(m); + if (!current_widget->textstuff(0,n,s,c)) {o->deactivate(); return;} + o->activate(); + if (n > 15) n = FL_HELVETICA; + o->value(n); } else { - int m = (int)o->value(), old_m, m2; - grid->gap(&m2, &old_m); - if (m != old_m) { - undo_checkpoint(); - grid->gap(m2, m); - grid->need_layout(true); - set_modflag(1); + int mod = 0; + n = (Fl_Font)o->value(); + if (n <= 0) n = Fluid.proj.layout->textfont; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->textstuff(1,n,s,c); + q->o->redraw(); + mod = 1; } + if (mod) Fluid.proj.set_modflag(1); } } -static void cb_Row1(Fl_Group* o, void* v) { +static void cb_c(Fl_Value_Input* o, void* v) { + Fl_Font n; int s; Fl_Color c; if (v == LOAD) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (grid) - o->activate(); - else - o->deactivate(); - propagate_load(o, v); + if (!current_widget->textstuff(0,n,s,c)) {o->deactivate(); return;} + o->activate(); + } else { + int mod = 0; + s = int(o->value()); + if (s <= 0) s = Fluid.proj.layout->textsize; + if (s <= 0) s = Fluid.proj.layout->labelsize; + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->textstuff(2,n,s,c); + q->o->redraw(); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); } + o->value(s); } -fld::widget::Formula_Input *widget_grid_curr_row=(fld::widget::Formula_Input *)0; +Fl_Button *w_textcolor=(Fl_Button *)0; -static void cb_widget_grid_curr_row(fld::widget::Formula_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int r = o->value(), old_r = r; - if (r < 0) r = 0; - if (r >= grid->rows()) r = grid->rows()-1; - if (r != old_r) o->value(r); +static void cb_w_textcolor(Fl_Button* o, void* v) { + Fl_Font n; int s; Fl_Color c; if (v == LOAD) { - // will automatically propagate + if (!current_widget->textstuff(0,n,s,c)) { + o->deactivate(); + return; + } + o->activate(); } else { - widget_grid_curr_row_attributes->do_callback(widget_grid_curr_row_attributes, LOAD); + c = o->color(); + Fl_Color d = fl_show_colormap(c); + if (d == c) return; + c = d; + textcolor_common(c); } + o->color(c); + o->labelcolor(fl_contrast(FL_BLACK,c)); + o->redraw(); } -static void cb_6(Fl_Button*, void* v) { - if (v != LOAD) { - widget_grid_curr_row->value( widget_grid_curr_row->value()-1 ); - widget_grid_curr_row->do_callback(); +static void cb_d(Fl_Menu_Button* o, void* v) { + Fl_Font n; int s; Fl_Color c; + if (v == LOAD) { + if (!current_widget->textstuff(0,n,s,c)) { + o->deactivate(); + return; + } + o->activate(); + } else { + c = o->color(); + Fl_Color d = (Fl_Color)(o->mvalue()->argument()); + if (d == c) return; + c = d; + textcolor_common(c); + w_textcolor->color(c); + w_textcolor->labelcolor(fl_contrast(FL_BLACK,c)); + w_textcolor->redraw(); } } -static void cb_7(Fl_Button*, void* v) { - if (v != LOAD) { - widget_grid_curr_row->value( widget_grid_curr_row->value()+1 ); - widget_grid_curr_row->do_callback(); +static void cb_Horizontal(Fl_Value_Input* o, void* v) { + int s; + if (v == LOAD) { + if (!current_widget->is_true_widget()) { + o->deactivate(); + o->value(0); + } else { + o->activate(); + o->value(((Widget_Node*)current_widget)->o->horizontal_label_margin()); + } + } else { + int mod = 0; + s = int(o->value()); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_true_widget()) { + if (q->o->horizontal_label_margin() != s) { + q->o->horizontal_label_margin(s); + if (!(q->o->align() & FL_ALIGN_INSIDE) && q->o->window()) + q->o->window()->damage(FL_DAMAGE_EXPOSE); // outside labels + q->o->redraw(); + mod = 1; + } + } + } + if (mod) Fluid.proj.set_modflag(1); } } -Fl_Group *widget_grid_curr_row_attributes=(Fl_Group *)0; - -static void cb_Height(fld::widget::Formula_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int r = widget_grid_curr_row->value(); +static void cb_Vertical(Fl_Value_Input* o, void* v) { + int s; if (v == LOAD) { - o->value(grid->row_height(r)); + if (!current_widget->is_true_widget()) { + o->deactivate(); + o->value(0); + } else { + o->activate(); + o->value(((Widget_Node*)current_widget)->o->vertical_label_margin()); + } } else { - int h = o->value(), old_h = grid->row_height(r); - if (h < 0) h = 0; - if (h != old_h) { - undo_checkpoint(); - grid->row_height(r, h); - grid->need_layout(true); - set_modflag(1); + int mod = 0; + s = int(o->value()); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_true_widget()) { + if (q->o->vertical_label_margin() != s) { + q->o->vertical_label_margin(s); + if (!(q->o->align() & FL_ALIGN_INSIDE) && q->o->window()) + q->o->window()->damage(FL_DAMAGE_EXPOSE); // outside labels + q->o->redraw(); + mod = 1; + } + } } + if (mod) Fluid.proj.set_modflag(1); } } -static void cb_Weight(fld::widget::Formula_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int r = widget_grid_curr_row->value(); +static void cb_Image(Fl_Value_Input* o, void* v) { + int s; if (v == LOAD) { - o->value(grid->row_weight(r)); + if (!current_widget->is_true_widget()) { + o->deactivate(); + o->value(0); + } else { + o->activate(); + o->value(((Widget_Node*)current_widget)->o->label_image_spacing()); + } } else { - int h = o->value(), old_h = grid->row_weight(r); - if (h < 0) h = 0; - if (h != old_h) { - undo_checkpoint(); - grid->row_weight(r, h); - grid->need_layout(true); - set_modflag(1); + int mod = 0; + s = int(o->value()); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_true_widget()) { + if (q->o->label_image_spacing() != s) { + q->o->label_image_spacing(s); + if (!(q->o->align() & FL_ALIGN_INSIDE) && q->o->window()) + q->o->window()->damage(FL_DAMAGE_EXPOSE); // outside labels + q->o->redraw(); + mod = 1; + } + } } + if (mod) Fluid.proj.set_modflag(1); } } -static void cb_Gap(fld::widget::Formula_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int r = widget_grid_curr_row->value(); +static void cb_Compact(Fl_Light_Button* o, void* v) { if (v == LOAD) { - o->value(grid->row_gap(r)); + uchar n; + if (current_widget->is_a(Type::Button) && !current_widget->is_a(Type::Menu_Item)) { + n = ((Fl_Button*)(current_widget->o))->compact(); + o->value(n); + o->show(); + } else { + o->hide(); + } } else { - int h = o->value(), old_h = grid->row_gap(r); - if (h < -1) h = -1; - if (h != old_h) { - undo_checkpoint(); - grid->row_gap(r, h); - grid->need_layout(true); - set_modflag(1); + int mod = 0; + uchar n = (uchar)o->value(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->is_a(Type::Button) && !q->is_a(Type::Menu_Item)) { + uchar v = ((Fl_Button*)(q->o))->compact(); + if (n != v) { + if (!mod) { + mod = 1; + Fluid.proj.undo.checkpoint(); + } + ((Fl_Button*)(q->o))->compact(n); + q->redraw(); + } + } } + if (mod) Fluid.proj.set_modflag(1); } } -fld::widget::Formula_Input *widget_grid_curr_col=(fld::widget::Formula_Input *)0; +Fl_Group *wp_cpp_tab=(Fl_Group *)0; + +Fl_Group *wp_cpp_class=(Fl_Group *)0; -static void cb_widget_grid_curr_col(fld::widget::Formula_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int c = o->value(), old_c = c; - if (c < 0) c = 0; - if (c >= grid->cols()) c = grid->cols()-1; - if (c != old_c) o->value(c); +static void cb_e(Fl_Input* o, void* v) { if (v == LOAD) { - // will automatically propagate + if (current_widget->is_a(Type::Menu_Item)) { + o->deactivate(); + } else { + o->activate(); + o->value(current_widget->subclass()); + } + } else { + int mod = 0; + const char *c = o->value(); + for (Widget_Node *t: Fluid.proj.tree.all_selected_widgets()) { + t->subclass(c); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + } +} + +static void cb_f(Fl_Choice* o, void* v) { + static Fl_Menu_Item empty_type_menu[] = { + {"Normal",0,nullptr,(void*)nullptr}, + {nullptr}}; + + if (v == LOAD) { + Fl_Menu_Item* m = current_widget->subtypes(); + if (!m) { + o->menu(empty_type_menu); + o->value(0); + o->deactivate(); + } else { + o->menu(m); + int j; + for (j = 0;; j++) { + if (!m[j].text) {j = 0; break;} + if (current_widget->is_a(Type::Spinner)) { + if (m[j].argument() == ((Fl_Spinner*)current_widget->o)->type()) break; + } else { + if (m[j].argument() == current_widget->o->type()) break; + } + } + o->value(j); + o->activate(); + } + o->redraw(); + } else { + int mod = 0; + int n = int(o->mvalue()->argument()); + Fl_Menu_Item* m = current_widget->subtypes(); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + if (q->subtypes()==m) { + if (q->is_a(Type::Spinner)) + ((Fl_Spinner*)q->o)->type(n); + else if (q->is_a(Type::Flex)) + ((Flex_Node*)q)->change_subtype_to(n); + else + q->o->type(n); + q->redraw(); + mod = 1; + } + } + if (mod) Fluid.proj.set_modflag(1); + } +} + +Fl_Group *wp_cpp_name=(Fl_Group *)0; + +static void cb_10(Fl_Input* o, void* v) { + if (v == LOAD) { + static char buf[1024]; + if (numselected != 1) { + snprintf(buf, sizeof(buf), "Widget Properties (%d widgets)", numselected); + o->hide(); + } else { + o->value(current_widget->name()); + o->show(); + snprintf(buf, sizeof(buf), "%s Properties", current_widget->title()); + } + + the_panel->label(buf); + } else { + if (numselected == 1) { + current_widget->name(o->value()); + // I don't update window title, as it probably is being closed + // and wm2 (a window manager) barfs if you retitle and then + // hide a window: + // ((Fl_Window*)(o->parent()->parent()->parent()))->label(current_widget->title()); + } + } +} + +static void cb_11(Fl_Choice* o, void* v) { + if (v == LOAD) { + o->value(current_widget->public_); + if (current_widget->is_in_class()) o->show(); else o->hide(); } else { - widget_grid_curr_col_attributes->do_callback(widget_grid_curr_col_attributes, LOAD); + int mod = 0; + for (Widget_Node *w: Fluid.proj.tree.all_selected_widgets()) { + if (w->is_in_class()) { + w->public_ = o->value(); + } else { + // if this is not in a class, it can be only private or public + w->public_ = (o->value()>0); + } + mod = 1; + } + if (mod) { + Fluid.proj.set_modflag(1); + redraw_browser(); + } } } -static void cb_8(Fl_Button*, void* v) { - if (v != LOAD) { - widget_grid_curr_col->value( widget_grid_curr_col->value()-1 ); - widget_grid_curr_col->do_callback(); - } +Fl_Menu_Item menu_2[] = { + {"private", 0, 0, (void*)(0), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, + {"public", 0, 0, (void*)(1), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, + {"protected", 0, 0, (void*)(2), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, + {0,0,0,0,0,0,0,0,0} +}; + +Fl_Menu_Item menu_3[] = { + {"local", 0, 0, (void*)(0), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, + {"global", 0, 0, (void*)(1), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, + {0,0,0,0,0,0,0,0,0} +}; + +static void cb_v_input(Fl_Input* o, void* v) { + int n = fl_int(o->user_data()); + if (v == LOAD) { + o->value(current_widget->extra_code(n)); + } else { + int mod = 0; + const char *c = o->value(); + const char *d = c_check(c&&c[0]=='#' ? c+1 : c); + if (d) {fl_message("Error in %s: %s",o->label(),d); haderror = 1; return;} + for (Widget_Node *w: Fluid.proj.tree.all_selected_widgets()) { + w->extra_code(n,c); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + } } -static void cb_9(Fl_Button*, void* v) { - if (v != LOAD) { - widget_grid_curr_col->value( widget_grid_curr_col->value()+1 ); - widget_grid_curr_col->do_callback(); - } +static void cb_v_input1(Fl_Input* o, void* v) { + cb_v_input(o, v); } -Fl_Group *widget_grid_curr_col_attributes=(Fl_Group *)0; +static void cb_v_input2(Fl_Input* o, void* v) { + cb_v_input(o, v); +} + +Fl_Input *v_input[4]={(Fl_Input *)0}; + +static void cb_v_input3(Fl_Input* o, void* v) { + cb_v_input(o, v); +} + +static void cb_12(Fl_Tile*, void* v) { + wComment->do_callback(wComment, v); + wCallback->do_callback(wCallback, v); +} + +Fl_Text_Editor *wComment=(Fl_Text_Editor *)0; -static void cb_Width(fld::widget::Formula_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int c = widget_grid_curr_col->value(); +static void cb_wComment(Fl_Text_Editor* o, void* v) { if (v == LOAD) { - o->value(grid->col_width(c)); + const char *cmttext = current_widget->comment(); + o->buffer()->text( cmttext ? cmttext : "" ); + } else { + int mod = 0; + char *c = o->buffer()->text(); + for (Node *n: Fluid.proj.tree.all_selected_nodes()) { + n->comment(c); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + free(c); + } +} + +fld::widget::Code_Editor *wCallback=(fld::widget::Code_Editor *)0; + +static void cb_wCallback(fld::widget::Code_Editor* o, void* v) { + if (v == LOAD) { + const char *cbtext = current_widget->callback(); + o->buffer()->text( cbtext ? cbtext : "" ); + } else { + int mod = 0; + char *c = o->buffer()->text(); + const char *d = c_check(c); + if (d) { + fl_message("Error in callback: %s",d); + if (o->window()) o->window()->make_current(); + haderror = 1; + } + for (Node *n: Fluid.proj.tree.all_selected_nodes()) { + n->callback(c); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); + free(c); + } +} + +Fl_Group *wp_cpp_callback=(Fl_Group *)0; + +static void cb_13(Fl_Input* o, void* v) { + if (v == LOAD) { + o->value(current_widget->user_data()); } else { - int h = o->value(), old_h = grid->col_width(c); - if (h < 0) h = 0; - if (h != old_h) { - undo_checkpoint(); - grid->col_width(c, h); - grid->need_layout(true); - set_modflag(1); + int mod = 0; + const char *c = o->value(); + const char *d = c_check(c); + if (d) {fl_message("Error in user_data: %s",d); haderror = 1; return;} + for (Node *n: Fluid.proj.tree.all_selected_nodes()) { + n->user_data(c); + mod = 1; } + if (mod) Fluid.proj.set_modflag(1); } } -static void cb_Weight1(fld::widget::Formula_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int c = widget_grid_curr_col->value(); +static void cb_When(Fl_Menu_Button* o, void* v) { if (v == LOAD) { - o->value(grid->col_weight(c)); + if (current_widget->is_a(Type::Menu_Item)) {o->deactivate(); return;} else o->activate(); + int n = current_widget->o->when(); + set_whenmenu(n); + w_when_box->copy_label(when_symbol_name(n)); } else { - int h = o->value(), old_h = grid->col_weight(c); - if (h < 0) h = 0; - if (h != old_h) { - undo_checkpoint(); - grid->col_weight(c, h); - grid->need_layout(true); - set_modflag(1); + int mod = 0; + int n = 0; + if (o->mvalue() && ((o->mvalue()->flags & FL_MENU_TOGGLE) == 0) ) { + n = (int)o->mvalue()->argument(); + set_whenmenu(n); + } else { + if (whenmenu[0].value()) n |= FL_WHEN_CHANGED; + if (whenmenu[1].value()) n |= FL_WHEN_NOT_CHANGED; + if (whenmenu[2].value()) n |= FL_WHEN_RELEASE; + if (whenmenu[3].value()) n |= FL_WHEN_ENTER_KEY; + if (whenmenu[4].value()) n |= FL_WHEN_CLOSED; + } + w_when_box->copy_label(when_symbol_name(n)); + for (Widget_Node *q: Fluid.proj.tree.all_selected_widgets()) { + q->o->when(n); + mod = 1; } + if (mod) Fluid.proj.set_modflag(1); } } -static void cb_Gap1(fld::widget::Formula_Input* o, void* v) { - Fl_Grid *grid = Fl_Grid_Type::selected(); - if (!grid) return; - int c = widget_grid_curr_col->value(); +static void cb_14(Fl_Input_Choice* o, void* v) { + static const char *dflt = "void*"; if (v == LOAD) { - o->value(grid->col_gap(c)); + const char *c = current_widget->user_data_type(); + if (!c) c = dflt; + o->value(c); } else { - int h = o->value(), old_h = grid->col_gap(c); - if (h < -1) h = -1; - if (h != old_h) { - undo_checkpoint(); - grid->col_gap(c, h); - grid->need_layout(true); - set_modflag(1); + int mod = 0; + const char *c = o->value(); + const char *d = c_check(c); + if (!*c) o->value(dflt); + else if (!strcmp(c,dflt)) c = nullptr; + if (!d) { + if (c && *c && c[strlen(c)-1] != '*' && strcmp(c,"long")) + d = "must be pointer or long"; } + if (d) {fl_message("Error in type: %s",d); haderror = 1; return;} + for (Node *q: Fluid.proj.tree.all_selected_nodes()) { + q->user_data_type(c); + mod = 1; + } + if (mod) Fluid.proj.set_modflag(1); } } +Fl_Menu_Item menu_4[] = { + {"void*", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 4, 11, 0}, + {"long", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 4, 11, 0}, + {0,0,0,0,0,0,0,0,0} +}; + +Fl_Box *w_when_box=(Fl_Box *)0; + +Grid_Tab *widget_tab_grid=(Grid_Tab *)0; + +static void cb_widget_tab_grid(Grid_Tab* o, void*) { + o->callback((Fl_Callback*)propagate_load); +} + +Grid_Child_Tab *widget_tab_grid_child=(Grid_Child_Tab *)0; + +static void cb_widget_tab_grid_child(Grid_Child_Tab* o, void*) { + o->callback((Fl_Callback*)propagate_load); +} + Fl_Tabs *widget_tabs_repo=(Fl_Tabs *)0; Fl_Button *wLiveMode=(Fl_Button *)0; @@ -1053,13 +2281,13 @@ Fl_Double_Window* make_widget_panel() { widget_image_input->labelfont(1); widget_image_input->labelsize(11); widget_image_input->textsize(11); - widget_image_input->callback((Fl_Callback*)image_cb); + widget_image_input->callback((Fl_Callback*)cb_widget_image_input); Fl_Group::current()->resizable(widget_image_input); } // Fl_Input* widget_image_input { Fl_Button* o = new Fl_Button(295, 65, 89, 20, "Browse..."); o->tooltip("Click to choose the active image."); o->labelsize(11); - o->callback((Fl_Callback*)image_browse_cb); + o->callback((Fl_Callback*)cb_Browse); o->align(Fl_Align(256)); } // Fl_Button* o { Fl_Button* o = new Fl_Button(384, 65, 20, 20, "..."); @@ -1078,13 +2306,13 @@ Fl_Double_Window* make_widget_panel() { widget_deimage_input->labelfont(1); widget_deimage_input->labelsize(11); widget_deimage_input->textsize(11); - widget_deimage_input->callback((Fl_Callback*)inactive_cb); + widget_deimage_input->callback((Fl_Callback*)cb_widget_deimage_input); Fl_Group::current()->resizable(widget_deimage_input); } // Fl_Input* widget_deimage_input { Fl_Button* o = new Fl_Button(295, 90, 89, 20, "Browse..."); o->tooltip("Click to choose the inactive image."); o->labelsize(11); - o->callback((Fl_Callback*)inactive_browse_cb); + o->callback((Fl_Callback*)cb_Browse1); } // Fl_Button* o o->end(); } // Fl_Group* o @@ -1188,7 +2416,7 @@ Fl_Double_Window* make_widget_panel() { widget_x_input->labelsize(11); widget_x_input->labelcolor(FL_FOREGROUND_COLOR); widget_x_input->textsize(11); - widget_x_input->callback((Fl_Callback*)x_cb); + widget_x_input->callback((Fl_Callback*)cb_widget_x_input); widget_x_input->align(Fl_Align(FL_ALIGN_TOP_LEFT)); widget_x_input->when(FL_WHEN_RELEASE); } // fld::widget::Formula_Input* widget_x_input @@ -1203,7 +2431,7 @@ Fl_Double_Window* make_widget_panel() { widget_y_input->labelsize(11); widget_y_input->labelcolor(FL_FOREGROUND_COLOR); widget_y_input->textsize(11); - widget_y_input->callback((Fl_Callback*)y_cb); + widget_y_input->callback((Fl_Callback*)cb_widget_y_input); widget_y_input->align(Fl_Align(FL_ALIGN_TOP_LEFT)); widget_y_input->when(FL_WHEN_RELEASE); } // fld::widget::Formula_Input* widget_y_input @@ -1218,7 +2446,7 @@ Fl_Double_Window* make_widget_panel() { widget_w_input->labelsize(11); widget_w_input->labelcolor(FL_FOREGROUND_COLOR); widget_w_input->textsize(11); - widget_w_input->callback((Fl_Callback*)w_cb); + widget_w_input->callback((Fl_Callback*)cb_widget_w_input); widget_w_input->align(Fl_Align(FL_ALIGN_TOP_LEFT)); widget_w_input->when(FL_WHEN_RELEASE); } // fld::widget::Formula_Input* widget_w_input @@ -1233,7 +2461,7 @@ Fl_Double_Window* make_widget_panel() { widget_h_input->labelsize(11); widget_h_input->labelcolor(FL_FOREGROUND_COLOR); widget_h_input->textsize(11); - widget_h_input->callback((Fl_Callback*)h_cb); + widget_h_input->callback((Fl_Callback*)cb_widget_h_input); widget_h_input->align(Fl_Align(FL_ALIGN_TOP_LEFT)); widget_h_input->when(FL_WHEN_RELEASE); } // fld::widget::Formula_Input* widget_h_input @@ -1244,7 +2472,7 @@ Fl_Double_Window* make_widget_panel() { o->down_box(FL_BORDER_BOX); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)wc_relative_cb); + o->callback((Fl_Callback*)cb_Children); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->menu(menu_Children); } // Fl_Choice* o @@ -1258,21 +2486,21 @@ Fl_Double_Window* make_widget_panel() { wp_gui_flexp = new Fl_Group(95, 150, 314, 20, "Flex Parent:"); wp_gui_flexp->labelfont(1); wp_gui_flexp->labelsize(11); - wp_gui_flexp->callback((Fl_Callback*)flex_size_group_cb); + wp_gui_flexp->callback((Fl_Callback*)cb_wp_gui_flexp); wp_gui_flexp->align(Fl_Align(FL_ALIGN_LEFT)); wp_gui_flexp->hide(); { widget_flex_size = new Fl_Value_Input(95, 150, 55, 20, "Size:"); widget_flex_size->tooltip("Fixed Width or Height for a horizontal or vertical Fl_Flex Parent."); widget_flex_size->labelsize(11); widget_flex_size->textsize(11); - widget_flex_size->callback((Fl_Callback*)flex_size_cb); + widget_flex_size->callback((Fl_Callback*)cb_widget_flex_size); widget_flex_size->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* widget_flex_size { widget_flex_fixed = new Fl_Check_Button(155, 150, 55, 20, "fixed"); widget_flex_fixed->tooltip("If checked, the size of the widget stays fixed."); widget_flex_fixed->down_box(FL_DOWN_BOX); widget_flex_fixed->labelsize(11); - widget_flex_fixed->callback((Fl_Callback*)flex_fixed_cb); + widget_flex_fixed->callback((Fl_Callback*)cb_widget_flex_fixed); } // Fl_Check_Button* widget_flex_fixed { Fl_Box* o = new Fl_Box(398, 150, 1, 20); Fl_Group::current()->resizable(o); @@ -1282,20 +2510,20 @@ Fl_Double_Window* make_widget_panel() { { wp_gui_values = new Fl_Group(95, 185, 300, 20, "Values:"); wp_gui_values->labelfont(1); wp_gui_values->labelsize(11); - wp_gui_values->callback((Fl_Callback*)values_group_cb); + wp_gui_values->callback((Fl_Callback*)cb_wp_gui_values); wp_gui_values->align(Fl_Align(FL_ALIGN_LEFT)); { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Size:"); o->tooltip("The size of the slider."); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)slider_size_cb); + o->callback((Fl_Callback*)cb_Size); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20, "Minimum:"); o->tooltip("The minimum value of the widget."); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)min_cb); + o->callback((Fl_Callback*)cb_Minimum); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(215, 185, 55, 20, "Maximum:"); @@ -1303,21 +2531,21 @@ Fl_Double_Window* make_widget_panel() { o->labelsize(11); o->value(1); o->textsize(11); - o->callback((Fl_Callback*)max_cb); + o->callback((Fl_Callback*)cb_Maximum); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(275, 185, 55, 20, "Step:"); o->tooltip("The resolution of the widget value."); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)step_cb); + o->callback((Fl_Callback*)cb_Step); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(335, 185, 55, 20, "Value:"); o->tooltip("The current widget value."); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)value_cb); + o->callback((Fl_Callback*)cb_Value); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Box* o = new Fl_Box(395, 185, 0, 20); @@ -1329,42 +2557,42 @@ Fl_Double_Window* make_widget_panel() { wp_gui_margins = new Fl_Group(95, 185, 300, 20, "Margins:"); wp_gui_margins->labelfont(1); wp_gui_margins->labelsize(11); - wp_gui_margins->callback((Fl_Callback*)flex_margin_group_cb); + wp_gui_margins->callback((Fl_Callback*)cb_wp_gui_margins); wp_gui_margins->align(Fl_Align(FL_ALIGN_LEFT)); wp_gui_margins->hide(); { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Left:"); o->tooltip("Left margin in group."); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)flex_margin_left_cb); + o->callback((Fl_Callback*)cb_Left); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20, "Top:"); o->tooltip("Top margin in group."); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)flex_margin_top_cb); + o->callback((Fl_Callback*)cb_Top); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(215, 185, 55, 20, "Right:"); o->tooltip("Right margin in group."); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)flex_margin_right_cb); + o->callback((Fl_Callback*)cb_Right); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(275, 185, 55, 20, "Bottom:"); o->tooltip("Bottom margin in group."); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)flex_margin_bottom_cb); + o->callback((Fl_Callback*)cb_Bottom); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(335, 185, 55, 20, "Gap:"); o->tooltip("Gap between children."); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)flex_margin_gap_cb); + o->callback((Fl_Callback*)cb_Gap); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Box* o = new Fl_Box(395, 185, 0, 20); @@ -1375,7 +2603,7 @@ Fl_Double_Window* make_widget_panel() { { wp_gui_sizerange = new Fl_Group(95, 185, 300, 20, "Size Range:"); wp_gui_sizerange->labelfont(1); wp_gui_sizerange->labelsize(11); - wp_gui_sizerange->callback((Fl_Callback*)size_range_group_cb); + wp_gui_sizerange->callback((Fl_Callback*)cb_wp_gui_sizerange); wp_gui_sizerange->align(Fl_Align(FL_ALIGN_LEFT)); wp_gui_sizerange->hide(); { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Minimum Size:"); @@ -1384,7 +2612,7 @@ Fl_Double_Window* make_widget_panel() { o->maximum(2048); o->step(1); o->textsize(11); - o->callback((Fl_Callback*)min_w_cb); + o->callback((Fl_Callback*)cb_Minimum1); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20); @@ -1393,12 +2621,12 @@ Fl_Double_Window* make_widget_panel() { o->maximum(2048); o->step(1); o->textsize(11); - o->callback((Fl_Callback*)min_h_cb); + o->callback((Fl_Callback*)cb_1); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Button* o = new Fl_Button(215, 185, 25, 20, "set"); o->labelsize(11); - o->callback((Fl_Callback*)set_min_size_cb); + o->callback((Fl_Callback*)cb_set); } // Fl_Button* o { Fl_Value_Input* o = new Fl_Value_Input(245, 185, 55, 20, "Maximum Size:"); o->tooltip("The maximum value of the widget."); @@ -1406,7 +2634,7 @@ Fl_Double_Window* make_widget_panel() { o->maximum(2048); o->step(1); o->textsize(11); - o->callback((Fl_Callback*)max_w_cb); + o->callback((Fl_Callback*)cb_Maximum1); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(305, 185, 55, 20); @@ -1415,12 +2643,12 @@ Fl_Double_Window* make_widget_panel() { o->maximum(2048); o->step(1); o->textsize(11); - o->callback((Fl_Callback*)max_h_cb); + o->callback((Fl_Callback*)cb_2); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Button* o = new Fl_Button(365, 185, 25, 20, "set"); o->labelsize(11); - o->callback((Fl_Callback*)set_max_size_cb); + o->callback((Fl_Callback*)cb_set1); } // Fl_Button* o { Fl_Box* o = new Fl_Box(395, 185, 0, 20); Fl_Group::current()->resizable(o); @@ -1442,7 +2670,7 @@ Fl_Double_Window* make_widget_panel() { wp_gui_shortcut->labelfont(0); wp_gui_shortcut->labelsize(11); wp_gui_shortcut->labelcolor(FL_FOREGROUND_COLOR); - wp_gui_shortcut->callback((Fl_Callback*)shortcut_in_cb); + wp_gui_shortcut->callback((Fl_Callback*)cb_wp_gui_shortcut); wp_gui_shortcut->align(Fl_Align(FL_ALIGN_CENTER)); wp_gui_shortcut->when(FL_WHEN_CHANGED); } // Fl_Shortcut_Button* wp_gui_shortcut @@ -1458,26 +2686,26 @@ Fl_Double_Window* make_widget_panel() { o->labelfont(1); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)xclass_cb); + o->callback((Fl_Callback*)cb_3); Fl_Group::current()->resizable(o); } // Fl_Input* o { Fl_Light_Button* o = new Fl_Light_Button(195, 235, 60, 20, "Border"); o->tooltip("Add a border around the window."); o->selection_color((Fl_Color)1); o->labelsize(11); - o->callback((Fl_Callback*)border_cb); + o->callback((Fl_Callback*)cb_Border); } // Fl_Light_Button* o { Fl_Light_Button* o = new Fl_Light_Button(260, 235, 55, 20, "Modal"); o->tooltip("Make the window modal."); o->selection_color((Fl_Color)1); o->labelsize(11); - o->callback((Fl_Callback*)modal_cb); + o->callback((Fl_Callback*)cb_Modal); } // Fl_Light_Button* o { Fl_Light_Button* o = new Fl_Light_Button(320, 235, 75, 20, "Nonmodal"); o->tooltip("Make the window non-modal."); o->selection_color((Fl_Color)1); o->labelsize(11); - o->callback((Fl_Callback*)non_modal_cb); + o->callback((Fl_Callback*)cb_Nonmodal); o->align(Fl_Align(132|FL_ALIGN_INSIDE)); } // Fl_Light_Button* o wp_gui_xclass->end(); @@ -1491,26 +2719,26 @@ Fl_Double_Window* make_widget_panel() { o->tooltip("Show the widget."); o->selection_color((Fl_Color)1); o->labelsize(11); - o->callback((Fl_Callback*)visible_cb); + o->callback((Fl_Callback*)cb_Visible); } // Fl_Light_Button* o { Fl_Light_Button* o = new Fl_Light_Button(160, 260, 60, 20, "Active"); o->tooltip("Activate the widget."); o->selection_color((Fl_Color)1); o->labelsize(11); - o->callback((Fl_Callback*)active_cb); + o->callback((Fl_Callback*)cb_Active); } // Fl_Light_Button* o { Fl_Light_Button* o = new Fl_Light_Button(225, 260, 75, 20, "Resizable"); o->tooltip("Make the widget resizable."); o->selection_color((Fl_Color)1); o->labelsize(11); - o->callback((Fl_Callback*)resizable_cb); + o->callback((Fl_Callback*)cb_Resizable); o->when(FL_WHEN_CHANGED); } // Fl_Light_Button* o { Fl_Light_Button* o = new Fl_Light_Button(305, 260, 70, 20, "Hotspot"); o->tooltip("Center the window under this widget."); o->selection_color((Fl_Color)1); o->labelsize(11); - o->callback((Fl_Callback*)hotspot_cb); + o->callback((Fl_Callback*)cb_Hotspot); o->when(FL_WHEN_CHANGED); } // Fl_Light_Button* o { Fl_Box* o = new Fl_Box(395, 260, 0, 20); @@ -1524,7 +2752,7 @@ Fl_Double_Window* make_widget_panel() { wp_gui_tooltip->labelfont(1); wp_gui_tooltip->labelsize(11); wp_gui_tooltip->textsize(11); - wp_gui_tooltip->callback((Fl_Callback*)tooltip_cb); + wp_gui_tooltip->callback((Fl_Callback*)cb_wp_gui_tooltip); } // Fl_Input* wp_gui_tooltip { Fl_Box* o = new Fl_Box(95, 305, 300, 5); o->hide(); @@ -1550,7 +2778,7 @@ Fl_Double_Window* make_widget_panel() { o->labelfont(1); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)labelfont_cb); + o->callback((Fl_Callback*)cb_4); Fl_Group::current()->resizable(o); o->menu(fontmenu); } // Fl_Choice* o @@ -1561,15 +2789,15 @@ Fl_Double_Window* make_widget_panel() { o->step(1); o->value(14); o->textsize(11); - o->callback((Fl_Callback*)labelsize_cb); + o->callback((Fl_Callback*)cb_5); } // Fl_Value_Input* o { w_labelcolor = new Fl_Button(296, 40, 90, 20, "Label Color"); w_labelcolor->tooltip("The color of the label text."); w_labelcolor->labelsize(11); - w_labelcolor->callback((Fl_Callback*)labelcolor_cb); + w_labelcolor->callback((Fl_Callback*)cb_w_labelcolor); } // Fl_Button* w_labelcolor { Fl_Menu_Button* o = new Fl_Menu_Button(386, 40, 18, 20); - o->callback((Fl_Callback*)labelcolor_menu_cb); + o->callback((Fl_Callback*)cb_6); o->menu(colormenu); } // Fl_Menu_Button* o wp_style_label->end(); @@ -1586,17 +2814,17 @@ Fl_Double_Window* make_widget_panel() { o->labelfont(1); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)box_cb); + o->callback((Fl_Callback*)cb_7); Fl_Group::current()->resizable(o); o->menu(boxmenu); } // Fl_Choice* o { w_color = new Fl_Button(296, 65, 90, 20, "Color"); w_color->tooltip("The background color of the widget."); w_color->labelsize(11); - w_color->callback((Fl_Callback*)color_cb); + w_color->callback((Fl_Callback*)cb_w_color); } // Fl_Button* w_color { Fl_Menu_Button* o = new Fl_Menu_Button(386, 65, 18, 20); - o->callback((Fl_Callback*)color_menu_cb); + o->callback((Fl_Callback*)cb_8); o->menu(colormenu); } // Fl_Menu_Button* o wp_style_box->end(); @@ -1613,17 +2841,17 @@ Fl_Double_Window* make_widget_panel() { o->labelfont(1); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)down_box_cb); + o->callback((Fl_Callback*)cb_9); Fl_Group::current()->resizable(o); o->menu(boxmenu); } // Fl_Choice* o { w_selectcolor = new Fl_Button(296, 90, 90, 20, "Select Color"); w_selectcolor->tooltip("The selection color of the widget."); w_selectcolor->labelsize(11); - w_selectcolor->callback((Fl_Callback*)color2_cb); + w_selectcolor->callback((Fl_Callback*)cb_w_selectcolor); } // Fl_Button* w_selectcolor { Fl_Menu_Button* o = new Fl_Menu_Button(386, 90, 18, 20); - o->callback((Fl_Callback*)color2_menu_cb); + o->callback((Fl_Callback*)cb_a); o->menu(colormenu); } // Fl_Menu_Button* o wp_style_downbox->end(); @@ -1640,7 +2868,7 @@ Fl_Double_Window* make_widget_panel() { o->labelfont(1); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)textfont_cb); + o->callback((Fl_Callback*)cb_b); Fl_Group::current()->resizable(o); o->menu(fontmenu); } // Fl_Choice* o @@ -1651,15 +2879,15 @@ Fl_Double_Window* make_widget_panel() { o->step(1); o->value(14); o->textsize(11); - o->callback((Fl_Callback*)textsize_cb); + o->callback((Fl_Callback*)cb_c); } // Fl_Value_Input* o { w_textcolor = new Fl_Button(296, 115, 90, 20, "Text Color"); w_textcolor->tooltip("The value text color."); w_textcolor->labelsize(11); - w_textcolor->callback((Fl_Callback*)textcolor_cb); + w_textcolor->callback((Fl_Callback*)cb_w_textcolor); } // Fl_Button* w_textcolor { Fl_Menu_Button* o = new Fl_Menu_Button(386, 115, 18, 20); - o->callback((Fl_Callback*)textcolor_menu_cb); + o->callback((Fl_Callback*)cb_d); o->menu(colormenu); } // Fl_Menu_Button* o wp_style_text->end(); @@ -1676,7 +2904,7 @@ Fl_Double_Window* make_widget_panel() { o->maximum(128); o->step(1); o->textsize(11); - o->callback((Fl_Callback*)h_label_margin_cb); + o->callback((Fl_Callback*)cb_Horizontal); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Value_Input* o = new Fl_Value_Input(159, 150, 55, 20, "Vertical:"); @@ -1686,16 +2914,16 @@ Fl_Double_Window* make_widget_panel() { o->maximum(127); o->step(1); o->textsize(11); - o->callback((Fl_Callback*)v_label_margin_cb); + o->callback((Fl_Callback*)cb_Vertical); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o - { Fl_Value_Input* o = new Fl_Value_Input(219, 150, 55, 20, "Text to Image:"); + { Fl_Value_Input* o = new Fl_Value_Input(219, 150, 55, 20, "Image Gap:"); o->tooltip("Gap between label image and text in pixels"); o->labelsize(11); o->maximum(255); o->step(1); o->textsize(11); - o->callback((Fl_Callback*)image_spacing_cb); + o->callback((Fl_Callback*)cb_Image); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Value_Input* o { Fl_Box* o = new Fl_Box(281, 150, 60, 20); @@ -1709,7 +2937,7 @@ Fl_Double_Window* make_widget_panel() { o->tooltip("use compact box types for closely set buttons"); o->selection_color((Fl_Color)1); o->labelsize(11); - o->callback((Fl_Callback*)compact_cb); + o->callback((Fl_Callback*)cb_Compact); } // Fl_Light_Button* o { Fl_Box* o = new Fl_Box(195, 205, 40, 40); o->labelsize(11); @@ -1733,7 +2961,7 @@ Fl_Double_Window* make_widget_panel() { o->labelsize(11); o->textfont(4); o->textsize(11); - o->callback((Fl_Callback*)subclass_cb, (void*)(4)); + o->callback((Fl_Callback*)cb_e, (void*)(4)); Fl_Group::current()->resizable(o); } // Fl_Input* o { Fl_Choice* o = new Fl_Choice(267, 40, 138, 20); @@ -1742,7 +2970,7 @@ Fl_Double_Window* make_widget_panel() { o->down_box(FL_BORDER_BOX); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)subtype_cb); + o->callback((Fl_Callback*)cb_f); } // Fl_Choice* o wp_cpp_class->end(); } // Fl_Group* wp_cpp_class @@ -1756,7 +2984,7 @@ Fl_Double_Window* make_widget_panel() { o->labelfont(1); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)name_cb); + o->callback((Fl_Callback*)cb_10); Fl_Group::current()->resizable(o); } // Fl_Input* o { Fl_Choice* o = new Fl_Choice(330, 65, 75, 20); @@ -1764,7 +2992,7 @@ Fl_Double_Window* make_widget_panel() { o->down_box(FL_BORDER_BOX); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)name_public_member_cb); + o->callback((Fl_Callback*)cb_11); o->when(FL_WHEN_CHANGED); o->menu(menu_2); } // Fl_Choice* o @@ -1786,31 +3014,31 @@ Fl_Double_Window* make_widget_panel() { v_input[0]->labelsize(11); v_input[0]->textfont(4); v_input[0]->textsize(11); - v_input[0]->callback((Fl_Callback*)v_input_cb, (void*)(0)); + v_input[0]->callback((Fl_Callback*)cb_v_input, (void*)(0)); } // Fl_Input* v_input[0] { v_input[1] = new Fl_Input(95, 110, 310, 20); v_input[1]->tooltip("Extra initialization code for the widget."); v_input[1]->labelsize(11); v_input[1]->textfont(4); v_input[1]->textsize(11); - v_input[1]->callback((Fl_Callback*)v_input_cb, (void*)(1)); + v_input[1]->callback((Fl_Callback*)cb_v_input1, (void*)(1)); } // Fl_Input* v_input[1] { v_input[2] = new Fl_Input(95, 130, 310, 20); v_input[2]->tooltip("Extra initialization code for the widget."); v_input[2]->labelsize(11); v_input[2]->textfont(4); v_input[2]->textsize(11); - v_input[2]->callback((Fl_Callback*)v_input_cb, (void*)(2)); + v_input[2]->callback((Fl_Callback*)cb_v_input2, (void*)(2)); } // Fl_Input* v_input[2] { v_input[3] = new Fl_Input(95, 150, 310, 20); v_input[3]->tooltip("Extra initialization code for the widget."); v_input[3]->labelsize(11); v_input[3]->textfont(4); v_input[3]->textsize(11); - v_input[3]->callback((Fl_Callback*)v_input_cb, (void*)(3)); + v_input[3]->callback((Fl_Callback*)cb_v_input3, (void*)(3)); } // Fl_Input* v_input[3] { Fl_Tile* o = new Fl_Tile(95, 175, 310, 130); - o->callback((Fl_Callback*)cb_1); + o->callback((Fl_Callback*)cb_12); { Fl_Group* o = new Fl_Group(95, 175, 310, 48); o->box(FL_FLAT_BOX); { wComment = new Fl_Text_Editor(95, 175, 310, 45, "Comment:"); @@ -1822,11 +3050,11 @@ Fl_Double_Window* make_widget_panel() { wComment->textfont(6); wComment->textsize(11); wComment->textcolor((Fl_Color)59); + wComment->callback((Fl_Callback*)cb_wComment); wComment->align(Fl_Align(FL_ALIGN_LEFT)); wComment->when(FL_WHEN_CHANGED); Fl_Group::current()->resizable(wComment); wComment->buffer(new Fl_Text_Buffer()); - wComment->callback((Fl_Callback*)comment_cb); } // Fl_Text_Editor* wComment o->end(); } // Fl_Group* o @@ -1844,7 +3072,7 @@ Fl_Double_Window* make_widget_panel() { wCallback->labelcolor(FL_FOREGROUND_COLOR); wCallback->textfont(4); wCallback->textsize(11); - wCallback->callback((Fl_Callback*)callback_cb); + wCallback->callback((Fl_Callback*)cb_wCallback); wCallback->align(Fl_Align(FL_ALIGN_LEFT)); wCallback->when(FL_WHEN_RELEASE); Fl_Group::current()->resizable(wCallback); @@ -1865,7 +3093,7 @@ Fl_Double_Window* make_widget_panel() { o->labelsize(11); o->textfont(4); o->textsize(11); - o->callback((Fl_Callback*)user_data_cb); + o->callback((Fl_Callback*)cb_13); Fl_Group::current()->resizable(o); } // Fl_Input* o { Fl_Menu_Button* o = new Fl_Menu_Button(260, 310, 145, 20, "When"); @@ -1875,7 +3103,7 @@ Fl_Double_Window* make_widget_panel() { o->labelfont(1); o->labelsize(11); o->textsize(11); - o->callback((Fl_Callback*)when_cb); + o->callback((Fl_Callback*)cb_When); o->when(FL_WHEN_CHANGED); o->menu(whenmenu); } // Fl_Menu_Button* o @@ -1892,7 +3120,7 @@ Fl_Double_Window* make_widget_panel() { o->labelsize(11); o->textfont(4); o->textsize(11); - o->callback((Fl_Callback*)user_data_type_cb); + o->callback((Fl_Callback*)cb_14); Fl_Group::current()->resizable(o); o->menu(menu_4); } // Fl_Input_Choice* o @@ -1906,550 +3134,34 @@ Fl_Double_Window* make_widget_panel() { } // Fl_Group* o wp_cpp_tab->end(); } // Fl_Group* wp_cpp_tab - { widget_tab_grid_child = new Fl_Group(10, 30, 400, 330, "Grid Child"); - widget_tab_grid_child->labelsize(11); - widget_tab_grid_child->callback((Fl_Callback*)propagate_load); - widget_tab_grid_child->hide(); - { Fl_Group* o = new Fl_Group(95, 60, 315, 20, "Location:"); - o->box(FL_FLAT_BOX); - o->labelfont(1); - o->labelsize(11); - o->callback((Fl_Callback*)propagate_load); - o->align(Fl_Align(FL_ALIGN_LEFT)); - { widget_grid_row_input = new fld::widget::Formula_Input(95, 60, 40, 20, "Row:"); - widget_grid_row_input->box(FL_DOWN_BOX); - widget_grid_row_input->color(FL_BACKGROUND2_COLOR); - widget_grid_row_input->selection_color(FL_SELECTION_COLOR); - widget_grid_row_input->labeltype(FL_NORMAL_LABEL); - widget_grid_row_input->labelfont(0); - widget_grid_row_input->labelsize(11); - widget_grid_row_input->labelcolor(FL_FOREGROUND_COLOR); - widget_grid_row_input->textsize(11); - widget_grid_row_input->callback((Fl_Callback*)grid_set_row_cb); - widget_grid_row_input->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - widget_grid_row_input->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* widget_grid_row_input - { Fl_Group* o = new Fl_Group(135, 60, 30, 20); - { Fl_Button* o = new Fl_Button(135, 60, 15, 20, "-"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)grid_dec_row_cb); - o->clear_visible_focus(); - } // Fl_Button* o - { Fl_Button* o = new Fl_Button(150, 60, 15, 20, "+"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)grid_inc_row_cb); - o->clear_visible_focus(); - } // Fl_Button* o - o->end(); - } // Fl_Group* o - { widget_grid_col_input = new fld::widget::Formula_Input(175, 60, 40, 20, "Column:"); - widget_grid_col_input->box(FL_DOWN_BOX); - widget_grid_col_input->color(FL_BACKGROUND2_COLOR); - widget_grid_col_input->selection_color(FL_SELECTION_COLOR); - widget_grid_col_input->labeltype(FL_NORMAL_LABEL); - widget_grid_col_input->labelfont(0); - widget_grid_col_input->labelsize(11); - widget_grid_col_input->labelcolor(FL_FOREGROUND_COLOR); - widget_grid_col_input->textsize(11); - widget_grid_col_input->callback((Fl_Callback*)grid_set_col_cb); - widget_grid_col_input->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - widget_grid_col_input->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* widget_grid_col_input - { Fl_Group* o = new Fl_Group(215, 60, 30, 20); - { Fl_Button* o = new Fl_Button(215, 60, 15, 20, "-"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)grid_dec_col_cb); - o->clear_visible_focus(); - } // Fl_Button* o - { Fl_Button* o = new Fl_Button(230, 60, 15, 20, "+"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)grid_inc_col_cb); - o->clear_visible_focus(); - } // Fl_Button* o - o->end(); - } // Fl_Group* o - { Fl_Box* o = new Fl_Box(395, 60, 1, 20); - o->hide(); - Fl_Group::current()->resizable(o); - } // Fl_Box* o - { widget_grid_transient = new Fl_Box(250, 60, 80, 20, "TRANSIENT"); - widget_grid_transient->labelsize(11); - widget_grid_transient->labelcolor((Fl_Color)1); - widget_grid_transient->callback((Fl_Callback*)cb_widget_grid_transient); - } // Fl_Box* widget_grid_transient - { widget_grid_unlinked = new Fl_Box(250, 60, 80, 20, "UNLINKED"); - widget_grid_unlinked->labelsize(11); - widget_grid_unlinked->labelcolor((Fl_Color)1); - widget_grid_unlinked->hide(); - } // Fl_Box* widget_grid_unlinked - o->end(); - } // Fl_Group* o - { wp_gridc_align = new Fl_Group(95, 100, 315, 20, "Align:"); - wp_gridc_align->labelfont(1); - wp_gridc_align->labelsize(11); - wp_gridc_align->callback((Fl_Callback*)propagate_load); - wp_gridc_align->align(Fl_Align(FL_ALIGN_LEFT)); - { Fl_Choice* o = new Fl_Choice(95, 100, 115, 20, "Horizontal"); - o->down_box(FL_BORDER_BOX); - o->labelsize(11); - o->textsize(11); - o->callback((Fl_Callback*)grid_align_horizontal_cb); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->menu(menu_Horizontal); - } // Fl_Choice* o - { Fl_Choice* o = new Fl_Choice(215, 100, 115, 20, "Vertical"); - o->down_box(FL_BORDER_BOX); - o->labelsize(11); - o->textsize(11); - o->callback((Fl_Callback*)grid_align_vertical_cb); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->menu(menu_Vertical); - } // Fl_Choice* o - { Fl_Box* o = new Fl_Box(395, 100, 1, 20); - o->hide(); - Fl_Group::current()->resizable(o); - } // Fl_Box* o - wp_gridc_align->end(); - } // Fl_Group* wp_gridc_align - { wp_gridc_size = new Fl_Group(95, 135, 315, 20, "Min. Size:"); - wp_gridc_size->labelfont(1); - wp_gridc_size->labelsize(11); - wp_gridc_size->callback((Fl_Callback*)propagate_load); - wp_gridc_size->align(Fl_Align(FL_ALIGN_LEFT)); - { fld::widget::Formula_Input* o = new fld::widget::Formula_Input(95, 135, 55, 20, "Width:"); - o->box(FL_DOWN_BOX); - o->color(FL_BACKGROUND2_COLOR); - o->selection_color(FL_SELECTION_COLOR); - o->labeltype(FL_NORMAL_LABEL); - o->labelfont(0); - o->labelsize(11); - o->labelcolor(FL_FOREGROUND_COLOR); - o->textsize(11); - o->callback((Fl_Callback*)grid_set_min_wdt_cb); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* o - { fld::widget::Formula_Input* o = new fld::widget::Formula_Input(155, 135, 55, 20, "Height:"); - o->box(FL_DOWN_BOX); - o->color(FL_BACKGROUND2_COLOR); - o->selection_color(FL_SELECTION_COLOR); - o->labeltype(FL_NORMAL_LABEL); - o->labelfont(0); - o->labelsize(11); - o->labelcolor(FL_FOREGROUND_COLOR); - o->textsize(11); - o->callback((Fl_Callback*)grid_set_min_hgt_cb); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* o - { Fl_Box* o = new Fl_Box(395, 135, 1, 20); - o->hide(); - Fl_Group::current()->resizable(o); - } // Fl_Box* o - wp_gridc_size->end(); - } // Fl_Group* wp_gridc_size - { Fl_Group* o = new Fl_Group(95, 170, 315, 20, "Span:"); - o->labelfont(1); - o->labelsize(11); - o->callback((Fl_Callback*)propagate_load); - o->align(Fl_Align(FL_ALIGN_LEFT)); - { widget_grid_rowspan_input = new fld::widget::Formula_Input(95, 170, 40, 20, "Row Span:"); - widget_grid_rowspan_input->box(FL_DOWN_BOX); - widget_grid_rowspan_input->color(FL_BACKGROUND2_COLOR); - widget_grid_rowspan_input->selection_color(FL_SELECTION_COLOR); - widget_grid_rowspan_input->labeltype(FL_NORMAL_LABEL); - widget_grid_rowspan_input->labelfont(0); - widget_grid_rowspan_input->labelsize(11); - widget_grid_rowspan_input->labelcolor(FL_FOREGROUND_COLOR); - widget_grid_rowspan_input->textsize(11); - widget_grid_rowspan_input->callback((Fl_Callback*)grid_set_rowspan_cb); - widget_grid_rowspan_input->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - widget_grid_rowspan_input->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* widget_grid_rowspan_input - { Fl_Group* o = new Fl_Group(135, 170, 30, 20); - { Fl_Button* o = new Fl_Button(135, 170, 15, 20, "-"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)grid_dec_rowspan_cb); - o->clear_visible_focus(); - } // Fl_Button* o - { Fl_Button* o = new Fl_Button(150, 170, 15, 20, "+"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)grid_inc_rowspan_cb); - o->clear_visible_focus(); - } // Fl_Button* o - o->end(); - } // Fl_Group* o - { widget_grid_colspan_input = new fld::widget::Formula_Input(175, 170, 40, 20, "Col. Span:"); - widget_grid_colspan_input->box(FL_DOWN_BOX); - widget_grid_colspan_input->color(FL_BACKGROUND2_COLOR); - widget_grid_colspan_input->selection_color(FL_SELECTION_COLOR); - widget_grid_colspan_input->labeltype(FL_NORMAL_LABEL); - widget_grid_colspan_input->labelfont(0); - widget_grid_colspan_input->labelsize(11); - widget_grid_colspan_input->labelcolor(FL_FOREGROUND_COLOR); - widget_grid_colspan_input->textsize(11); - widget_grid_colspan_input->callback((Fl_Callback*)grid_set_colspan_cb); - widget_grid_colspan_input->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - widget_grid_colspan_input->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* widget_grid_colspan_input - { Fl_Group* o = new Fl_Group(215, 170, 30, 20); - { Fl_Button* o = new Fl_Button(215, 170, 15, 20, "-"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)grid_dec_colspan_cb); - o->clear_visible_focus(); - } // Fl_Button* o - { Fl_Button* o = new Fl_Button(230, 170, 15, 20, "+"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)grid_inc_colspan_cb); - o->clear_visible_focus(); - } // Fl_Button* o - o->end(); - } // Fl_Group* o - { Fl_Box* o = new Fl_Box(395, 170, 1, 20); - o->hide(); - Fl_Group::current()->resizable(o); - } // Fl_Box* o - o->end(); - } // Fl_Group* o - { Fl_Box* o = new Fl_Box(95, 350, 300, 5); - o->labelsize(11); - o->hide(); - Fl_Group::current()->resizable(o); - } // Fl_Box* o - widget_tab_grid_child->end(); - } // Fl_Group* widget_tab_grid_child - { widget_tab_grid = new Fl_Group(10, 30, 400, 330, "Grid"); + { widget_tab_grid = new Grid_Tab(10, 30, 400, 330, "Grid"); + widget_tab_grid->box(FL_NO_BOX); + widget_tab_grid->color(FL_BACKGROUND_COLOR); + widget_tab_grid->selection_color(FL_BACKGROUND_COLOR); + widget_tab_grid->labeltype(FL_NORMAL_LABEL); + widget_tab_grid->labelfont(0); widget_tab_grid->labelsize(11); - widget_tab_grid->callback((Fl_Callback*)propagate_load); + widget_tab_grid->labelcolor(FL_FOREGROUND_COLOR); + widget_tab_grid->callback((Fl_Callback*)cb_widget_tab_grid); + widget_tab_grid->align(Fl_Align(FL_ALIGN_TOP)); + widget_tab_grid->when(FL_WHEN_RELEASE); widget_tab_grid->hide(); - { Fl_Group* o = new Fl_Group(95, 60, 315, 20, "Grid Layout:"); - o->labelfont(1); - o->labelsize(11); - o->callback((Fl_Callback*)propagate_load); - o->align(Fl_Align(FL_ALIGN_LEFT)); - { widget_grid_rows = new fld::widget::Formula_Input(95, 60, 40, 20, "Rows:"); - widget_grid_rows->tooltip("Number of horizontal rows in the Grid group"); - widget_grid_rows->box(FL_DOWN_BOX); - widget_grid_rows->color(FL_BACKGROUND2_COLOR); - widget_grid_rows->selection_color(FL_SELECTION_COLOR); - widget_grid_rows->labeltype(FL_NORMAL_LABEL); - widget_grid_rows->labelfont(0); - widget_grid_rows->labelsize(11); - widget_grid_rows->labelcolor(FL_FOREGROUND_COLOR); - widget_grid_rows->textsize(11); - widget_grid_rows->callback((Fl_Callback*)cb_widget_grid_rows); - widget_grid_rows->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - widget_grid_rows->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* widget_grid_rows - { Fl_Group* o = new Fl_Group(135, 60, 30, 20); - { Fl_Button* o = new Fl_Button(135, 60, 15, 20, "-"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)cb_2); - o->clear_visible_focus(); - } // Fl_Button* o - { Fl_Button* o = new Fl_Button(150, 60, 15, 20, "+"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)cb_3); - o->clear_visible_focus(); - } // Fl_Button* o - o->end(); - } // Fl_Group* o - { widget_grid_cols = new fld::widget::Formula_Input(175, 60, 40, 20, "Columns:"); - widget_grid_cols->tooltip("Number of vertical columns in the Grid group"); - widget_grid_cols->box(FL_DOWN_BOX); - widget_grid_cols->color(FL_BACKGROUND2_COLOR); - widget_grid_cols->selection_color(FL_SELECTION_COLOR); - widget_grid_cols->labeltype(FL_NORMAL_LABEL); - widget_grid_cols->labelfont(0); - widget_grid_cols->labelsize(11); - widget_grid_cols->labelcolor(FL_FOREGROUND_COLOR); - widget_grid_cols->textsize(11); - widget_grid_cols->callback((Fl_Callback*)cb_widget_grid_cols); - widget_grid_cols->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - widget_grid_cols->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* widget_grid_cols - { Fl_Group* o = new Fl_Group(215, 60, 30, 20); - { Fl_Button* o = new Fl_Button(215, 60, 15, 20, "-"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)cb_4); - o->clear_visible_focus(); - } // Fl_Button* o - { Fl_Button* o = new Fl_Button(230, 60, 15, 20, "+"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)cb_5); - o->clear_visible_focus(); - } // Fl_Button* o - o->end(); - } // Fl_Group* o - { Fl_Box* o = new Fl_Box(396, 60, 0, 20); - Fl_Group::current()->resizable(o); - } // Fl_Box* o - o->end(); - } // Fl_Group* o - { wp_grid_margin = new Fl_Group(95, 100, 315, 20, "Margins:"); - wp_grid_margin->labelfont(1); - wp_grid_margin->labelsize(11); - wp_grid_margin->callback((Fl_Callback*)propagate_load); - wp_grid_margin->align(Fl_Align(FL_ALIGN_LEFT)); - { Fl_Value_Input* o = new Fl_Value_Input(95, 100, 55, 20, "Left:"); - o->tooltip("Left margin in group."); - o->labelsize(11); - o->maximum(1000); - o->step(1); - o->textsize(11); - o->callback((Fl_Callback*)cb_Left); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - } // Fl_Value_Input* o - { Fl_Value_Input* o = new Fl_Value_Input(155, 100, 55, 20, "Top:"); - o->tooltip("Top margin in group."); - o->labelsize(11); - o->maximum(1000); - o->step(1); - o->textsize(11); - o->callback((Fl_Callback*)cb_Top); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - } // Fl_Value_Input* o - { Fl_Value_Input* o = new Fl_Value_Input(215, 100, 55, 20, "Right:"); - o->tooltip("Right margin in group."); - o->labelsize(11); - o->maximum(1000); - o->step(1); - o->textsize(11); - o->callback((Fl_Callback*)cb_Right); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - } // Fl_Value_Input* o - { Fl_Value_Input* o = new Fl_Value_Input(275, 100, 55, 20, "Bottom:"); - o->tooltip("Bottom margin in group."); - o->labelsize(11); - o->maximum(1000); - o->step(1); - o->textsize(11); - o->callback((Fl_Callback*)cb_Bottom); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - } // Fl_Value_Input* o - { Fl_Box* o = new Fl_Box(396, 100, 0, 20); - Fl_Group::current()->resizable(o); - } // Fl_Box* o - wp_grid_margin->end(); - } // Fl_Group* wp_grid_margin - { wp_grid_gaps = new Fl_Group(95, 135, 315, 20, "Gaps:"); - wp_grid_gaps->labelfont(1); - wp_grid_gaps->labelsize(11); - wp_grid_gaps->callback((Fl_Callback*)propagate_load); - wp_grid_gaps->align(Fl_Align(FL_ALIGN_LEFT)); - { Fl_Value_Input* o = new Fl_Value_Input(95, 135, 55, 20, "Row:"); - o->tooltip("Gap between children."); - o->labelsize(11); - o->maximum(1000); - o->step(1); - o->textsize(11); - o->callback((Fl_Callback*)cb_Row); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - } // Fl_Value_Input* o - { Fl_Value_Input* o = new Fl_Value_Input(155, 135, 55, 20, "Col:"); - o->tooltip("Gap between children."); - o->labelsize(11); - o->maximum(1000); - o->step(1); - o->textsize(11); - o->callback((Fl_Callback*)cb_Col); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - } // Fl_Value_Input* o - { Fl_Box* o = new Fl_Box(396, 135, 0, 20); - Fl_Group::current()->resizable(o); - } // Fl_Box* o - wp_grid_gaps->end(); - } // Fl_Group* wp_grid_gaps - { Fl_Group* o = new Fl_Group(95, 175, 315, 20, "Row:"); - o->labelfont(1); - o->labelsize(11); - o->callback((Fl_Callback*)cb_Row1); - o->align(Fl_Align(FL_ALIGN_LEFT)); - { widget_grid_curr_row = new fld::widget::Formula_Input(95, 175, 40, 20, "Index"); - widget_grid_curr_row->box(FL_DOWN_BOX); - widget_grid_curr_row->color(FL_BACKGROUND2_COLOR); - widget_grid_curr_row->selection_color(FL_SELECTION_COLOR); - widget_grid_curr_row->labeltype(FL_NORMAL_LABEL); - widget_grid_curr_row->labelfont(0); - widget_grid_curr_row->labelsize(11); - widget_grid_curr_row->labelcolor(FL_FOREGROUND_COLOR); - widget_grid_curr_row->textsize(11); - widget_grid_curr_row->callback((Fl_Callback*)cb_widget_grid_curr_row); - widget_grid_curr_row->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - widget_grid_curr_row->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* widget_grid_curr_row - { Fl_Group* o = new Fl_Group(135, 175, 30, 20); - o->callback((Fl_Callback*)propagate_load); - { Fl_Button* o = new Fl_Button(135, 175, 15, 20, "-"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)cb_6); - o->clear_visible_focus(); - } // Fl_Button* o - { Fl_Button* o = new Fl_Button(150, 175, 15, 20, "+"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)cb_7); - o->clear_visible_focus(); - } // Fl_Button* o - o->end(); - } // Fl_Group* o - { Fl_Box* o = new Fl_Box(165, 175, 15, 20, ":"); - o->labelsize(11); - } // Fl_Box* o - { widget_grid_curr_row_attributes = new Fl_Group(180, 175, 175, 20); - widget_grid_curr_row_attributes->callback((Fl_Callback*)propagate_load); - { fld::widget::Formula_Input* o = new fld::widget::Formula_Input(180, 175, 55, 20, "Height:"); - o->box(FL_DOWN_BOX); - o->color(FL_BACKGROUND2_COLOR); - o->selection_color(FL_SELECTION_COLOR); - o->labeltype(FL_NORMAL_LABEL); - o->labelfont(0); - o->labelsize(11); - o->labelcolor(FL_FOREGROUND_COLOR); - o->textsize(11); - o->callback((Fl_Callback*)cb_Height); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* o - { fld::widget::Formula_Input* o = new fld::widget::Formula_Input(240, 175, 55, 20, "Weight:"); - o->box(FL_DOWN_BOX); - o->color(FL_BACKGROUND2_COLOR); - o->selection_color(FL_SELECTION_COLOR); - o->labeltype(FL_NORMAL_LABEL); - o->labelfont(0); - o->labelsize(11); - o->labelcolor(FL_FOREGROUND_COLOR); - o->textsize(11); - o->callback((Fl_Callback*)cb_Weight); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* o - { fld::widget::Formula_Input* o = new fld::widget::Formula_Input(300, 175, 55, 20, "Gap:"); - o->box(FL_DOWN_BOX); - o->color(FL_BACKGROUND2_COLOR); - o->selection_color(FL_SELECTION_COLOR); - o->labeltype(FL_NORMAL_LABEL); - o->labelfont(0); - o->labelsize(11); - o->labelcolor(FL_FOREGROUND_COLOR); - o->textsize(11); - o->callback((Fl_Callback*)cb_Gap); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* o - widget_grid_curr_row_attributes->end(); - } // Fl_Group* widget_grid_curr_row_attributes - { Fl_Box* o = new Fl_Box(400, 175, 1, 20); - o->hide(); - Fl_Group::current()->resizable(o); - } // Fl_Box* o - o->end(); - } // Fl_Group* o - { Fl_Group* o = new Fl_Group(95, 210, 315, 20, "Column:"); - o->labelfont(1); - o->labelsize(11); - o->callback((Fl_Callback*)propagate_load); - o->align(Fl_Align(FL_ALIGN_LEFT)); - { widget_grid_curr_col = new fld::widget::Formula_Input(95, 210, 40, 20, "Index"); - widget_grid_curr_col->box(FL_DOWN_BOX); - widget_grid_curr_col->color(FL_BACKGROUND2_COLOR); - widget_grid_curr_col->selection_color(FL_SELECTION_COLOR); - widget_grid_curr_col->labeltype(FL_NORMAL_LABEL); - widget_grid_curr_col->labelfont(0); - widget_grid_curr_col->labelsize(11); - widget_grid_curr_col->labelcolor(FL_FOREGROUND_COLOR); - widget_grid_curr_col->textsize(11); - widget_grid_curr_col->callback((Fl_Callback*)cb_widget_grid_curr_col); - widget_grid_curr_col->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - widget_grid_curr_col->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* widget_grid_curr_col - { Fl_Group* o = new Fl_Group(135, 210, 30, 20); - { Fl_Button* o = new Fl_Button(135, 210, 15, 20, "-"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)cb_8); - o->clear_visible_focus(); - } // Fl_Button* o - { Fl_Button* o = new Fl_Button(150, 210, 15, 20, "+"); - o->compact(1); - o->labelsize(11); - o->callback((Fl_Callback*)cb_9); - o->clear_visible_focus(); - } // Fl_Button* o - o->end(); - } // Fl_Group* o - { Fl_Box* o = new Fl_Box(165, 210, 15, 20, ":"); - o->labelsize(11); - } // Fl_Box* o - { widget_grid_curr_col_attributes = new Fl_Group(180, 210, 175, 20); - widget_grid_curr_col_attributes->callback((Fl_Callback*)propagate_load); - { fld::widget::Formula_Input* o = new fld::widget::Formula_Input(180, 210, 55, 20, "Width:"); - o->box(FL_DOWN_BOX); - o->color(FL_BACKGROUND2_COLOR); - o->selection_color(FL_SELECTION_COLOR); - o->labeltype(FL_NORMAL_LABEL); - o->labelfont(0); - o->labelsize(11); - o->labelcolor(FL_FOREGROUND_COLOR); - o->textsize(11); - o->callback((Fl_Callback*)cb_Width); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* o - { fld::widget::Formula_Input* o = new fld::widget::Formula_Input(240, 210, 55, 20, "Weight:"); - o->box(FL_DOWN_BOX); - o->color(FL_BACKGROUND2_COLOR); - o->selection_color(FL_SELECTION_COLOR); - o->labeltype(FL_NORMAL_LABEL); - o->labelfont(0); - o->labelsize(11); - o->labelcolor(FL_FOREGROUND_COLOR); - o->textsize(11); - o->callback((Fl_Callback*)cb_Weight1); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* o - { fld::widget::Formula_Input* o = new fld::widget::Formula_Input(300, 210, 55, 20, "Gap:"); - o->box(FL_DOWN_BOX); - o->color(FL_BACKGROUND2_COLOR); - o->selection_color(FL_SELECTION_COLOR); - o->labeltype(FL_NORMAL_LABEL); - o->labelfont(0); - o->labelsize(11); - o->labelcolor(FL_FOREGROUND_COLOR); - o->textsize(11); - o->callback((Fl_Callback*)cb_Gap1); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->when(FL_WHEN_RELEASE); - } // fld::widget::Formula_Input* o - widget_grid_curr_col_attributes->end(); - } // Fl_Group* widget_grid_curr_col_attributes - { Fl_Box* o = new Fl_Box(400, 210, 1, 20); - o->hide(); - Fl_Group::current()->resizable(o); - } // Fl_Box* o - o->end(); - } // Fl_Group* o - { Fl_Box* o = new Fl_Box(95, 350, 300, 5); - o->labelsize(11); - o->hide(); - Fl_Group::current()->resizable(o); - } // Fl_Box* o widget_tab_grid->end(); - } // Fl_Group* widget_tab_grid + } // Grid_Tab* widget_tab_grid + { widget_tab_grid_child = new Grid_Child_Tab(10, 30, 400, 330, "Grid Child"); + widget_tab_grid_child->box(FL_NO_BOX); + widget_tab_grid_child->color(FL_BACKGROUND_COLOR); + widget_tab_grid_child->selection_color(FL_BACKGROUND_COLOR); + widget_tab_grid_child->labeltype(FL_NORMAL_LABEL); + widget_tab_grid_child->labelfont(0); + widget_tab_grid_child->labelsize(11); + widget_tab_grid_child->labelcolor(FL_FOREGROUND_COLOR); + widget_tab_grid_child->callback((Fl_Callback*)cb_widget_tab_grid_child); + widget_tab_grid_child->align(Fl_Align(FL_ALIGN_TOP)); + widget_tab_grid_child->when(FL_WHEN_RELEASE); + widget_tab_grid_child->hide(); + widget_tab_grid_child->end(); + } // Grid_Child_Tab* widget_tab_grid_child o->show(); widget_tabs->end(); Fl_Group::current()->resizable(widget_tabs); |
