diff options
| author | Matthias Melcher <github@matthiasm.com> | 2023-10-22 01:50:06 +0200 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2023-10-22 01:51:53 +0200 |
| commit | b4fd7037ac37286146165b89282e6ab893e63a78 (patch) | |
| tree | 6b66afcd3ec3dc86305e984eafa16ae8ab8cff59 /fluid | |
| parent | d102e466d6a1047279dab57bcb13a74a7fddbe7f (diff) | |
FLUID: more Fl_Grid settings
Diffstat (limited to 'fluid')
| -rw-r--r-- | fluid/Fl_Grid_Type.cxx | 229 | ||||
| -rw-r--r-- | fluid/widget_panel.cxx | 132 | ||||
| -rw-r--r-- | fluid/widget_panel.fl | 74 | ||||
| -rw-r--r-- | fluid/widget_panel.fl.bak | 1167 | ||||
| -rw-r--r-- | fluid/widget_panel.h | 4 |
5 files changed, 1504 insertions, 102 deletions
diff --git a/fluid/Fl_Grid_Type.cxx b/fluid/Fl_Grid_Type.cxx index 415a2dab5..cecad20ec 100644 --- a/fluid/Fl_Grid_Type.cxx +++ b/fluid/Fl_Grid_Type.cxx @@ -27,6 +27,7 @@ #include <FL/Fl_Grid.H> #include <FL/Fl_Value_Input.H> #include <FL/Fl_Button.H> +#include <FL/Fl_Choice.H> #include "../src/flstring.h" #include <stdio.h> @@ -44,7 +45,7 @@ Fl_Grid_Type::Fl_Grid_Type() { Fl_Widget *Fl_Grid_Type::widget(int X,int Y,int W,int H) { Fl_Grid *g = new Fl_Grid(X,Y,W,H); g->layout(3, 3); -// g->show_grid(1, FL_RED); + g->show_grid(1, FL_RED); Fl_Group::current(0); return g; } @@ -59,12 +60,16 @@ void Fl_Grid_Type::copy_properties() int rg, cg; s->gap(&rg, &cg); d->gap(rg, cg); + // TODO: lots to do! } void Fl_Grid_Type::write_properties(Fd_Project_Writer &f) { super::write_properties(f); Fl_Grid* grid = (Fl_Grid*)o; + int i, rows = grid->rows(), cols = grid->cols(); + f.write_indent(level+1); + f.write_string("dimensions {%d %d}", rows, cols); int lm, tm, rm, bm; grid->margin(&lm, &tm, &rm, &bm); if (lm!=0 || tm!=0 || rm!=0 || bm!=0) @@ -73,19 +78,37 @@ void Fl_Grid_Type::write_properties(Fd_Project_Writer &f) grid->gap(&rg, &cg); if (rg!=0 || cg!=0) f.write_string("gap {%d %d}", rg, cg); + for (i=0; i<rows; i++) if (grid->row_height(i)!=0) break; + if (i<rows) { + f.write_indent(level+1); + f.write_string("rowheights {"); + for (i=0; i<rows; i++) f.write_string("%d", grid->row_height(i)); + f.write_string("}"); + } + // TODO: add row_weight, row_gap, col_width, col_weight, col_gap } void Fl_Grid_Type::read_property(Fd_Project_Reader &f, const char *c) { Fl_Grid* grid = (Fl_Grid*)o; - if (!strcmp(c,"margin")) { + if (!strcmp(c,"dimensions")) { + int rows = 3, cols = 3; + if (sscanf(f.read_word(),"%d %d", &rows, &cols) == 2) + grid->layout(rows, cols); + } else if (!strcmp(c,"margin")) { int lm, tm, rm, bm; if (sscanf(f.read_word(),"%d %d %d %d", &lm, &tm, &rm, &bm) == 4) grid->margin(lm, tm, rm, bm); } else if (!strcmp(c,"gap")) { int rg, cg; - if (sscanf(f.read_word(),"%d %d", &rg, &cg)) + if (sscanf(f.read_word(),"%d %d", &rg, &cg) == 2) grid->gap(rg, cg); + } else if (!strcmp(c,"rowheights")) { + int rows = grid->rows(); + f.read_word(1); // "{" + for (int i=0; i<rows; i++) grid->row_height(i, f.read_int()); + f.read_word(1); // "}" + // TODO: add row_weight, row_gap, col_width, col_weight, col_gap } else { super::read_property(f, c); } @@ -95,25 +118,44 @@ void Fl_Grid_Type::write_parent_properties(Fd_Project_Writer &f, Fl_Type *child, Fl_Grid *grid; Fl_Widget *child_widget; Fl_Grid::Cell *cell; - if (!child->is_true_widget()) goto err; + if (!child->is_true_widget()) return super::write_parent_properties(f, child, true); grid = (Fl_Grid*)o; child_widget = ((Fl_Widget_Type*)child)->o; cell = grid->cell(child_widget); - if (!cell) goto err; + if (!cell) return super::write_parent_properties(f, child, true); if (encapsulate) { f.write_indent(level+2); f.write_string("parent_properties {"); } f.write_indent(level+3); f.write_string("location {%d %d}", cell->row(), cell->col()); + int v = cell->colspan(); + if (v>1) { + f.write_indent(level+3); + f.write_string("colspan %d", v); + } + v = cell->rowspan(); + if (v>1) { + f.write_indent(level+3); + f.write_string("rowspan %d", v); + } + v = (int)cell->align(); + if (v!=FL_GRID_FILL) { + f.write_indent(level+3); + f.write_string("align %d", v); + } + int min_w = 0, min_h = 0; + cell->minimum_size(&min_w, &min_h); + if (min_w!=20 || min_h!=20) { + f.write_indent(level+3); + f.write_string("minsize {%d %d}", min_w, min_h); + } super::write_parent_properties(f, child, false); if (encapsulate) { f.write_indent(level+2); f.write_string("}"); } return; -err: - super::write_parent_properties(f, child, true); } void Fl_Grid_Type::read_parent_properties(Fd_Project_Reader &f, Fl_Type *child, const char *property) { @@ -130,7 +172,30 @@ void Fl_Grid_Type::read_parent_properties(Fd_Project_Reader &f, Fl_Type *child, sscanf(value, "%d %d", &row, &col); property = f.read_word(); } - if (row>=0 && col>=0) grid->widget(child_widget, row, col, rowspan, colspan, (Fl_Grid_Align)align); + if (!strcmp(property, "colspan")) { + colspan = atoi(f.read_word()); + property = f.read_word(); + } + if (!strcmp(property, "rowspan")) { + rowspan = atoi(f.read_word()); + property = f.read_word(); + } + if (!strcmp(property, "align")) { + align = atoi(f.read_word()); + property = f.read_word(); + } + if (row>=0 && col>=0) { + Fl_Grid::Cell *cell = grid->widget(child_widget, row, col, rowspan, colspan, (Fl_Grid_Align)align); + if (cell) { + int min_w = 20, min_h = 20; + if (!strcmp(property, "minsize")) { + const char *value = f.read_word(); + sscanf(value, "%d %d", &min_w, &min_h); + property = f.read_word(); + } + cell->minimum_size(min_w, min_h); + } + } super::read_parent_properties(f, child, property); } @@ -138,7 +203,8 @@ void Fl_Grid_Type::write_code1(Fd_Code_Writer& f) { const char *var = name() ? name() : "o"; Fl_Grid* grid = (Fl_Grid*)o; Fl_Widget_Type::write_code1(f); - f.write_c("%s%s->layout(%d, %d);\n", f.indent(), var, grid->rows(), grid->cols()); + int i, rows = grid->rows(), cols = grid->cols(); + f.write_c("%s%s->layout(%d, %d);\n", f.indent(), var, rows, cols); int lm, tm, rm, bm; grid->margin(&lm, &tm, &rm, &bm); if (lm!=0 || tm!=0 || rm!=0 || bm!=0) @@ -147,16 +213,34 @@ void Fl_Grid_Type::write_code1(Fd_Code_Writer& f) { grid->gap(&rg, &cg); if (rg!=0 || cg!=0) f.write_c("%s%s->gap(%d, %d);\n", f.indent(), var, rg, cg); + for (i=0; i<rows; i++) if (grid->row_height(i)!=0) break; + if (i<rows) { + f.write_c("%sstatic const int rowheights[] = { %d", f.indent(), grid->row_height(0)); + for (i=1; i<rows; i++) f.write_c(", %d", grid->row_height(i)); + f.write_c(" };\n"); + f.write_c("%s%s->row_height(rowheights, %d);\n", f.indent(), var, rows); + } + // TODO: add row_weight, row_gap, col_width, col_weight, col_gap } void Fl_Grid_Type::write_code2(Fd_Code_Writer& f) { const char *var = name() ? name() : "o"; Fl_Grid* grid = (Fl_Grid*)o; + bool first_cell = true; for (int i=0; i<grid->children(); i++) { Fl_Widget *c = grid->child(i); Fl_Grid::Cell *cell = grid->cell(c); if (cell) { - f.write_c("%s%s->widget(%s->child(%d), %d, %d);\n", f.indent(), var, var, i, cell->row(), cell->col()); + if (first_cell) { + f.write_c("%sFl_Grid::Cell *cell = NULL;\n", f.indent()); + first_cell = false; + } + f.write_c("%scell = %s->widget(%s->child(%d), %d, %d, %d, %d, %d);\n", + f.indent(), var, var, i, cell->row(), cell->col(), + cell->rowspan(), cell->colspan(), cell->align()); + int min_w = 20, min_h = 20; + cell->minimum_size(&min_w, &min_h); + f.write_c("%sif (cell) cell->minimum_size(%d, %d);\n", f.indent(), min_w, min_h); } } super::write_code2(f); @@ -192,12 +276,17 @@ void Fl_Grid_Type::child_resized(Fl_Widget_Type *child_type) { Fl_Grid *grid = (Fl_Grid*)o; Fl_Widget *child = child_type->o; Fl_Grid::Cell *cell = grid->cell(child); - if (cell) { - short r = cell->row(), c = cell->col(), rs = cell->rowspan(), cs = cell->colspan(); - Fl_Grid_Align a = cell->align(); - grid->remove_cell(r, c); - grid->widget(child, r, c, rs, cs, a); - } // else unmanaged by Fl_Grid + if (cell && ((cell->align()&FL_GRID_HORIZONTAL)==0)) { + int min_w = 0, min_h = 0; + cell->minimum_size(&min_w, &min_h); + cell->minimum_size(min_w, child->h()); + } + if (cell && ((cell->align()&FL_GRID_VERTICAL)==0)) { + int min_w = 0, min_h = 0; + cell->minimum_size(&min_w, &min_h); + cell->minimum_size(child->w(), min_h); + } + // TODO: if the user resizes an FL_GRID_FILL widget, should we change the alignment? } void grid_cb(Fl_Value_Input* i, void* v, int what) { @@ -298,6 +387,8 @@ void grid_cols_cb(Fluid_Coord_Input* i, void* v) { grid_cb(i, v, 7); } +extern Fluid_Coord_Input *widget_grid_row_input, *widget_grid_col_input; + void grid_child_cb(Fluid_Coord_Input* i, void* v, int what) { if ( !current_widget || !current_widget->parent @@ -315,32 +406,41 @@ void grid_child_cb(Fluid_Coord_Input* i, void* v, int what) { case 9: v = cell->col(); break; case 10: v = cell->rowspan(); break; case 11: v = cell->colspan(); break; + case 12: cell->minimum_size(&v, NULL); break; + case 13: cell->minimum_size(NULL, &v); break; } } i->value(v); } else { - int mod = 0; - int v2 = 0, old_v = -1, v = (int)i->value(); + int v2 = -1, old_v = -1, v = i->value(); + if (i==widget_grid_row_input) v2 = widget_grid_col_input->value(); + if (i==widget_grid_col_input) v2 = widget_grid_row_input->value(); Fl_Grid::Cell *cell = g->cell(current_widget->o); + Fl_Grid::Cell *new_cell = NULL; if (cell) { switch (what) { case 8: old_v = cell->row(); v2 = cell->col(); break; case 9: old_v = cell->col(); v2 = cell->row(); break; case 10: old_v = cell->rowspan(); break; case 11: old_v = cell->colspan(); break; + case 12: cell->minimum_size(&old_v, &v2); break; + case 13: cell->minimum_size(&v2, &old_v); break; } } if (old_v != v) { switch (what) { - case 8: g->widget(current_widget->o, v, v2); break; - case 9: g->widget(current_widget->o, v2, v); break; - case 10: cell->rowspan(v); break; - case 11: cell->colspan(v); break; + case 8: if (v>=0 && v2>=0) new_cell = g->widget(current_widget->o, v, v2); break; + case 9: if (v>=0 && v2>=0) new_cell = g->widget(current_widget->o, v2, v); break; + case 10: if (cell) cell->rowspan(v); break; + case 11: if (cell) cell->colspan(v); break; + case 12: if (cell) cell->minimum_size(v, v2); break; + case 13: if (cell) cell->minimum_size(v2, v); break; } + if (!cell && new_cell) + new_cell->minimum_size(20, 20); g->need_layout(true); g->redraw(); - mod = 1; - if (mod) set_modflag(1); + set_modflag(1); } } } @@ -356,10 +456,47 @@ void grid_set_rowspan_cb(Fluid_Coord_Input* i, void* v) { void grid_set_colspan_cb(Fluid_Coord_Input* i, void* v) { grid_child_cb(i, v, 11); } +void grid_set_min_wdt_cb(Fluid_Coord_Input* i, void* v) { + grid_child_cb(i, v, 12); +} +void grid_set_min_hgt_cb(Fluid_Coord_Input* i, void* v) { + grid_child_cb(i, v, 13); +} + void grid_align_cb(Fl_Choice* i, void* v) { + if ( !current_widget + || !current_widget->parent + || !current_widget->parent->is_a(ID_Grid)) + { + return; + } + Fl_Grid *g = ((Fl_Grid*)((Fl_Widget_Type*)current_widget->parent)->o); + if (v == LOAD) { + int a = FL_GRID_FILL; + Fl_Grid::Cell *cell = g->cell(current_widget->o); + if (cell) { + a = cell->align(); + } + const Fl_Menu_Item *mi = i->find_item_with_argument(a); + if (mi) i->value(mi); + } else { + int v = FL_GRID_FILL, old_v = FL_GRID_FILL; + const Fl_Menu_Item *mi = i->mvalue(); + if (mi) v = (int)mi->argument(); + Fl_Grid::Cell *cell = g->cell(current_widget->o); + if (cell) { + old_v = cell->align(); + } + if (old_v != v) { + cell->align((Fl_Grid_Align)v); + g->need_layout(true); + g->redraw(); + set_modflag(1); + } + } } -void grid_row_height(Fluid_Coord_Input* i, void* v) { +void grid_row_col_cb(Fluid_Coord_Input* i, void* v, int what) { if ( !current_widget || !current_widget->parent || !current_widget->parent->is_a(ID_Grid)) @@ -370,25 +507,63 @@ void grid_row_height(Fluid_Coord_Input* i, void* v) { Fl_Grid::Cell *cell = g->cell(current_widget->o); if (v == LOAD) { if (cell) { - i->value(g->row_height(cell->row())); + int v = 0; + switch (what) { + case 0: v = g->row_height(cell->row()); break; + case 1: v = g->row_weight(cell->row()); break; + case 2: v = g->row_gap(cell->row()); break; + case 3: v = g->col_width(cell->col()); break; + case 4: v = g->col_weight(cell->col()); break; + case 5: v = g->col_gap(cell->col()); break; + } + i->value(v); i->activate(); } else { i->deactivate(); } } else { if (cell) { - g->row_height(cell->row(), i->value()); + int v = i->value(), old_v = 0; + switch (what) { + case 0: old_v = g->row_height(cell->row()); break; + case 1: old_v = g->row_weight(cell->row()); break; + case 2: old_v = g->row_gap(cell->row()); break; + case 3: old_v = g->col_width(cell->col()); break; + case 4: old_v = g->col_weight(cell->col()); break; + case 5: old_v = g->col_gap(cell->col()); break; + } + if (old_v != v) { + switch (what) { + case 0: g->row_height(cell->row(), v); break; + case 1: g->row_weight(cell->row(), v); break; + case 2: g->row_gap(cell->row(), v); break; + case 3: g->col_width(cell->col(), v); break; + case 4: g->col_weight(cell->col(), v); break; + case 5: g->col_gap(cell->col(), v); break; + } + g->need_layout(true); + g->redraw(); + set_modflag(1); + } } } } +void grid_row_height(Fluid_Coord_Input* i, void* v) { + grid_row_col_cb(i, v, 0); +} void grid_row_weight(Fluid_Coord_Input* i, void* v) { + grid_row_col_cb(i, v, 1); } void grid_row_gap(Fluid_Coord_Input* i, void* v) { + grid_row_col_cb(i, v, 2); } void grid_col_width(Fluid_Coord_Input* i, void* v) { + grid_row_col_cb(i, v, 3); } void grid_col_weight(Fluid_Coord_Input* i, void* v) { + grid_row_col_cb(i, v, 4); } void grid_col_gap(Fluid_Coord_Input* i, void* v) { + grid_row_col_cb(i, v, 5); } diff --git a/fluid/widget_panel.cxx b/fluid/widget_panel.cxx index fc907946d..84bcf75e4 100644 --- a/fluid/widget_panel.cxx +++ b/fluid/widget_panel.cxx @@ -118,10 +118,13 @@ Fl_Tabs *widget_tabs_repo=(Fl_Tabs *)0; Fl_Group *widget_tab_grid=(Fl_Group *)0; +Fluid_Coord_Input *widget_grid_row_input=(Fluid_Coord_Input *)0; + +Fluid_Coord_Input *widget_grid_col_input=(Fluid_Coord_Input *)0; + Fl_Menu_Item menu_Align[] = { {"GRID_CENTER", 0, 0, (void*)(FL_GRID_CENTER), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, {"GRID_FILL", 0, 0, (void*)(FL_GRID_FILL), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, - {"GRID_PROPORTIONAL", 0, 0, (void*)(FL_GRID_PROPORTIONAL), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, {"GRID_HORIZONTAL", 0, 0, (void*)(FL_GRID_HORIZONTAL), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, {"GRID_VERTICAL", 0, 0, (void*)(FL_GRID_VERTICAL), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, {"GRID_LEFT", 0, 0, (void*)(FL_GRID_LEFT), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0}, @@ -1138,37 +1141,42 @@ access the Widget pointer and \'v\' to access the user value."); { widget_tab_grid = new Fl_Group(10, 30, 400, 330, "Grid"); widget_tab_grid->labelsize(11); widget_tab_grid->callback((Fl_Callback*)propagate_load); + { Fl_Box* o = new Fl_Box(25, 43, 370, 28, "The Fl_Grid implementation in FLUID is still experimental!"); + o->labelfont(1); + o->labelsize(11); + o->labelcolor((Fl_Color)1); + } // Fl_Box* o { Fl_Group* o = new Fl_Group(96, 110, 314, 20, "Location:"); o->labelfont(1); o->labelsize(11); o->callback((Fl_Callback*)propagate_load); o->align(Fl_Align(FL_ALIGN_LEFT)); - { Fluid_Coord_Input* o = new Fluid_Coord_Input(96, 110, 55, 20, "Row:"); - 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_row_cb); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->when(FL_WHEN_RELEASE); - } // Fluid_Coord_Input* o - { Fluid_Coord_Input* o = new Fluid_Coord_Input(156, 110, 55, 20, "Column:"); - 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_col_cb); - o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); - o->when(FL_WHEN_RELEASE); - } // Fluid_Coord_Input* o + { widget_grid_row_input = new Fluid_Coord_Input(96, 110, 55, 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); + } // Fluid_Coord_Input* widget_grid_row_input + { widget_grid_col_input = new Fluid_Coord_Input(156, 110, 55, 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); + } // Fluid_Coord_Input* widget_grid_col_input { Fl_Choice* o = new Fl_Choice(215, 110, 185, 20, "Align:"); o->down_box(FL_BORDER_BOX); o->labelsize(11); @@ -1188,7 +1196,7 @@ access the Widget pointer and \'v\' to access the user value."); o->labelsize(12); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); } // Fl_Box* o - { Fl_Group* o = new Fl_Group(96, 145, 314, 20, "Size:"); + { Fl_Group* o = new Fl_Group(96, 145, 314, 20, "Cell Span:"); o->labelfont(1); o->labelsize(11); o->callback((Fl_Callback*)propagate_load); @@ -1225,17 +1233,54 @@ access the Widget pointer and \'v\' to access the user value."); } // Fluid_Coord_Input* o o->end(); } // Fl_Group* o - { Fl_Box* o = new Fl_Box(96, 179, 155, 20, "-- Grid --"); + { Fl_Group* o = new Fl_Group(96, 180, 314, 20, "Size:"); + o->labelfont(1); + o->labelsize(11); + o->callback((Fl_Callback*)propagate_load); + o->align(Fl_Align(FL_ALIGN_LEFT)); + { Fl_Box* o = new Fl_Box(400, 180, 1, 20); + o->hide(); + Fl_Group::current()->resizable(o); + } // Fl_Box* o + { Fluid_Coord_Input* o = new Fluid_Coord_Input(96, 180, 55, 20, "Min.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); + } // Fluid_Coord_Input* o + { Fluid_Coord_Input* o = new Fluid_Coord_Input(156, 180, 55, 20, "Min.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); + } // Fluid_Coord_Input* o + o->end(); + } // Fl_Group* o + { Fl_Box* o = new Fl_Box(96, 214, 155, 20, "-- Grid --"); o->labelfont(1); o->labelsize(12); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); } // Fl_Box* o - { Fl_Group* o = new Fl_Group(96, 215, 314, 20, "Row:"); + { Fl_Group* o = new Fl_Group(96, 250, 314, 20, "Row:"); o->labelfont(1); o->labelsize(11); o->callback((Fl_Callback*)propagate_load); o->align(Fl_Align(FL_ALIGN_LEFT)); - { Fluid_Coord_Input* o = new Fluid_Coord_Input(96, 215, 55, 20, "Index"); + { Fluid_Coord_Input* o = new Fluid_Coord_Input(96, 250, 55, 20, "Index"); o->box(FL_DOWN_BOX); o->color(FL_BACKGROUND2_COLOR); o->selection_color(FL_SELECTION_COLOR); @@ -1248,7 +1293,7 @@ access the Widget pointer and \'v\' to access the user value."); o->when(FL_WHEN_RELEASE); o->deactivate(); } // Fluid_Coord_Input* o - { Fluid_Coord_Input* o = new Fluid_Coord_Input(156, 215, 55, 20, "Height:"); + { Fluid_Coord_Input* o = new Fluid_Coord_Input(156, 250, 55, 20, "Height:"); o->box(FL_DOWN_BOX); o->color(FL_BACKGROUND2_COLOR); o->selection_color(FL_SELECTION_COLOR); @@ -1261,7 +1306,7 @@ access the Widget pointer and \'v\' to access the user value."); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_RELEASE); } // Fluid_Coord_Input* o - { Fluid_Coord_Input* o = new Fluid_Coord_Input(216, 215, 55, 20, "Weight:"); + { Fluid_Coord_Input* o = new Fluid_Coord_Input(216, 250, 55, 20, "Weight:"); o->box(FL_DOWN_BOX); o->color(FL_BACKGROUND2_COLOR); o->selection_color(FL_SELECTION_COLOR); @@ -1274,7 +1319,7 @@ access the Widget pointer and \'v\' to access the user value."); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_RELEASE); } // Fluid_Coord_Input* o - { Fluid_Coord_Input* o = new Fluid_Coord_Input(276, 215, 55, 20, "Gap:"); + { Fluid_Coord_Input* o = new Fluid_Coord_Input(276, 250, 55, 20, "Gap:"); o->box(FL_DOWN_BOX); o->color(FL_BACKGROUND2_COLOR); o->selection_color(FL_SELECTION_COLOR); @@ -1287,18 +1332,18 @@ access the Widget pointer and \'v\' to access the user value."); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_RELEASE); } // Fluid_Coord_Input* o - { Fl_Box* o = new Fl_Box(400, 215, 1, 20); + { Fl_Box* o = new Fl_Box(400, 250, 1, 20); o->hide(); Fl_Group::current()->resizable(o); } // Fl_Box* o o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(96, 250, 314, 20, "Column:"); + { Fl_Group* o = new Fl_Group(96, 285, 314, 20, "Column:"); o->labelfont(1); o->labelsize(11); o->callback((Fl_Callback*)propagate_load); o->align(Fl_Align(FL_ALIGN_LEFT)); - { Fluid_Coord_Input* o = new Fluid_Coord_Input(96, 250, 55, 20, "Index"); + { Fluid_Coord_Input* o = new Fluid_Coord_Input(96, 285, 55, 20, "Index"); o->box(FL_DOWN_BOX); o->color(FL_BACKGROUND2_COLOR); o->selection_color(FL_SELECTION_COLOR); @@ -1311,7 +1356,7 @@ access the Widget pointer and \'v\' to access the user value."); o->when(FL_WHEN_RELEASE); o->deactivate(); } // Fluid_Coord_Input* o - { Fluid_Coord_Input* o = new Fluid_Coord_Input(156, 250, 55, 20, "Width:"); + { Fluid_Coord_Input* o = new Fluid_Coord_Input(156, 285, 55, 20, "Width:"); o->box(FL_DOWN_BOX); o->color(FL_BACKGROUND2_COLOR); o->selection_color(FL_SELECTION_COLOR); @@ -1324,7 +1369,7 @@ access the Widget pointer and \'v\' to access the user value."); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_RELEASE); } // Fluid_Coord_Input* o - { Fluid_Coord_Input* o = new Fluid_Coord_Input(216, 250, 55, 20, "Weight:"); + { Fluid_Coord_Input* o = new Fluid_Coord_Input(216, 285, 55, 20, "Weight:"); o->box(FL_DOWN_BOX); o->color(FL_BACKGROUND2_COLOR); o->selection_color(FL_SELECTION_COLOR); @@ -1337,7 +1382,7 @@ access the Widget pointer and \'v\' to access the user value."); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_RELEASE); } // Fluid_Coord_Input* o - { Fluid_Coord_Input* o = new Fluid_Coord_Input(276, 250, 55, 20, "Gap:"); + { Fluid_Coord_Input* o = new Fluid_Coord_Input(276, 285, 55, 20, "Gap:"); o->box(FL_DOWN_BOX); o->color(FL_BACKGROUND2_COLOR); o->selection_color(FL_SELECTION_COLOR); @@ -1350,17 +1395,12 @@ access the Widget pointer and \'v\' to access the user value."); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_RELEASE); } // Fluid_Coord_Input* o - { Fl_Box* o = new Fl_Box(400, 250, 1, 20); + { Fl_Box* o = new Fl_Box(400, 285, 1, 20); o->hide(); Fl_Group::current()->resizable(o); } // Fl_Box* o o->end(); } // Fl_Group* o - { Fl_Box* o = new Fl_Box(25, 43, 370, 28, "The Fl_Grid implementation in FLUID is still experimental!"); - o->labelfont(1); - o->labelsize(11); - o->labelcolor((Fl_Color)1); - } // Fl_Box* o widget_tab_grid->end(); } // Fl_Group* widget_tab_grid o->hide(); diff --git a/fluid/widget_panel.fl b/fluid/widget_panel.fl index 6c3b199e4..0fa9caafd 100644 --- a/fluid/widget_panel.fl +++ b/fluid/widget_panel.fl @@ -874,7 +874,7 @@ wCallback->do_callback(wCallback, v);} open } } } - Fl_Tabs widget_tabs_repo {selected + Fl_Tabs widget_tabs_repo {open xywh {10 10 400 350} hide code0 {o->hide();} } { @@ -886,26 +886,30 @@ wCallback->do_callback(wCallback, v);} open callback propagate_load open xywh {10 30 400 330} labelsize 11 } { + Fl_Box {} { + label {The Fl_Grid implementation in FLUID is still experimental!} + xywh {25 43 370 28} labelfont 1 labelsize 11 labelcolor 1 + } Fl_Group {} { label {Location:} callback propagate_load open xywh {96 110 314 20} labelfont 1 labelsize 11 align 4 } { - Fl_Input {} { + Fl_Input widget_grid_row_input { label {Row:} callback grid_set_row_cb xywh {96 110 55 20} labelsize 11 align 5 textsize 11 class Fluid_Coord_Input } - Fl_Input {} { + Fl_Input widget_grid_col_input { label {Column:} - callback grid_set_col_cb + callback grid_set_col_cb selected xywh {156 110 55 20} labelsize 11 align 5 textsize 11 class Fluid_Coord_Input } Fl_Choice {} { label {Align:} - callback grid_align_cb + callback grid_align_cb open xywh {215 110 185 20} down_box BORDER_BOX labelsize 11 align 5 textsize 11 } { MenuItem {} { @@ -919,11 +923,6 @@ wCallback->do_callback(wCallback, v);} open xywh {10 10 31 20} labelsize 11 } MenuItem {} { - label GRID_PROPORTIONAL - user_data FL_GRID_PROPORTIONAL user_data_type long - xywh {10 10 31 20} labelsize 11 - } - MenuItem {} { label GRID_HORIZONTAL user_data FL_GRID_HORIZONTAL user_data_type long xywh {10 10 31 20} labelsize 11 @@ -983,7 +982,7 @@ wCallback->do_callback(wCallback, v);} open xywh {96 74 155 20} labelfont 1 labelsize 12 align 20 } Fl_Group {} { - label {Size:} + label {Cell Span:} callback propagate_load open xywh {96 145 314 20} labelfont 1 labelsize 11 align 4 } { @@ -1003,81 +1002,98 @@ wCallback->do_callback(wCallback, v);} open class Fluid_Coord_Input } } + Fl_Group {} { + label {Size:} + callback propagate_load open + xywh {96 180 314 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Box {} { + xywh {400 180 1 20} hide resizable + } + Fl_Input {} { + label {Min.Width:} + callback grid_set_min_wdt_cb + xywh {96 180 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Min.Height:} + callback grid_set_min_hgt_cb + xywh {156 180 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + } Fl_Box {} { label {-- Grid --} - xywh {96 179 155 20} labelfont 1 labelsize 12 align 20 + xywh {96 214 155 20} labelfont 1 labelsize 12 align 20 } Fl_Group {} { label {Row:} callback propagate_load open - xywh {96 215 314 20} labelfont 1 labelsize 11 align 4 + xywh {96 250 314 20} labelfont 1 labelsize 11 align 4 } { Fl_Input {} { label Index - xywh {96 215 55 20} labelsize 11 align 5 textsize 11 deactivate + xywh {96 250 55 20} labelsize 11 align 5 textsize 11 deactivate class Fluid_Coord_Input } Fl_Input {} { label {Height:} callback grid_row_height - xywh {156 215 55 20} labelsize 11 align 5 textsize 11 + xywh {156 250 55 20} labelsize 11 align 5 textsize 11 class Fluid_Coord_Input } Fl_Input {} { label {Weight:} callback grid_row_weight - xywh {216 215 55 20} labelsize 11 align 5 textsize 11 + xywh {216 250 55 20} labelsize 11 align 5 textsize 11 class Fluid_Coord_Input } Fl_Input {} { label {Gap:} callback grid_row_gap - xywh {276 215 55 20} labelsize 11 align 5 textsize 11 + xywh {276 250 55 20} labelsize 11 align 5 textsize 11 class Fluid_Coord_Input } Fl_Box {} { - xywh {400 215 1 20} hide resizable + xywh {400 250 1 20} hide resizable } } Fl_Group {} { label {Column:} callback propagate_load open - xywh {96 250 314 20} labelfont 1 labelsize 11 align 4 + xywh {96 285 314 20} labelfont 1 labelsize 11 align 4 } { Fl_Input {} { label Index - xywh {96 250 55 20} labelsize 11 align 5 textsize 11 deactivate + xywh {96 285 55 20} labelsize 11 align 5 textsize 11 deactivate class Fluid_Coord_Input } Fl_Input {} { label {Width:} callback grid_col_width - xywh {156 250 55 20} labelsize 11 align 5 textsize 11 + xywh {156 285 55 20} labelsize 11 align 5 textsize 11 class Fluid_Coord_Input } Fl_Input {} { label {Weight:} callback grid_col_weight - xywh {216 250 55 20} labelsize 11 align 5 textsize 11 + xywh {216 285 55 20} labelsize 11 align 5 textsize 11 class Fluid_Coord_Input } Fl_Input {} { label {Gap:} callback grid_col_gap - xywh {276 250 55 20} labelsize 11 align 5 textsize 11 + xywh {276 285 55 20} labelsize 11 align 5 textsize 11 class Fluid_Coord_Input } Fl_Box {} { - xywh {400 250 1 20} hide resizable + xywh {400 285 1 20} hide resizable } } - Fl_Box {} { - label {The Fl_Grid implementation in FLUID is still experimental!} - xywh {25 43 370 28} labelfont 1 labelsize 11 labelcolor 1 - } } } - Fl_Group {} {open + Fl_Group {} { xywh {10 370 400 20} labelsize 11 } { Fl_Button wLiveMode { diff --git a/fluid/widget_panel.fl.bak b/fluid/widget_panel.fl.bak new file mode 100644 index 000000000..c016a073a --- /dev/null +++ b/fluid/widget_panel.fl.bak @@ -0,0 +1,1167 @@ +# data file for the Fltk User Interface Designer (fluid) +version 1.0400 +header_name {.h} +code_name {.cxx} +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 "Fl_Widget_Type.h"} {private global +} + +decl {\#include <FL/Fl_Grid.H>} {private global +} + +decl {\#include "custom_widgets.h"} {public global +} + +Function {make_window()} {open +} { + Fl_Window {} {open + xywh {459 635 480 320} type Double visible + } { + Fl_Grid {} {open + xywh {25 25 336 228} box DOWN_BOX + dimensions {3 3} margin {4 4 4 4} gap {4 4} + rowheights { 0 32 0 } + } { + Fl_Button {} { + label Button + xywh {31 31 77 62} + parent_properties { + location {0 0} + } + } + Fl_Button {} { + label Button selected + xywh {140 124 100 20} + parent_properties { + location {1 1} + align 0 + minsize {100 20} + } + } + Fl_Button {} { + label Button + xywh {273 176 82 71} + parent_properties { + location {2 2} + minsize {25 28} + } + } + Fl_Button {} { + label Button + xywh {112 31 243 62} + parent_properties { + location {0 1} + colspan 2 + minsize {25 20} + } + } + } + } +} + +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 {566 244 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);} + xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 7 when 0 hide resizable + code0 {o->show();} + } { + Fl_Group {} { + 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 {} { + 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 {} { + 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 69 20} labelsize 11 + } + Fl_Button {} { + callback compress_image_cb + tooltip {store image uncompressed as RGBA data +or compressed in the original file format} xywh {364 65 20 20} type Toggle + code0 {o->image(compressed_pixmap);} + code3 {\#include "pixmaps.h"} + } + Fl_Button {} { + callback bind_image_cb + tooltip {bind the image to the widget, so it will be deleted automatically} xywh {384 65 20 20} type Toggle + code0 {o->image(bind_pixmap);} + code3 {\#include "pixmaps.h"} + } + } + Fl_Group {} { + label {Inactive:} + callback propagate_load open + xywh {95 90 309 20} labelfont 1 labelsize 11 align 4 + } { + Fl_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 69 20} labelsize 11 + } + Fl_Button {} { + callback compress_deimage_cb + tooltip {store image uncompressed as RGBA data +or compressed in the original file format} xywh {364 90 20 20} type Toggle + code0 {o->image(compressed_pixmap);} + code3 {\#include "pixmaps.h"} + } + Fl_Button {} { + callback bind_deimage_cb + tooltip {bind the image to the widget, so it will be deleted automatically} xywh {384 90 20 20} type Toggle + code0 {o->image(bind_pixmap);} + code3 {\#include "pixmaps.h"} + } + } + Fl_Group {} { + label {Alignment:} + callback propagate_load + xywh {95 115 310 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 open + xywh {172 115 110 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 11 deactivate + } + MenuItem {} { + label {image over text} + user_data {(fl_intptr_t)FL_ALIGN_IMAGE_OVER_TEXT} + xywh {25 25 100 20} labelsize 11 + } + MenuItem {} { + label {text over image} + user_data {(fl_intptr_t)FL_ALIGN_TEXT_OVER_IMAGE} + xywh {15 15 100 20} labelsize 11 + } + MenuItem {} { + label {text next to image} + user_data {(fl_intptr_t)FL_ALIGN_TEXT_NEXT_TO_IMAGE} + xywh {35 35 100 20} labelsize 11 + } + MenuItem {} { + label {image next to text} + user_data {(fl_intptr_t)FL_ALIGN_IMAGE_NEXT_TO_TEXT} + xywh {45 45 100 20} labelsize 11 + } + MenuItem {} { + label {image is backdrop} + user_data {(fl_intptr_t)FL_ALIGN_IMAGE_BACKDROP} + xywh {55 55 100 20} labelsize 11 + } + } + Fl_Choice {} { + callback align_position_cb open + xywh {288 115 85 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 11 deactivate + } + MenuItem {} { + label {top left} + user_data {(fl_intptr_t)FL_ALIGN_TOP_LEFT} + xywh {45 45 100 20} labelsize 11 + } + MenuItem {} { + label top + user_data {(fl_intptr_t)FL_ALIGN_TOP} + xywh {55 55 100 20} labelsize 11 + } + MenuItem {} { + label {top right} + user_data {(fl_intptr_t)FL_ALIGN_TOP_RIGHT} + xywh {65 65 100 20} labelsize 11 + } + MenuItem {} { + label left + user_data {(fl_intptr_t)FL_ALIGN_LEFT} + xywh {75 75 100 20} labelsize 11 + } + MenuItem {} { + label center + user_data {(fl_intptr_t)FL_ALIGN_CENTER} + xywh {35 35 100 20} labelsize 11 + } + MenuItem {} { + label right + user_data {(fl_intptr_t)FL_ALIGN_RIGHT} + xywh {85 85 100 20} labelsize 11 + } + MenuItem {} { + label {bottom left} + user_data {(fl_intptr_t)FL_ALIGN_BOTTOM_LEFT} + xywh {95 95 100 20} labelsize 11 + } + MenuItem {} { + label bottom + user_data {(fl_intptr_t)FL_ALIGN_BOTTOM} + xywh {105 105 100 20} labelsize 11 + } + MenuItem {} { + label {bottom right} + user_data {(fl_intptr_t)FL_ALIGN_BOTTOM_RIGHT} + xywh {115 115 100 20} labelsize 11 + } + MenuItem {} { + label { Outside Alignment } + user_data {(fl_intptr_t)0xFFFFFFFF} + xywh {125 125 100 20} labelfont 2 labelsize 11 deactivate + } + MenuItem {} { + label {left top} + user_data {(fl_intptr_t)FL_ALIGN_LEFT_TOP} + xywh {135 135 100 20} labelsize 11 + } + MenuItem {} { + label {right top} + user_data {(fl_intptr_t)FL_ALIGN_RIGHT_TOP} + xywh {145 145 100 20} labelsize 11 + } + MenuItem {} { + label {left bottom} + user_data {(fl_intptr_t)FL_ALIGN_LEFT_BOTTOM} + xywh {155 155 100 20} labelsize 11 + } + MenuItem {} { + label {right bottom} + user_data {(fl_intptr_t)FL_ALIGN_RIGHT_BOTTOM} + xywh {45 45 100 20} labelsize 11 + } + } + Fl_Button {} { + label {@-3square} + user_data {(fl_intptr_t)FL_ALIGN_INSIDE} + callback align_cb + tooltip {Show the label inside the widget.} xywh {378 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 + } + Fl_Box {} { + xywh {404 115 0 20} labelsize 11 resizable + } + } + Fl_Group {} { + label {Position:} + callback position_group_cb + 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 {} { + 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 {} { + 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 {} { + 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 {} { + label {Grid Margins: + + +Layout:} + callback grid_margin_group_cb + comment {This group is only visible for Fl_Grid widgets} open + xywh {95 185 300 55} labelfont 1 labelsize 11 align 4 hide + } { + Fl_Value_Input {} { + label {Left:} + callback grid_margin_left_cb + tooltip {Left margin in group.} xywh {95 185 45 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Value_Input {} { + label {Top:} + callback grid_margin_top_cb + tooltip {Top margin in group.} xywh {144 185 45 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Value_Input {} { + label {Right:} + callback grid_margin_right_cb + tooltip {Right margin in group.} xywh {193 185 45 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Value_Input {} { + label {Bottom:} + callback grid_margin_bottom_cb + tooltip {Bottom margin in group.} xywh {242 185 45 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Value_Input {} { + label {RowGap:} + callback grid_row_gap_cb + tooltip {Gap between children.} xywh {291 185 45 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Value_Input {} { + label {ColGap:} + callback grid_col_gap_cb + tooltip {Gap between children.} xywh {340 185 45 20} labelsize 11 align 5 maximum 1000 step 1 textsize 11 + } + Fl_Box {} { + xywh {395 185 0 20} resizable + } + Fl_Input {} { + label {Rows:} + callback grid_rows_cb + tooltip {Number of horizontal rows in the Grid group} xywh {95 220 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Columns:} + callback grid_cols_cb + tooltip {Number of vertical columns in the Grid group} xywh {154 220 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + } + Fl_Group {} { + 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 + xywh {95 210 310 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Button {} { + 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 {} { + 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 {} { + 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 {} { + 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 {} { + label Style + callback propagate_load open + xywh {10 30 400 330} labelsize 11 when 0 hide + } { + Fl_Group {} { + label {Label Font:} + callback propagate_load open + xywh {95 40 309 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Choice {} { + callback labelfont_cb open + tooltip {The style of the label text.} xywh {95 40 152 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 {} { + label {Box:} + callback propagate_load open + xywh {95 65 309 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Choice {} { + callback box_cb open + tooltip {The "up" box of the widget.} xywh {95 65 201 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 {} { + label {Down Box:} + callback propagate_load open + xywh {95 90 309 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Choice {} { + callback down_box_cb open + tooltip {The "down" box of the widget.} xywh {95 90 201 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 labelcolor 45 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 {} { + label {Text Font:} + callback propagate_load open + xywh {95 115 309 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Choice {} { + callback textfont_cb open + tooltip {The value text style.} xywh {95 115 152 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_Box {} { + xywh {95 165 300 40} labelsize 11 resizable + } + Fl_Light_Button {} { + label Compact + callback compact_cb + tooltip {use compact box types for closely set buttons} xywh {95 140 90 20} selection_color 1 labelsize 11 + } + } + Fl_Group {} { + label {C++} + callback propagate_load open + xywh {10 30 400 330} labelsize 11 when 0 hide + } { + Fl_Group {} { + 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 {} { + label {Name:} + callback propagate_load open + 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 "CodeEditor.h"} + class CodeEditor + } + } + } + Fl_Group {} { + 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_Tabs widget_tabs_repo {open + xywh {10 10 400 350} + code0 {o->hide();} + } { + Fl_Group {} {open + xywh {10 30 400 330} hide resizable + } {} + Fl_Group widget_tab_grid { + label Grid + callback propagate_load open + xywh {10 30 400 330} labelsize 11 + } { + Fl_Box {} { + label {The Fl_Grid implementation in FLUID is still experimental!} + xywh {25 43 370 28} labelfont 1 labelsize 11 labelcolor 1 + } + Fl_Group {} { + label {Location:} + callback propagate_load open + xywh {96 110 314 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input {} { + label {Row:} + callback grid_set_row_cb + xywh {96 110 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Column:} + callback grid_set_col_cb + xywh {156 110 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Choice {} { + label {Align:} + callback grid_align_cb open + xywh {215 110 185 20} down_box BORDER_BOX labelsize 11 align 5 textsize 11 + } { + MenuItem {} { + label GRID_CENTER + user_data FL_GRID_CENTER user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_FILL + user_data FL_GRID_FILL user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_HORIZONTAL + user_data FL_GRID_HORIZONTAL user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_VERTICAL + user_data FL_GRID_VERTICAL user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_LEFT + user_data FL_GRID_LEFT user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_TOP_LEFT + user_data FL_GRID_TOP_LEFT user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_TOP + user_data FL_GRID_TOP user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_TOP_RIGHT + user_data FL_GRID_TOP_RIGHT user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_RIGHT + user_data FL_GRID_RIGHT user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_BOTTOM_LEFT + user_data FL_GRID_BOTTOM_LEFT user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_BOTTOM + user_data FL_GRID_BOTTOM user_data_type long + xywh {10 10 31 20} labelsize 11 + } + MenuItem {} { + label GRID_BOTTOM_RIGHT + user_data FL_GRID_BOTTOM_RIGHT user_data_type long + xywh {10 10 31 20} labelsize 11 + } + } + Fl_Box {} { + xywh {400 110 1 20} hide resizable + } + } + Fl_Box {} { + label {-- Widget --} + xywh {96 74 155 20} labelfont 1 labelsize 12 align 20 + } + Fl_Group {} { + label {Cell Span:} + callback propagate_load open + xywh {96 145 314 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Box {} { + xywh {400 145 1 20} hide resizable + } + Fl_Input {} { + label {Row Span:} + callback grid_set_rowspan_cb + xywh {96 145 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Col Span:} + callback grid_set_colspan_cb + xywh {156 145 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + } + Fl_Group {} { + label {Size:} + callback propagate_load open + xywh {96 180 314 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Box {} { + xywh {400 180 1 20} hide resizable + } + Fl_Input {} { + label {Min.Width:} + callback grid_set_min_wdt_cb + xywh {96 180 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Min.Height:} + callback grid_set_min_hgt_cb + xywh {156 180 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + } + Fl_Box {} { + label {-- Grid --} + xywh {96 214 155 20} labelfont 1 labelsize 12 align 20 + } + Fl_Group {} { + label {Row:} + callback propagate_load open + xywh {96 250 314 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input {} { + label Index + xywh {96 250 55 20} labelsize 11 align 5 textsize 11 deactivate + class Fluid_Coord_Input + } + Fl_Input {} { + label {Height:} + callback grid_row_height + xywh {156 250 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Weight:} + callback grid_row_weight + xywh {216 250 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Gap:} + callback grid_row_gap + xywh {276 250 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Box {} { + xywh {400 250 1 20} hide resizable + } + } + Fl_Group {} { + label {Column:} + callback propagate_load open + xywh {96 285 314 20} labelfont 1 labelsize 11 align 4 + } { + Fl_Input {} { + label Index + xywh {96 285 55 20} labelsize 11 align 5 textsize 11 deactivate + class Fluid_Coord_Input + } + Fl_Input {} { + label {Width:} + callback grid_col_width + xywh {156 285 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Weight:} + callback grid_col_weight + xywh {216 285 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Input {} { + label {Gap:} + callback grid_col_gap + xywh {276 285 55 20} labelsize 11 align 5 textsize 11 + class Fluid_Coord_Input + } + Fl_Box {} { + xywh {400 285 1 20} hide 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 11 + } + Fl_Button overlay_button { + label {Hide &Overlays} + callback overlay_cb + tooltip {Hide the widget overlay box.} xywh {94 370 80 20} labelsize 11 + } + 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 + } + } + } +} diff --git a/fluid/widget_panel.h b/fluid/widget_panel.h index 67158c9df..faf8c84ca 100644 --- a/fluid/widget_panel.h +++ b/fluid/widget_panel.h @@ -146,10 +146,14 @@ extern Fl_Box *w_when_box; extern Fl_Tabs *widget_tabs_repo; extern Fl_Group *widget_tab_grid; extern void grid_set_row_cb(Fluid_Coord_Input*, void*); +extern Fluid_Coord_Input *widget_grid_row_input; extern void grid_set_col_cb(Fluid_Coord_Input*, void*); +extern Fluid_Coord_Input *widget_grid_col_input; extern void grid_align_cb(Fl_Choice*, void*); extern void grid_set_rowspan_cb(Fluid_Coord_Input*, void*); extern void grid_set_colspan_cb(Fluid_Coord_Input*, void*); +extern void grid_set_min_wdt_cb(Fluid_Coord_Input*, void*); +extern void grid_set_min_hgt_cb(Fluid_Coord_Input*, void*); extern void grid_row_height(Fluid_Coord_Input*, void*); extern void grid_row_weight(Fluid_Coord_Input*, void*); extern void grid_row_gap(Fluid_Coord_Input*, void*); |
