diff options
Diffstat (limited to 'fluid/panels/widget_panel.fl')
| -rw-r--r-- | fluid/panels/widget_panel.fl | 1872 |
1 files changed, 1872 insertions, 0 deletions
diff --git a/fluid/panels/widget_panel.fl b/fluid/panels/widget_panel.fl new file mode 100644 index 000000000..57ae30273 --- /dev/null +++ b/fluid/panels/widget_panel.fl @@ -0,0 +1,1872 @@ +# data file for the Fltk User Interface Designer (fluid) +version 1.0500 +header_name {.h} +code_name {.cxx} +snap { + ver 1 + current_suite FLTK + current_preset 1 +} +comment {// +// Widget panel for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2021 by Bill Spitzak and others. +// +// This library is free software. Distribution and use rights are outlined in +// the file "COPYING" which should have been included with this file. If this +// file is missing or damaged, see the license at: +// +// https://www.fltk.org/COPYING.php +// +// Please see the following page on how to report bugs and issues: +// +// https://www.fltk.org/bugs.php +// +} {in_source in_header +} + +decl {\#include "app/undo.h"} {private global +} + +decl {\#include "nodes/Fl_Widget_Type.h"} {private global +} + +decl {\#include "nodes/Fl_Grid_Type.h"} {private global +} + +decl {\#include "widgets/custom_widgets.h"} {selected public global +} + +decl {\#include <FL/Fl_Grid.H>} {private global +} + +decl {extern void set_modflag(int mf, int mfc=-1);} {private local +} + +Function {make_image_panel()} { + comment {Create a panel for editing widget image data} open +} { + Fl_Window image_panel_window { + label {Image Options} + callback {propagate_load(o, v);} open + xywh {527 684 260 332} type Double modal visible + } { + Fl_Group image_panel_imagegroup { + callback propagate_load open + xywh {10 15 235 125} + } { + Fl_Box {} { + label { ---- Active Image ----} + xywh {75 15 170 20} labelfont 1 labelsize 11 align 20 + } + Fl_Box image_panel_data { + label {... x ... pixels, ...} + callback {if (v == LOAD) { + Fl_Shared_Image *img = Fl_Shared_Image::get(widget_image_input->value()); + o->user_data(img); + if (img) { + char buf[256]; + snprintf(buf, 255, "%d x %d pixels, %d channels", img->data_w(), img->data_h(), img->d()); + o->copy_label(buf); + image_panel_imagegroup->activate(); + } else if (widget_image_input->value() && widget_image_input->value()[0]) { + o->label("Can't load image"); + image_panel_imagegroup->activate(); + } else { + o->label("... x ... pixels, ..."); + image_panel_imagegroup->deactivate(); + } +}} + xywh {75 35 170 20} labelsize 11 align 20 + code0 {\#include <FL/Fl_Shared_Image.H>} + } + Fl_Group {} { + callback propagate_load open + xywh {75 75 170 20} + } { + Fl_Input image_panel_imagew { + label {Width:} + callback {if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(ID_Window)) { + o->value(current_widget->scale_image_w_); + } + } else { + int mod = 0; + for (Fl_Type *t = Fl_Type::first; t; t = t->next) { + if (t->selected && t->is_widget()) { + Fl_Widget_Type* wt = ((Fl_Widget_Type*)t); + wt->scale_image_w_ = o->value(); + Fl_Image *img = wt->o->image(); + if (img) { + int iw = wt->scale_image_w_; + if (iw<=0) iw = img->data_w(); + int ih = wt->scale_image_h_; + if (ih<=0) ih = img->data_w(); + img->scale(iw, ih, 0, 1); + wt->o->redraw(); + if (wt->o->parent()) wt->o->parent()->redraw(); + } + mod = 1; + } + } + if (mod) set_modflag(1); + }} + tooltip {Scale image to this width in pixel units} xywh {75 75 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input image_panel_imageh { + label {Height:} + callback {if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(ID_Window)) { + o->value(current_widget->scale_image_h_); + } + } else { + int mod = 0; + for (Fl_Type *t = Fl_Type::first; t; t = t->next) { + if (t->selected && t->is_widget()) { + Fl_Widget_Type* wt = ((Fl_Widget_Type*)t); + wt->scale_image_h_ = o->value(); + Fl_Image *img = wt->o->image(); + if (img) { + int iw = wt->scale_image_w_; + if (iw<=0) iw = img->data_w(); + int ih = wt->scale_image_h_; + if (ih<=0) ih = img->data_w(); + img->scale(iw, ih, 0, 1); + wt->o->redraw(); + if (wt->o->parent()) wt->o->parent()->redraw(); + } + mod = 1; + } + } + if (mod) set_modflag(1); + }} + tooltip {Scale image to this height in pixel units} xywh {135 75 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Button {} { + label Reset + callback {if (v != LOAD) { + image_panel_imagew->value(0); + image_panel_imageh->value(0); + image_panel_imagew->do_callback(); + image_panel_imageh->do_callback(); +}} + tooltip {Reset scale to original size} xywh {195 75 50 20} labelsize 11 + } + } + Fl_Box {} { + label {Scale:} + xywh {10 75 60 20} labelfont 1 labelsize 11 align 24 + } + Fl_Box {} { + label {Storage:} + xywh {10 100 60 20} labelfont 1 labelsize 11 align 24 + } + Fl_Check_Button {} { + label {convert to raw pixel data} + callback compress_image_cb + tooltip {if unchecked, keep the image in its original format and store the data as is; if checked, convert the image and store it as uncompressed RGB or grayscale pixel data} xywh {75 100 170 20} down_box DOWN_BOX labelsize 11 + } + Fl_Check_Button {} { + label {bind to widget} + callback bind_image_cb + tooltip {bind the image to the widget, so it will be deleted automatically} xywh {75 120 170 20} down_box DOWN_BOX labelsize 11 hotspot + } + } + Fl_Group image_panel_deimagegroup { + callback propagate_load open + xywh {10 155 235 125} + } { + Fl_Box {} { + label { ---- Inactive Image ----} + xywh {75 155 170 20} labelfont 1 labelsize 11 align 20 + } + Fl_Box image_panel_dedata { + label {... x ... pixels, ...} + callback {if (v == LOAD) { + Fl_Shared_Image *img = Fl_Shared_Image::get(widget_deimage_input->value()); + o->user_data(img); + if (img) { + char buf[256]; + snprintf(buf, 255, "%d x %d pixels, %d channels", img->data_w(), img->data_h(), img->d()); + o->copy_label(buf); + image_panel_deimagegroup->activate(); + } else if (widget_deimage_input->value() && widget_deimage_input->value()[0]) { + o->label("Can't load image"); + image_panel_deimagegroup->activate(); + } else { + o->label("... x ... pixels, ..."); + image_panel_deimagegroup->deactivate(); + } +}} + xywh {75 175 170 20} labelsize 11 align 20 + } + Fl_Group {} { + callback propagate_load open + xywh {75 215 170 20} + } { + Fl_Input image_panel_deimagew { + label {Width:} + callback {if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(ID_Window)) { + o->value(current_widget->scale_deimage_w_); + } + } else { + int mod = 0; + for (Fl_Type *t = Fl_Type::first; t; t = t->next) { + if (t->selected && t->is_widget()) { + Fl_Widget_Type* wt = ((Fl_Widget_Type*)t); + wt->scale_deimage_w_ = o->value(); + Fl_Image *img = wt->o->deimage(); + if (img) { + int iw = wt->scale_deimage_w_; + if (iw<=0) iw = img->data_w(); + int ih = wt->scale_deimage_h_; + if (ih<=0) ih = img->data_w(); + img->scale(iw, ih, 0, 1); + wt->o->redraw(); + if (wt->o->parent()) wt->o->parent()->redraw(); + } + mod = 1; + } + } + if (mod) set_modflag(1); + }} + tooltip {Scale image to this width in pixel units} xywh {75 215 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input image_panel_deimageh { + label {Height:} + callback {if (v == LOAD) { + if (current_widget->is_widget() && !current_widget->is_a(ID_Window)) { + o->value(current_widget->scale_deimage_h_); + } + } else { + int mod = 0; + for (Fl_Type *t = Fl_Type::first; t; t = t->next) { + if (t->selected && t->is_widget()) { + Fl_Widget_Type* wt = ((Fl_Widget_Type*)t); + wt->scale_deimage_h_ = o->value(); + Fl_Image *img = wt->o->deimage(); + if (img) { + int iw = wt->scale_deimage_w_; + if (iw<=0) iw = img->data_w(); + int ih = wt->scale_deimage_h_; + if (ih<=0) ih = img->data_w(); + img->scale(iw, ih, 0, 1); + wt->o->redraw(); + if (wt->o->parent()) wt->o->parent()->redraw(); + } + mod = 1; + } + } + if (mod) set_modflag(1); + }} + tooltip {Scale image to this height in pixel units} xywh {135 215 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Button {} { + label Reset + callback {if (v != LOAD) { + image_panel_deimagew->value(0); + image_panel_deimageh->value(0); + image_panel_deimagew->do_callback(); + image_panel_deimageh->do_callback(); +}} + tooltip {Reset scale to original size} xywh {195 215 50 20} labelsize 11 + } + } + Fl_Box {} { + label {Scale:} + xywh {10 215 60 20} labelfont 1 labelsize 11 align 24 + } + Fl_Box {} { + label {Storage:} + xywh {10 240 60 20} labelfont 1 labelsize 11 align 24 + } + Fl_Check_Button {} { + label {convert to raw pixel data} + callback compress_deimage_cb + tooltip {if unchecked, keep the image in its original format and store the data as is; if checked, convert the image and store it as uncompressed RGB or grayscale pixel data} xywh {75 240 170 20} down_box DOWN_BOX labelsize 11 + } + Fl_Check_Button {} { + label {bind to widget} + callback bind_deimage_cb + tooltip {bind the image to the widget, so it will be deleted automatically} xywh {75 260 170 20} down_box DOWN_BOX labelsize 11 + } + } + Fl_Button image_panel_close { + label Close + callback {if (v != LOAD) + image_panel_window->hide();} + xywh {165 295 80 20} labelsize 11 + } + } +} + +Function {run_image_panel()} {open return_type void +} { + code {if (!image_panel_window) + make_image_panel(); + +image_panel_window->do_callback(image_panel_window, LOAD); + +Fl::pushed(0); +Fl_Window *g = Fl::grab(); +if (g) Fl::grab(0); +image_panel_window->show(); +while (image_panel_window->shown()) + Fl::wait(); +if (g) + Fl::grab(g); + +Fl_Shared_Image *img = (Fl_Shared_Image*)image_panel_data->user_data(); +if (img) { + img->release(); + image_panel_data->user_data(NULL); +}} {} +} + +Function {make_widget_panel()} { + comment {Create a panel that can be used with all known widgets} open +} { + Fl_Window {} { + comment {Use a Double Window to avoid flickering.} open + xywh {372 208 420 400} type Double labelsize 11 align 80 resizable hotspot + code0 {o->size_range(o->w(), o->h());} size_range {420 400 0 0} visible + } { + Fl_Tabs widget_tabs { + callback {propagate_load((Fl_Group *)o,v);} open + xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 7 when 0 resizable + code0 {o->show();} + } { + Fl_Group wp_gui_tab { + label GUI + callback propagate_load open + xywh {10 30 400 330} labelsize 11 when 0 resizable + } { + Fl_Group {} { + label {Label:} + callback propagate_load open + xywh {95 40 309 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input wp_gui_label { + callback label_cb + tooltip {The label text for the widget. +Use Ctrl-J for newlines.} xywh {95 40 190 20} labelfont 1 labelsize 11 when 15 textsize 11 resizable + } + Fl_Choice {} { + callback labeltype_cb open + tooltip {The label style for the widget.} xywh {285 40 119 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 + code0 {extern Fl_Menu_Item labeltypemenu[];} + code1 {o->menu(labeltypemenu);} + } {} + } + Fl_Group {} { + label {Image:} + callback propagate_load open + xywh {95 65 309 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input widget_image_input { + callback image_cb + tooltip {The active image for the widget.} xywh {95 65 200 20} labelfont 1 labelsize 11 textsize 11 resizable + } + Fl_Button {} { + label {Browse...} + callback image_browse_cb + tooltip {Click to choose the active image.} xywh {295 65 89 20} labelsize 11 align 256 + } + Fl_Button {} { + label {...} + callback {if (v != LOAD) { + run_image_panel(); +}} + tooltip {more image options} bind_image 1 xywh {384 65 20 20} + } + } + Fl_Group {} { + label {Inactive:} + callback propagate_load open + xywh {95 90 309 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input widget_deimage_input { + callback inactive_cb + tooltip {The inactive image for the widget.} xywh {95 90 200 20} labelfont 1 labelsize 11 textsize 11 resizable + } + Fl_Button {} { + label {Browse...} + callback inactive_browse_cb + tooltip {Click to choose the inactive image.} xywh {295 90 89 20} labelsize 11 + } + } + Fl_Group wp_gui_alignment { + label {Alignment:} + callback propagate_load open + xywh {95 115 312 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Button {} { + label Clip + user_data {(fl_intptr_t)FL_ALIGN_CLIP} + callback align_cb + tooltip {Clip the label to the inside of the widget.} xywh {95 115 30 20} type Toggle selection_color 8 labelsize 11 align 16 + } + Fl_Button {} { + label Wrap + user_data {(fl_intptr_t)FL_ALIGN_WRAP} + callback align_cb + tooltip {Wrap the label text.} xywh {130 115 38 20} type Toggle selection_color 8 labelsize 11 + } + Fl_Button {} { + label {@-1<-} + user_data {(fl_intptr_t)FL_ALIGN_LEFT} + callback align_cb + tooltip {Left-align the label.} xywh {278 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide + } + Fl_Button {} { + label {@-1->} + user_data {(fl_intptr_t)FL_ALIGN_RIGHT} + callback align_cb + tooltip {Right-align the label.} xywh {303 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide + } + Fl_Button {} { + label {@-18} + user_data {(fl_intptr_t)FL_ALIGN_TOP} + callback align_cb + tooltip {Top-align the label.} xywh {328 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide + } + Fl_Button {} { + label {@-12} + user_data {(fl_intptr_t)FL_ALIGN_BOTTOM} + callback align_cb + tooltip {Bottom-align the label.} xywh {353 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide + } + Fl_Choice {} { + callback align_text_image_cb + xywh {172 115 116 20} down_box BORDER_BOX labelsize 11 textsize 11 + } { + MenuItem {} { + label { Image Alignment } + user_data {(fl_intptr_t)0xFFFFFFFF} + xywh {145 145 100 20} labelfont 2 labelsize 10 deactivate + } + MenuItem {} { + label {image over text} + user_data {(fl_intptr_t)FL_ALIGN_IMAGE_OVER_TEXT} + xywh {25 25 100 20} labelsize 9 + } + MenuItem {} { + label {text over image} + user_data {(fl_intptr_t)FL_ALIGN_TEXT_OVER_IMAGE} + xywh {15 15 100 20} labelsize 9 + } + MenuItem {} { + label {text next to image} + user_data {(fl_intptr_t)FL_ALIGN_TEXT_NEXT_TO_IMAGE} + xywh {35 35 100 20} labelsize 9 + } + MenuItem {} { + label {image next to text} + user_data {(fl_intptr_t)FL_ALIGN_IMAGE_NEXT_TO_TEXT} + xywh {45 45 100 20} labelsize 9 + } + MenuItem {} { + label {image is backdrop} + user_data {(fl_intptr_t)FL_ALIGN_IMAGE_BACKDROP} + xywh {55 55 100 20} labelsize 9 + } + } + Fl_Choice {} { + callback align_position_cb + xywh {293 115 86 20} down_box BORDER_BOX labelsize 11 textsize 11 + } { + MenuItem {} { + label { Inside && Outside } + user_data {(fl_intptr_t)0xFFFFFFFF} + xywh {135 135 100 20} labelfont 2 labelsize 10 deactivate + } + MenuItem {} { + label {top left} + user_data {(fl_intptr_t)FL_ALIGN_TOP_LEFT} + xywh {45 45 100 20} labelsize 9 + } + MenuItem {} { + label top + user_data {(fl_intptr_t)FL_ALIGN_TOP} + xywh {55 55 100 20} labelsize 9 + } + MenuItem {} { + label {top right} + user_data {(fl_intptr_t)FL_ALIGN_TOP_RIGHT} + xywh {65 65 100 20} labelsize 9 + } + MenuItem {} { + label left + user_data {(fl_intptr_t)FL_ALIGN_LEFT} + xywh {75 75 100 20} labelsize 9 + } + MenuItem {} { + label center + user_data {(fl_intptr_t)FL_ALIGN_CENTER} + xywh {35 35 100 20} labelsize 9 + } + MenuItem {} { + label right + user_data {(fl_intptr_t)FL_ALIGN_RIGHT} + xywh {85 85 100 20} labelsize 9 + } + MenuItem {} { + label {bottom left} + user_data {(fl_intptr_t)FL_ALIGN_BOTTOM_LEFT} + xywh {95 95 100 20} labelsize 9 + } + MenuItem {} { + label bottom + user_data {(fl_intptr_t)FL_ALIGN_BOTTOM} + xywh {105 105 100 20} labelsize 9 + } + MenuItem {} { + label {bottom right} + user_data {(fl_intptr_t)FL_ALIGN_BOTTOM_RIGHT} + xywh {115 115 100 20} labelsize 9 + } + MenuItem {} { + label { Outside Alignment } + user_data {(fl_intptr_t)0xFFFFFFFF} + xywh {125 125 100 20} labelfont 2 labelsize 10 deactivate + } + MenuItem {} { + label {left top} + user_data {(fl_intptr_t)FL_ALIGN_LEFT_TOP} + xywh {135 135 100 20} labelsize 9 + } + MenuItem {} { + label {right top} + user_data {(fl_intptr_t)FL_ALIGN_RIGHT_TOP} + xywh {145 145 100 20} labelsize 9 + } + MenuItem {} { + label {left bottom} + user_data {(fl_intptr_t)FL_ALIGN_LEFT_BOTTOM} + xywh {155 155 100 20} labelsize 9 + } + MenuItem {} { + label {right bottom} + user_data {(fl_intptr_t)FL_ALIGN_RIGHT_BOTTOM} + xywh {45 45 100 20} labelsize 9 + } + } + Fl_Button {} { + label {@-3square} + user_data {(fl_intptr_t)FL_ALIGN_INSIDE} + callback align_cb + tooltip {Show the label inside the widget.} xywh {384 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 + } + Fl_Box {} { + xywh {406 115 1 20} labelsize 11 resizable + } + } + Fl_Group {} { + label {Position:} + callback position_group_cb open + xywh {95 150 314 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input widget_x_input { + label {X:} + callback x_cb + tooltip {The X position of the widget as a number or formula. +Formulas can be simple math, including the variables +x, px, sx, cx, and i} xywh {95 150 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input widget_y_input { + label {Y:} + callback y_cb + tooltip {The Y position of the widget as a number or formula. +Formulas can be simple math, including the variables +y, py, sy, cy, and i} xywh {155 150 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input widget_w_input { + label {Width:} + callback w_cb + tooltip {The width of the widget as a number or formula. +Formulas can be simple math, including the variables +w, pw, sw, cw, and i} xywh {215 150 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input widget_h_input { + label {Height:} + callback h_cb + tooltip {The height of the widget as a number or formula. +Formulas can be simple math, including the variables +h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Choice {} { + label {Children:} + callback wc_relative_cb open + tooltip {When instantiating a widget class, the children can either be fixed in their original position, automatically be repositioned, or both repsositioned and resized to fit the container.} xywh {335 150 64 20} down_box BORDER_BOX labelsize 11 align 5 textsize 11 + } { + MenuItem {} { + label Fixed + xywh {0 0 31 20} labelsize 11 + } + MenuItem {} { + label Reposition + xywh {0 0 31 20} labelsize 11 + } + MenuItem {} { + label Resize + xywh {0 0 31 20} labelsize 11 + } + } + Fl_Box {} { + xywh {399 150 1 20} hide resizable + } + } + Fl_Group wp_gui_flexp { + label {Flex Parent:} + callback flex_size_group_cb + comment {This group is only visible if the parent is an Fl_Flex widget} + xywh {95 150 314 20} labelfont 1 labelsize 11 align 4 hide + } { + Fl_Value_Input widget_flex_size { + label {Size:} + callback flex_size_cb + tooltip {Fixed Width or Height for a horizontal or vertical Fl_Flex Parent.} xywh {95 150 55 20} labelsize 11 align 5 textsize 11 + } + Fl_Check_Button widget_flex_fixed { + label fixed + callback flex_fixed_cb + tooltip {If checked, the size of the widget stays fixed.} xywh {155 150 55 20} down_box DOWN_BOX labelsize 11 + } + Fl_Box {} { + xywh {398 150 1 20} resizable + } + } + Fl_Group wp_gui_values { + label {Values:} + callback values_group_cb open + xywh {95 185 300 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Value_Input {} { + label {Size:} + callback slider_size_cb + tooltip {The size of the slider.} xywh {95 185 55 20} labelsize 11 align 5 textsize 11 + } + Fl_Value_Input {} { + label {Minimum:} + callback min_cb + tooltip {The minimum value of the widget.} xywh {155 185 55 20} labelsize 11 align 5 textsize 11 + } + Fl_Value_Input {} { + label {Maximum:} + callback max_cb + tooltip {The maximum value of the widget.} xywh {215 185 55 20} labelsize 11 align 5 value 1 textsize 11 + } + Fl_Value_Input {} { + label {Step:} + callback step_cb + tooltip {The resolution of the widget value.} xywh {275 185 55 20} labelsize 11 align 5 textsize 11 + } + Fl_Value_Input {} { + label {Value:} + callback value_cb + tooltip {The current widget value.} xywh {335 185 55 20} labelsize 11 align 5 textsize 11 + } + Fl_Box {} { + xywh {395 185 0 20} resizable + } + } + Fl_Group wp_gui_margins { + label {Margins:} + callback flex_margin_group_cb + comment {This group is only visible for Fl_Flex widgets} + xywh {95 185 300 20} labelfont 1 labelsize 11 align 4 hide + } { + Fl_Value_Input {} { + label {Left:} + callback flex_margin_left_cb + tooltip {Left margin in group.} xywh {95 185 55 20} labelsize 11 align 5 textsize 11 + } + Fl_Value_Input {} { + label {Top:} + callback flex_margin_top_cb + tooltip {Top margin in group.} xywh {155 185 55 20} labelsize 11 align 5 textsize 11 + } + Fl_Value_Input {} { + label {Right:} + callback flex_margin_right_cb + tooltip {Right margin in group.} xywh {215 185 55 20} labelsize 11 align 5 textsize 11 + } + Fl_Value_Input {} { + label {Bottom:} + callback flex_margin_bottom_cb + tooltip {Bottom margin in group.} xywh {275 185 55 20} labelsize 11 align 5 textsize 11 + } + Fl_Value_Input {} { + label {Gap:} + callback flex_margin_gap_cb + tooltip {Gap between children.} xywh {335 185 55 20} labelsize 11 align 5 textsize 11 + } + Fl_Box {} { + xywh {395 185 0 20} resizable + } + } + Fl_Group wp_gui_sizerange { + label {Size Range:} + callback size_range_group_cb open + xywh {95 185 300 20} labelfont 1 labelsize 11 align 4 hide + } { + Fl_Value_Input {} { + label {Minimum Size:} + callback min_w_cb + tooltip {The size of the slider.} xywh {95 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11 + } + Fl_Value_Input {} { + callback min_h_cb + tooltip {The minimum value of the widget.} xywh {155 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11 + } + Fl_Button {} { + label set + callback set_min_size_cb + xywh {215 185 25 20} labelsize 11 + } + Fl_Value_Input {} { + label {Maximum Size:} + callback max_w_cb + tooltip {The maximum value of the widget.} xywh {245 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11 + } + Fl_Value_Input {} { + callback max_h_cb + tooltip {The resolution of the widget value.} xywh {305 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11 + } + Fl_Button {} { + label set + callback set_max_size_cb + xywh {365 185 25 20} labelsize 11 + } + Fl_Box {} { + xywh {395 185 0 20} resizable + } + } + Fl_Group {} { + label {Shortcut:} + callback propagate_load open + xywh {95 210 310 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Button wp_gui_shortcut { + callback shortcut_in_cb + comment {This is a special button that grabs keystrokes directly} + tooltip {The shortcut key for the widget. +Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selection_color 12 labelsize 11 when 1 + code0 {\#include <FL/Fl_Shortcut_Button.H>} + class Fl_Shortcut_Button + } + } + Fl_Group wp_gui_xclass { + label {X Class:} + callback propagate_load + xywh {95 235 300 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input {} { + label {:} + callback xclass_cb + tooltip {The X resource class.} xywh {95 235 95 20} labelfont 1 labelsize 11 textsize 11 resizable + } + Fl_Light_Button {} { + label Border + callback border_cb + tooltip {Add a border around the window.} xywh {195 235 60 20} selection_color 1 labelsize 11 + } + Fl_Light_Button {} { + label Modal + callback modal_cb + tooltip {Make the window modal.} xywh {260 235 55 20} selection_color 1 labelsize 11 + } + Fl_Light_Button {} { + label Nonmodal + callback non_modal_cb + tooltip {Make the window non-modal.} xywh {320 235 75 20} selection_color 1 labelsize 11 align 148 + } + } + Fl_Group wp_gui_attributes { + label {Attributes:} + callback propagate_load + xywh {95 260 305 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Light_Button {} { + label Visible + callback visible_cb + tooltip {Show the widget.} xywh {95 260 60 20} selection_color 1 labelsize 11 + } + Fl_Light_Button {} { + label Active + callback active_cb + tooltip {Activate the widget.} xywh {160 260 60 20} selection_color 1 labelsize 11 + } + Fl_Light_Button {} { + label Resizable + callback resizable_cb + tooltip {Make the widget resizable.} xywh {225 260 75 20} selection_color 1 labelsize 11 when 1 + } + Fl_Light_Button {} { + label Hotspot + callback hotspot_cb + tooltip {Center the window under this widget.} xywh {305 260 70 20} selection_color 1 labelsize 11 when 1 + } + Fl_Box {} { + xywh {395 260 0 20} labelsize 11 resizable + } + } + Fl_Input wp_gui_tooltip { + label {Tooltip:} + callback tooltip_cb + tooltip {The tooltip text for the widget. +Use Ctrl-J for newlines.} xywh {95 285 310 20} labelfont 1 labelsize 11 textsize 11 + } + Fl_Box {} { + xywh {95 305 300 5} hide resizable + } + } + Fl_Group wp_style_tab { + label Style + callback propagate_load open + xywh {10 30 400 330} labelsize 11 when 0 hide + } { + Fl_Group wp_style_label { + label {Label Font:} + callback propagate_load open + xywh {99 40 305 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Choice {} { + callback labelfont_cb open + tooltip {The style of the label text.} xywh {99 40 148 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable + code0 {extern Fl_Menu_Item fontmenu[];} + code1 {o->menu(fontmenu);} + } {} + Fl_Value_Input {} { + callback labelsize_cb + tooltip {The size of the label text.} xywh {247 40 49 20} labelsize 11 maximum 100 step 1 value 14 textsize 11 + } + Fl_Button w_labelcolor { + label {Label Color} + callback labelcolor_cb + tooltip {The color of the label text.} xywh {296 40 90 20} labelsize 11 + } + Fl_Menu_Button {} { + callback labelcolor_menu_cb open + xywh {386 40 18 20} + code0 {extern Fl_Menu_Item colormenu[];} + code1 {o->menu(colormenu);} + } {} + } + Fl_Group wp_style_box { + label {Box:} + callback propagate_load open + xywh {99 65 305 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Choice {} { + callback box_cb open + tooltip {The "up" box of the widget.} xywh {100 65 196 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable + code0 {extern Fl_Menu_Item boxmenu[];} + code1 {o->menu(boxmenu);} + } {} + Fl_Button w_color { + label Color + callback color_cb + tooltip {The background color of the widget.} xywh {296 65 90 20} labelsize 11 + } + Fl_Menu_Button {} { + callback color_menu_cb open + xywh {386 65 18 20} + code0 {extern Fl_Menu_Item colormenu[];} + code1 {o->menu(colormenu);} + } {} + } + Fl_Group wp_style_downbox { + label {Down Box:} + callback propagate_load open + xywh {99 90 305 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Choice {} { + callback down_box_cb open + tooltip {The "down" box of the widget.} xywh {99 90 197 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable + code0 {extern Fl_Menu_Item boxmenu[];} + code1 {o->menu(boxmenu);} + } {} + Fl_Button w_selectcolor { + label {Select Color} + callback color2_cb + tooltip {The selection color of the widget.} xywh {296 90 90 20} labelsize 11 + } + Fl_Menu_Button {} { + callback color2_menu_cb open + xywh {386 90 18 20} + code0 {extern Fl_Menu_Item colormenu[];} + code1 {o->menu(colormenu);} + } {} + } + Fl_Group wp_style_text { + label {Text Font:} + callback propagate_load open + xywh {99 115 305 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Choice {} { + callback textfont_cb open + tooltip {The value text style.} xywh {99 115 148 20} box DOWN_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable + code0 {extern Fl_Menu_Item fontmenu[];} + code1 {o->menu(fontmenu);} + } {} + Fl_Value_Input {} { + callback textsize_cb + tooltip {The value text size.} xywh {247 115 49 20} labelsize 11 maximum 100 step 1 value 14 textsize 11 + } + Fl_Button w_textcolor { + label {Text Color} + callback textcolor_cb + tooltip {The value text color.} xywh {296 115 90 20} labelsize 11 + } + Fl_Menu_Button {} { + callback textcolor_menu_cb open + xywh {386 115 18 20} + code0 {extern Fl_Menu_Item colormenu[];} + code1 {o->menu(colormenu);} + } {} + } + Fl_Group {} { + label {Label Margin:} + callback propagate_load open + xywh {99 150 242 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Value_Input {} { + label {Horizontal:} + callback h_label_margin_cb + tooltip {Spacing between label and the horizontally aligned side of the widget.} xywh {99 150 55 20} labelsize 11 align 5 minimum -127 maximum 128 step 1 textsize 11 + } + Fl_Value_Input {} { + label {Vertical:} + callback v_label_margin_cb + tooltip {Spacing between label and the vertically aligned side of the widget.} xywh {159 150 55 20} labelsize 11 align 5 minimum -127 maximum 127 step 1 textsize 11 + } + Fl_Value_Input {} { + label {Text to Image:} + callback image_spacing_cb + tooltip {Gap between label image and text in pixels} xywh {219 150 55 20} labelsize 11 align 5 maximum 255 step 1 textsize 11 + } + Fl_Box {} { + xywh {281 150 60 20} labelsize 11 hide resizable + } + } + Fl_Light_Button {} { + label Compact + callback compact_cb + tooltip {use compact box types for closely set buttons} xywh {99 175 90 20} selection_color 1 labelsize 11 + } + Fl_Box {} { + xywh {195 205 40 40} labelsize 11 resizable + } + } + Fl_Group wp_cpp_tab { + label {C++} + callback propagate_load open + xywh {10 30 400 330} labelsize 11 when 0 hide + } { + Fl_Group wp_cpp_class { + label {Class:} + callback propagate_load open + xywh {95 40 310 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input {} { + user_data 4 + callback subclass_cb + tooltip {The widget subclass.} xywh {95 40 172 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable + } + Fl_Choice {} { + callback subtype_cb open + tooltip {The widget subtype.} xywh {267 40 138 20} box THIN_UP_BOX down_box BORDER_BOX labelsize 11 textsize 11 + } {} + } + Fl_Group wp_cpp_name { + label {Name:} + callback propagate_load + xywh {95 65 310 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input {} { + callback name_cb + tooltip {The name of the widget.} xywh {95 65 235 20} labelfont 1 labelsize 11 textsize 11 resizable + } + Fl_Choice {} { + callback name_public_member_cb open + tooltip {Change member access attribute.} xywh {330 65 75 20} down_box BORDER_BOX labelsize 11 when 1 textsize 11 + } { + MenuItem {} { + label private + user_data 0 user_data_type long + xywh {0 0 100 20} labelsize 11 + } + MenuItem {} { + label public + user_data 1 user_data_type long + xywh {0 0 100 20} labelsize 11 + } + MenuItem {} { + label protected + user_data 2 user_data_type long + xywh {0 0 100 20} labelsize 11 + } + } + Fl_Choice {} { + callback name_public_cb open + tooltip {Change widget accessibility.} xywh {330 65 75 20} down_box BORDER_BOX labelsize 11 when 1 textsize 11 hide + } { + MenuItem {} { + label local + user_data 0 user_data_type long + xywh {10 10 100 20} labelsize 11 + } + MenuItem {} { + label global + user_data 1 user_data_type long + xywh {10 10 100 20} labelsize 11 + } + } + } + Fl_Input {v_input[0]} { + label {Extra Code:} + user_data 0 + callback v_input_cb + tooltip {Extra initialization code for the widget.} xywh {95 90 310 20} labelfont 1 labelsize 11 textfont 4 textsize 11 + } + Fl_Input {v_input[1]} { + user_data 1 + callback v_input_cb + tooltip {Extra initialization code for the widget.} xywh {95 110 310 20} labelsize 11 textfont 4 textsize 11 + } + Fl_Input {v_input[2]} { + user_data 2 + callback v_input_cb + tooltip {Extra initialization code for the widget.} xywh {95 130 310 20} labelsize 11 textfont 4 textsize 11 + } + Fl_Input {v_input[3]} { + user_data 3 + callback v_input_cb + tooltip {Extra initialization code for the widget.} xywh {95 150 310 20} labelsize 11 textfont 4 textsize 11 + } + Fl_Tile {} { + callback {wComment->do_callback(wComment, v); +wCallback->do_callback(wCallback, v);} open + xywh {95 175 310 130} resizable + } { + Fl_Group {} {open + xywh {95 175 310 48} box FLAT_BOX + } { + Fl_Text_Editor wComment { + label {Comment:} + tooltip {Write a comment that will appear in the source code and in the widget tree overview.} xywh {95 175 310 45} box DOWN_BOX labelfont 1 labelsize 11 align 4 when 1 textfont 6 textsize 11 textcolor 59 resizable + code0 {wComment->buffer(new Fl_Text_Buffer());} + code1 {wComment->callback((Fl_Callback*)comment_cb);} + } + } + Fl_Group {} {open + xywh {95 223 310 82} box FLAT_BOX + } { + Fl_Text_Editor wCallback { + label {Callback:} + callback callback_cb + tooltip {The callback function or code for the widget. Use the variable name 'o' to access the Widget pointer and 'v' to access the user value.} xywh {95 225 310 80} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable + code0 {\#include "widgets/CodeEditor.h"} + class CodeEditor + } + } + } + Fl_Group wp_cpp_callback { + label {User Data:} + callback propagate_load open + xywh {95 310 310 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input {} { + callback user_data_cb + tooltip {The user data to pass into the callback code.} xywh {95 310 158 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable + } + Fl_Menu_Button {} { + label When + callback when_cb open + tooltip {When to call the callback function.} xywh {260 310 145 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 when 1 textsize 11 + code0 {extern Fl_Menu_Item whenmenu[];} + code1 {o->menu(whenmenu);} + } {} + } + Fl_Group {} { + label {Type:} + callback propagate_load open + xywh {95 332 310 26} labelfont 1 labelsize 11 align 4 + } { + Fl_Input_Choice {} { + callback user_data_type_cb open + tooltip {The type of the user data.} xywh {95 335 158 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable + } { + MenuItem {} { + label {void*} + xywh {0 0 31 20} labelfont 4 labelsize 11 + } + MenuItem {} { + label long + xywh {0 0 31 20} labelfont 4 labelsize 11 + } + } + Fl_Box w_when_box { + label FL_WHEN_NEVER + xywh {260 332 145 26} box FLAT_BOX selection_color 1 labelsize 8 align 209 + } + } + } + Fl_Group widget_tab_grid_child { + label {Grid Child} + callback propagate_load open + xywh {10 30 400 330} labelsize 11 hide + } { + Fl_Group {} { + label {Location:} + callback propagate_load open + xywh {95 60 315 20} box FLAT_BOX labelfont 1 labelsize 11 align 4 + } { + Fl_Input widget_grid_row_input { + label {Row:} + callback grid_set_row_cb + xywh {95 60 40 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Group {} {open + xywh {135 60 30 20} + } { + Fl_Button {} { + label {-} + callback grid_dec_row_cb + xywh {135 60 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + Fl_Button {} { + label {+} + callback grid_inc_row_cb + xywh {150 60 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + } + Fl_Input widget_grid_col_input { + label {Column:} + callback grid_set_col_cb + xywh {175 60 40 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Group {} {open + xywh {215 60 30 20} + } { + Fl_Button {} { + label {-} + callback grid_dec_col_cb + xywh {215 60 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + Fl_Button {} { + label {+} + callback grid_inc_col_cb + xywh {230 60 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + } + Fl_Box {} { + xywh {395 60 1 20} hide resizable + } + Fl_Box widget_grid_transient { + label TRANSIENT + callback {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(); + } +}} + xywh {250 60 80 20} labelsize 11 labelcolor 1 + } + Fl_Box widget_grid_unlinked { + label UNLINKED + xywh {250 60 80 20} labelsize 11 labelcolor 1 hide + } + } + Fl_Group wp_gridc_align { + label {Align:} + callback propagate_load open + xywh {95 100 315 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Choice {} { + label Horizontal + callback grid_align_horizontal_cb open + xywh {95 100 115 20} down_box BORDER_BOX labelsize 11 align 5 textsize 11 + } { + MenuItem GRID_LEFT { + label GRID_LEFT + user_data {(fl_intptr_t)FL_GRID_LEFT} user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_CENTER + user_data {(fl_intptr_t)FL_GRID_CENTER} user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_RIGHT + user_data {(fl_intptr_t)FL_GRID_RIGHT} user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_FILL + user_data {(fl_intptr_t)FL_GRID_HORIZONTAL} user_data_type long + xywh {10 10 31 20} labelsize 11 + } + } + Fl_Choice {} { + label Vertical + callback grid_align_vertical_cb open + xywh {215 100 115 20} down_box BORDER_BOX labelsize 11 align 5 textsize 11 + } { + MenuItem {} { + label GRID_TOP + user_data {(fl_intptr_t)FL_GRID_TOP} user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_CENTER + user_data {(fl_intptr_t)FL_GRID_CENTER} user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_BOTTOM + user_data {(fl_intptr_t)FL_GRID_BOTTOM} user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_FILL + user_data {(fl_intptr_t)FL_GRID_VERTICAL} user_data_type long + xywh {10 10 31 20} labelsize 11 + } + } + Fl_Box {} { + xywh {395 100 1 20} hide resizable + } + } + Fl_Group wp_gridc_size { + label {Min. Size:} + callback propagate_load open + xywh {95 135 315 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input {} { + label {Width:} + callback grid_set_min_wdt_cb + xywh {95 135 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Height:} + callback grid_set_min_hgt_cb + xywh {155 135 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Box {} { + xywh {395 135 1 20} hide resizable + } + } + Fl_Group {} { + label {Span:} + callback propagate_load open + xywh {95 170 315 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input widget_grid_rowspan_input { + label {Row Span:} + callback grid_set_rowspan_cb + xywh {95 170 40 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Group {} {open + xywh {135 170 30 20} + } { + Fl_Button {} { + label {-} + callback grid_dec_rowspan_cb + xywh {135 170 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + Fl_Button {} { + label {+} + callback grid_inc_rowspan_cb + xywh {150 170 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + } + Fl_Input widget_grid_colspan_input { + label {Col. Span:} + callback grid_set_colspan_cb + xywh {175 170 40 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Group {} {open + xywh {215 170 30 20} + } { + Fl_Button {} { + label {-} + callback grid_dec_colspan_cb + xywh {215 170 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + Fl_Button {} { + label {+} + callback grid_inc_colspan_cb + xywh {230 170 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + } + Fl_Box {} { + xywh {395 170 1 20} hide resizable + } + } + Fl_Box {} { + xywh {95 350 300 5} labelsize 11 hide resizable + } + } + Fl_Group widget_tab_grid { + label Grid + callback propagate_load open + xywh {10 30 400 330} labelsize 11 hide + } { + Fl_Group {} { + label {Grid Layout:} + callback propagate_load open + xywh {95 60 315 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input widget_grid_rows { + label {Rows:} + callback {// grid_rows_cb +Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +if (v == LOAD) { + o->value(grid->rows()); +} else { + int m = o->value(), old_m = grid->rows(); + if (m < 1) { + m = 1; + o->value(m); + } + if (m < old_m) { + // TODO: verify that this will not unlink existings cells + // Offer a dialog with "delete children", "unlink cells", "cancel" + } + 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); + } +}} + tooltip {Number of horizontal rows in the Grid group} xywh {95 60 40 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Group {} {open + xywh {135 60 30 20} + } { + Fl_Button {} { + label {-} + callback {if (v != LOAD) { + widget_grid_rows->value( widget_grid_rows->value()-1 ); + widget_grid_rows->do_callback(); +}} + xywh {135 60 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + Fl_Button {} { + label {+} + callback {if (v != LOAD) { + widget_grid_rows->value( widget_grid_rows->value()+1 ); + widget_grid_rows->do_callback(); +}} + xywh {150 60 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + } + Fl_Input widget_grid_cols { + label {Columns:} + callback {// grid_rows_cb +Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +if (v == LOAD) { + o->value(grid->cols()); +} else { + int m = o->value(), old_m = grid->cols(); + if (m < 1) { + m = 1; + o->value(m); + } + if (m < old_m) { + // TODO: verify that this will not unlink existings cells + // Offer a dialog with "delete children", "unlink cells", "cancel" + } + 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); + } +}} + tooltip {Number of vertical columns in the Grid group} xywh {175 60 40 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Group {} {open + xywh {215 60 30 20} + } { + Fl_Button {} { + label {-} + callback {if (v != LOAD) { + widget_grid_cols->value( widget_grid_cols->value()-1 ); + widget_grid_cols->do_callback(); +}} + xywh {215 60 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + Fl_Button {} { + label {+} + callback {if (v != LOAD) { + widget_grid_cols->value( widget_grid_cols->value()+1 ); + widget_grid_cols->do_callback(); +}} + xywh {230 60 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + } + Fl_Box {} { + xywh {396 60 0 20} resizable + } + } + Fl_Group wp_grid_margin { + label {Margins:} + callback propagate_load open + xywh {95 100 315 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Value_Input {} { + label {Left:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +int m = 0; +if (v == LOAD) { + grid->margin(&m, NULL, NULL, NULL); + o->value(m); +} 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); + } +}} + tooltip {Left margin in group.} xywh {95 100 55 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Value_Input {} { + label {Top:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +int m = 0; +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); + } +}} + tooltip {Top margin in group.} xywh {155 100 55 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Value_Input {} { + label {Right:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +int m = 0; +if (v == LOAD) { + grid->margin(NULL, NULL, &m, NULL); + o->value(m); +} 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); + } +}} + tooltip {Right margin in group.} xywh {215 100 55 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Value_Input {} { + label {Bottom:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +int m = 0; +if (v == LOAD) { + grid->margin(NULL, NULL, NULL, &m); + o->value(m); +} 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); + } +}} + tooltip {Bottom margin in group.} xywh {275 100 55 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Box {} { + xywh {396 100 0 20} resizable + } + } + Fl_Group wp_grid_gaps { + label {Gaps:} + callback propagate_load open + xywh {95 135 315 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Value_Input {} { + label {Row:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +if (v == LOAD) { + int m = 0; + grid->gap(&m, NULL); + o->value(m); +} 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); + } +}} + tooltip {Gap between children.} xywh {95 135 55 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Value_Input {} { + label {Col:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +if (v == LOAD) { + int m = 0; + grid->gap(NULL, &m); + o->value(m); +} 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); + } +}} + tooltip {Gap between children.} xywh {155 135 55 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Box {} { + xywh {396 135 0 20} resizable + } + } + Fl_Group {} { + label {Row:} + callback {if (v == LOAD) { + Fl_Grid *grid = Fl_Grid_Type::selected(); + if (grid) + o->activate(); + else + o->deactivate(); + propagate_load(o, v); +}} open + xywh {95 175 315 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input widget_grid_curr_row { + label Index + callback {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); +if (v == LOAD) { + // will automatically propagate +} else { + widget_grid_curr_row_attributes->do_callback(widget_grid_curr_row_attributes, LOAD); +}} + xywh {95 175 40 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Group {} { + callback propagate_load open + xywh {135 175 30 20} + } { + Fl_Button {} { + label {-} + callback {if (v != LOAD) { + widget_grid_curr_row->value( widget_grid_curr_row->value()-1 ); + widget_grid_curr_row->do_callback(); +}} + xywh {135 175 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + Fl_Button {} { + label {+} + callback {if (v != LOAD) { + widget_grid_curr_row->value( widget_grid_curr_row->value()+1 ); + widget_grid_curr_row->do_callback(); +}} + xywh {150 175 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + } + Fl_Box {} { + label {:} + xywh {165 175 15 20} labelsize 11 + } + Fl_Group widget_grid_curr_row_attributes { + callback propagate_load open + xywh {180 175 175 20} + } { + Fl_Input {} { + label {Height:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +int r = widget_grid_curr_row->value(); +if (v == LOAD) { + o->value(grid->row_height(r)); +} 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); + } +}} + xywh {180 175 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Weight:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +int r = widget_grid_curr_row->value(); +if (v == LOAD) { + o->value(grid->row_weight(r)); +} 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); + } +}} + xywh {240 175 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Gap:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +int r = widget_grid_curr_row->value(); +if (v == LOAD) { + o->value(grid->row_gap(r)); +} 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); + } +}} + xywh {300 175 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + } + Fl_Box {} { + xywh {400 175 1 20} hide resizable + } + } + Fl_Group {} { + label {Column:} + callback propagate_load open + xywh {95 210 315 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input widget_grid_curr_col { + label Index + callback {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); +if (v == LOAD) { + // will automatically propagate +} else { + widget_grid_curr_col_attributes->do_callback(widget_grid_curr_col_attributes, LOAD); +}} + xywh {95 210 40 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Group {} {open + xywh {135 210 30 20} + } { + Fl_Button {} { + label {-} + callback {if (v != LOAD) { + widget_grid_curr_col->value( widget_grid_curr_col->value()-1 ); + widget_grid_curr_col->do_callback(); +}} + xywh {135 210 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + Fl_Button {} { + label {+} + callback {if (v != LOAD) { + widget_grid_curr_col->value( widget_grid_curr_col->value()+1 ); + widget_grid_curr_col->do_callback(); +}} + xywh {150 210 15 20} labelsize 11 + code0 {o->clear_visible_focus();} compact 1 + } + } + Fl_Box {} { + label {:} + xywh {165 210 15 20} labelsize 11 + } + Fl_Group widget_grid_curr_col_attributes { + callback propagate_load open + xywh {180 210 175 20} + } { + Fl_Input {} { + label {Width:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +int c = widget_grid_curr_col->value(); +if (v == LOAD) { + o->value(grid->col_width(c)); +} 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); + } +}} + xywh {180 210 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Weight:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +int c = widget_grid_curr_col->value(); +if (v == LOAD) { + o->value(grid->col_weight(c)); +} 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); + } +}} + xywh {240 210 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Gap:} + callback {Fl_Grid *grid = Fl_Grid_Type::selected(); +if (!grid) return; +int c = widget_grid_curr_col->value(); +if (v == LOAD) { + o->value(grid->col_gap(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); + } +}} + xywh {300 210 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + } + Fl_Box {} { + xywh {400 210 1 20} hide resizable + } + } + Fl_Box {} { + xywh {95 350 300 5} labelsize 11 hide resizable + } + } + } + Fl_Tabs widget_tabs_repo { + xywh {10 10 400 350} hide + code0 {o->hide();} + } { + Fl_Group {} {open + xywh {10 30 400 330} resizable + } {} + } + Fl_Group {} { + xywh {10 370 400 20} labelsize 11 + } { + Fl_Button wLiveMode { + label {Live &Resize} + callback live_mode_cb + tooltip {Create a live duplicate of the selected widgets to test resizing and menu behavior.} xywh {10 370 80 20} type Toggle labelsize 10 + } + Fl_Button overlay_button { + label {Hide &Overlays} + callback overlay_cb + tooltip {Hide the widget overlay box.} xywh {94 370 80 20} labelsize 10 + } + Fl_Box {} { + comment {Hidden resizable box} + xywh {258 370 72 20} labelsize 11 hide resizable + } + Fl_Return_Button {} { + label Close + callback ok_cb + xywh {330 370 80 20} labelsize 11 + } + } + } +} |
