diff options
| -rw-r--r-- | fluid/Fl_Window_Type.cxx | 17 | ||||
| -rw-r--r-- | fluid/align_widget.cxx | 10 | ||||
| -rw-r--r-- | fluid/alignment_panel.cxx | 88 | ||||
| -rw-r--r-- | fluid/alignment_panel.fl | 102 | ||||
| -rw-r--r-- | fluid/alignment_panel.h | 5 | ||||
| -rw-r--r-- | fluid/fluid.cxx | 16 |
6 files changed, 198 insertions, 40 deletions
diff --git a/fluid/Fl_Window_Type.cxx b/fluid/Fl_Window_Type.cxx index ee579b217..3c3dc4ba7 100644 --- a/fluid/Fl_Window_Type.cxx +++ b/fluid/Fl_Window_Type.cxx @@ -35,6 +35,7 @@ #include <FL/fl_draw.H> #include <FL/x.H> #include <FL/Fl_Menu_Item.H> +#include <FL/Fl_Round_Button.H> #include "Fl_Widget_Type.h" #include "undo.h" #include <math.h> @@ -115,6 +116,15 @@ void grid_cb(Fl_Input *i, long v) { } } +// Set default widget sizes... +void default_widget_size_cb(Fl_Round_Button *b, long size) { + // Update the "normal" text size of new widgets... + b->setonly(); + Fl_Widget_Type::default_size = size; + fluid_prefs.set("widget_size", size); +} + + void i18n_type_cb(Fl_Choice *c, void *) { undo_checkpoint(); @@ -210,6 +220,13 @@ void show_grid_cb(Fl_Widget *, void *) { sprintf(buf,"%d",gridy); vertical_input->value(buf); sprintf(buf,"%d",snap); snap_input->value(buf); guides_toggle->value(show_guides); + int s = Fl_Widget_Type::default_size; + if (s<=8) def_widget_size[0]->setonly(); + else if (s<=11) def_widget_size[1]->setonly(); + else if (s<=14) def_widget_size[2]->setonly(); + else if (s<=18) def_widget_size[3]->setonly(); + else if (s<=24) def_widget_size[4]->setonly(); + else if (s<=32) def_widget_size[5]->setonly(); grid_window->hotspot(grid_window); grid_window->show(); } diff --git a/fluid/align_widget.cxx b/fluid/align_widget.cxx index e3a1b6861..5d44028fd 100644 --- a/fluid/align_widget.cxx +++ b/fluid/align_widget.cxx @@ -508,14 +508,11 @@ void align_widget_cb(Fl_Widget*, long how) } -// Set default widget sizes... +// Set sizes of selected widgets... void widget_size_cb(Fl_Widget *, long size) { - // Update the "normal" text size of new widgets... - Fl_Widget_Type::default_size = size; - // Update any selected widgets... int changed = 0; - for (Fl_Type *o = Fl_Type::first; o; o = o->next) + for (Fl_Type *o = Fl_Type::first; o; o = o->next) { if (o->selected && o->is_widget()) { if (!changed) { changed = 1; @@ -531,7 +528,10 @@ void widget_size_cb(Fl_Widget *, long size) { ((Fl_Widget_Type *)o)->textstuff(2, f, s, c); w->redraw(); + // since this may be a major change, the whole window should be redrawn + if (w->window()) w->window()->redraw(); } + } } diff --git a/fluid/alignment_panel.cxx b/fluid/alignment_panel.cxx index fbfe91f05..3037269fb 100644 --- a/fluid/alignment_panel.cxx +++ b/fluid/alignment_panel.cxx @@ -274,6 +274,7 @@ Fl_Double_Window* make_settings_window() { recent_spinner->maximum(10); recent_spinner->value(c); } + o->set_non_modal(); o->end(); } return w; @@ -391,43 +392,110 @@ static void cb_Close2(Fl_Button*, void*) { grid_window->hide(); } -Fl_Double_Window* make_grid_window() { +Fl_Round_Button *def_widget_size[6]={(Fl_Round_Button *)0}; + +Fl_Double_Window* make_layout_window() { Fl_Double_Window* w; - { Fl_Double_Window* o = grid_window = new Fl_Double_Window(145, 185, "Grid"); + { Fl_Double_Window* o = grid_window = new Fl_Double_Window(275, 240, "Layout Settings"); w = o; - { Fl_Input* o = horizontal_input = new Fl_Input(88, 10, 47, 25, "Horizontal:"); + { Fl_Input* o = horizontal_input = new Fl_Input(106, 10, 50, 25, "x"); o->tooltip("Horizontal grid spacing."); o->type(2); o->box(FL_THIN_DOWN_BOX); - o->labelfont(1); o->callback((Fl_Callback*)grid_cb, (void*)(1)); + o->align(FL_ALIGN_RIGHT); o->when(FL_WHEN_RELEASE|FL_WHEN_ENTER_KEY); } - { Fl_Input* o = vertical_input = new Fl_Input(88, 45, 47, 25, "Vertical:"); + { Fl_Input* o = vertical_input = new Fl_Input(166, 10, 50, 25, "pixels"); o->tooltip("Vertical grid spacing."); o->type(2); o->box(FL_THIN_DOWN_BOX); - o->labelfont(1); o->callback((Fl_Callback*)grid_cb, (void*)(2)); + o->align(FL_ALIGN_RIGHT); o->when(FL_WHEN_RELEASE|FL_WHEN_ENTER_KEY); } - { Fl_Input* o = snap_input = new Fl_Input(88, 80, 47, 25, "Snap:"); + { Fl_Input* o = snap_input = new Fl_Input(106, 45, 50, 25, "pixel snap"); o->tooltip("Snap to grid within this many pixels."); o->type(2); o->box(FL_THIN_DOWN_BOX); - o->labelfont(1); o->callback((Fl_Callback*)grid_cb, (void*)(3)); + o->align(FL_ALIGN_RIGHT); o->when(FL_WHEN_RELEASE|FL_WHEN_ENTER_KEY); } - { Fl_Check_Button* o = guides_toggle = new Fl_Check_Button(27, 115, 108, 25, "Show Guides"); + { Fl_Check_Button* o = guides_toggle = new Fl_Check_Button(106, 80, 110, 25, "Show Guides"); o->tooltip("Show distance and alignment guides in overlay"); o->down_box(FL_DOWN_BOX); o->callback((Fl_Callback*)guides_cb, (void*)(4)); } - { Fl_Button* o = new Fl_Button(76, 150, 59, 25, "Close"); + { Fl_Button* o = new Fl_Button(205, 205, 60, 25, "Close"); o->tooltip("Close this dialog."); o->callback((Fl_Callback*)cb_Close2); } + { Fl_Box* o = new Fl_Box(26, 10, 70, 25, "Grid:"); + o->labelfont(1); + o->align(FL_ALIGN_RIGHT|FL_ALIGN_INSIDE); + } + { Fl_Box* o = new Fl_Box(-1, 115, 97, 25, "Widget Size:"); + o->labelfont(1); + o->align(FL_ALIGN_RIGHT|FL_ALIGN_INSIDE); + } + { Fl_Group* o = new Fl_Group(105, 115, 170, 75); + { Fl_Round_Button* o = def_widget_size[0] = new Fl_Round_Button(105, 115, 70, 25); + o->type(102); + o->down_box(FL_ROUND_DOWN_BOX); + o->callback((Fl_Callback*)default_widget_size_cb, (void*)(8)); + } + { Fl_Box* o = new Fl_Box(120, 115, 50, 25, "tiny"); + o->labelsize(8); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + } + { Fl_Round_Button* o = def_widget_size[1] = new Fl_Round_Button(180, 115, 70, 25); + o->type(102); + o->down_box(FL_ROUND_DOWN_BOX); + o->callback((Fl_Callback*)default_widget_size_cb, (void*)(11)); + } + { Fl_Box* o = new Fl_Box(195, 115, 50, 25, "small"); + o->labelsize(11); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + } + { Fl_Round_Button* o = def_widget_size[2] = new Fl_Round_Button(105, 140, 70, 25); + o->type(102); + o->down_box(FL_ROUND_DOWN_BOX); + o->callback((Fl_Callback*)default_widget_size_cb, (void*)(14)); + } + { Fl_Box* o = new Fl_Box(120, 140, 50, 25, "normal"); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + } + { Fl_Round_Button* o = def_widget_size[3] = new Fl_Round_Button(180, 140, 90, 25); + o->type(102); + o->down_box(FL_ROUND_DOWN_BOX); + o->callback((Fl_Callback*)default_widget_size_cb, (void*)(18)); + } + { Fl_Box* o = new Fl_Box(195, 140, 68, 25, "medium"); + o->labelsize(18); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + } + { Fl_Round_Button* o = def_widget_size[4] = new Fl_Round_Button(105, 165, 75, 25); + o->type(102); + o->down_box(FL_ROUND_DOWN_BOX); + o->callback((Fl_Callback*)default_widget_size_cb, (void*)(24)); + } + { Fl_Box* o = new Fl_Box(120, 165, 64, 25, "large"); + o->labelsize(24); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + } + { Fl_Round_Button* o = def_widget_size[5] = new Fl_Round_Button(180, 165, 95, 25); + o->type(102); + o->down_box(FL_ROUND_DOWN_BOX); + o->callback((Fl_Callback*)default_widget_size_cb, (void*)(32)); + } + { Fl_Box* o = new Fl_Box(195, 165, 76, 25, "huge"); + o->labelsize(32); + o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + } + o->end(); + } + o->set_non_modal(); o->end(); } return w; diff --git a/fluid/alignment_panel.fl b/fluid/alignment_panel.fl index f2cc5bf60..1bfa207c2 100644 --- a/fluid/alignment_panel.fl +++ b/fluid/alignment_panel.fl @@ -53,7 +53,7 @@ Function {make_project_window()} {open callback {project_window->hide();} tooltip {Close this dialog.} xywh {293 156 42 20} labelsize 11 } - Fl_Tabs {} {open selected + Fl_Tabs {} {open xywh {10 10 325 138} selection_color 4 labelsize 11 } { Fl_Group {} { @@ -144,8 +144,8 @@ decl {void scheme_cb(Fl_Choice *, void *);} {public Function {make_settings_window()} {open } { Fl_Window settings_window { - label {GUI Settings} open - xywh {326 145 340 225} type Double visible + label {GUI Settings} + xywh {326 145 340 225} type Double non_modal visible } { Fl_Choice scheme_choice { label {Scheme:} @@ -158,15 +158,15 @@ Function {make_settings_window()} {open } { MenuItem {} { label Default - xywh {0 0 35 25} + xywh {0 0 35 25} labelsize 14 } MenuItem {} { label None - xywh {0 0 35 25} + xywh {0 0 35 25} labelsize 14 } MenuItem {} { label Plastic - xywh {0 0 35 25} + xywh {0 0 35 25} labelsize 14 } } Fl_Group {} { @@ -235,7 +235,7 @@ Function {make_shell_window()} {open } { Fl_Window shell_window { label {Shell Command} - xywh {588 153 365 125} type Double hide + xywh {682 167 365 125} type Double visible } { Fl_Input shell_command_input { label {Command:} @@ -297,43 +297,109 @@ Function {make_shell_window()} {open } } -Function {make_grid_window()} {open +Function {make_layout_window()} {open } { Fl_Window grid_window { - label Grid - xywh {803 141 145 185} type Double hide + label {Layout Settings} + xywh {676 337 275 240} type Double non_modal visible } { Fl_Input horizontal_input { - label {Horizontal:} + label x user_data 1 user_data_type long callback grid_cb - tooltip {Horizontal grid spacing.} xywh {88 10 47 25} type Int box THIN_DOWN_BOX labelfont 1 + tooltip {Horizontal grid spacing.} xywh {106 10 50 25} type Int box THIN_DOWN_BOX align 8 code0 {o->when(FL_WHEN_RELEASE|FL_WHEN_ENTER_KEY);} } Fl_Input vertical_input { - label {Vertical:} + label pixels user_data 2 user_data_type long callback grid_cb - tooltip {Vertical grid spacing.} xywh {88 45 47 25} type Int box THIN_DOWN_BOX labelfont 1 + tooltip {Vertical grid spacing.} xywh {166 10 50 25} type Int box THIN_DOWN_BOX align 8 code0 {o->when(FL_WHEN_RELEASE|FL_WHEN_ENTER_KEY);} } Fl_Input snap_input { - label {Snap:} + label {pixel snap} user_data 3 user_data_type long callback grid_cb - tooltip {Snap to grid within this many pixels.} xywh {88 80 47 25} type Int box THIN_DOWN_BOX labelfont 1 + tooltip {Snap to grid within this many pixels.} xywh {106 45 50 25} type Int box THIN_DOWN_BOX align 8 code0 {o->when(FL_WHEN_RELEASE|FL_WHEN_ENTER_KEY);} } Fl_Check_Button guides_toggle { label {Show Guides} user_data 4 user_data_type long callback guides_cb - tooltip {Show distance and alignment guides in overlay} xywh {27 115 108 25} down_box DOWN_BOX + tooltip {Show distance and alignment guides in overlay} xywh {106 80 110 25} down_box DOWN_BOX } Fl_Button {} { label Close callback {grid_window->hide();} - tooltip {Close this dialog.} xywh {76 150 59 25} + tooltip {Close this dialog.} xywh {205 205 60 25} + } + Fl_Box {} { + label {Grid:} + xywh {26 10 70 25} labelfont 1 align 24 + } + Fl_Box {} { + label {Widget Size:} + xywh {-1 115 97 25} labelfont 1 align 24 + } + Fl_Group {} {open + xywh {105 115 170 75} + } { + Fl_Round_Button {def_widget_size[0]} { + user_data 8 user_data_type long + callback default_widget_size_cb selected + xywh {105 115 70 25} type Radio down_box ROUND_DOWN_BOX + } + Fl_Box {} { + label tiny + xywh {120 115 50 25} labelsize 8 align 20 + } + Fl_Round_Button {def_widget_size[1]} { + user_data 11 user_data_type long + callback default_widget_size_cb selected + xywh {180 115 70 25} type Radio down_box ROUND_DOWN_BOX + } + Fl_Box {} { + label small + xywh {195 115 50 25} labelsize 11 align 20 + } + Fl_Round_Button {def_widget_size[2]} { + user_data 14 user_data_type long + callback default_widget_size_cb selected + xywh {105 140 70 25} type Radio down_box ROUND_DOWN_BOX + } + Fl_Box {} { + label normal + xywh {120 140 50 25} align 20 + } + Fl_Round_Button {def_widget_size[3]} { + user_data 18 user_data_type long + callback default_widget_size_cb selected + xywh {180 140 90 25} type Radio down_box ROUND_DOWN_BOX + } + Fl_Box {} { + label medium + xywh {195 140 68 25} labelsize 18 align 20 + } + Fl_Round_Button {def_widget_size[4]} { + user_data 24 user_data_type long + callback default_widget_size_cb selected + xywh {105 165 75 25} type Radio down_box ROUND_DOWN_BOX + } + Fl_Box {} { + label large + xywh {120 165 64 25} labelsize 24 align 20 + } + Fl_Round_Button {def_widget_size[5]} { + user_data 32 user_data_type long + callback default_widget_size_cb selected + xywh {180 165 95 25} type Radio down_box ROUND_DOWN_BOX + } + Fl_Box {} { + label huge + xywh {195 165 76 25} labelsize 32 align 20 + } } } } diff --git a/fluid/alignment_panel.h b/fluid/alignment_panel.h index 58c526df4..a02bd462c 100644 --- a/fluid/alignment_panel.h +++ b/fluid/alignment_panel.h @@ -94,7 +94,10 @@ extern Fl_Input *vertical_input; extern Fl_Input *snap_input; extern void guides_cb(Fl_Check_Button*, long); extern Fl_Check_Button *guides_toggle; -Fl_Double_Window* make_grid_window(); +#include <FL/Fl_Round_Button.H> +extern void default_widget_size_cb(Fl_Round_Button*, long); +extern Fl_Round_Button *def_widget_size[6]; +Fl_Double_Window* make_layout_window(); #endif // diff --git a/fluid/fluid.cxx b/fluid/fluid.cxx index 05c3a781a..789d1bac0 100644 --- a/fluid/fluid.cxx +++ b/fluid/fluid.cxx @@ -1623,12 +1623,15 @@ Fl_Menu_Item Main_Menu[] = { {"&Horizontal",0,(Fl_Callback *)align_widget_cb,(void*)40}, {"&Vertical",0,(Fl_Callback *)align_widget_cb,(void*)41}, {0}, - {"&Set Widget Size",0,0,0,FL_SUBMENU|FL_MENU_DIVIDER}, - {"&Tiny",FL_ALT+'1',(Fl_Callback *)widget_size_cb,(void*)8,FL_MENU_RADIO,FL_NORMAL_LABEL,FL_HELVETICA,8}, - {"&Small",FL_ALT+'2',(Fl_Callback *)widget_size_cb,(void*)11,FL_MENU_RADIO,FL_NORMAL_LABEL,FL_HELVETICA,11}, - {"&Normal",FL_ALT+'3',(Fl_Callback *)widget_size_cb,(void*)14,FL_MENU_RADIO|FL_MENU_VALUE}, + {"Set &Widget Size",0,0,0,FL_SUBMENU|FL_MENU_DIVIDER}, + {"&Tiny",FL_ALT+'1',(Fl_Callback *)widget_size_cb,(void*)8,0,FL_NORMAL_LABEL,FL_HELVETICA,8}, + {"&Small",FL_ALT+'2',(Fl_Callback *)widget_size_cb,(void*)11,0,FL_NORMAL_LABEL,FL_HELVETICA,11}, + {"&Normal",FL_ALT+'3',(Fl_Callback *)widget_size_cb,(void*)14,0,FL_NORMAL_LABEL,FL_HELVETICA,14}, + {"&Medium",FL_ALT+'4',(Fl_Callback *)widget_size_cb,(void*)18,0,FL_NORMAL_LABEL,FL_HELVETICA,18}, + {"&Large",FL_ALT+'5',(Fl_Callback *)widget_size_cb,(void*)24,0,FL_NORMAL_LABEL,FL_HELVETICA,24}, + {"&Huge",FL_ALT+'6',(Fl_Callback *)widget_size_cb,(void*)32,0,FL_NORMAL_LABEL,FL_HELVETICA,32}, {0}, - {"&Grid...",FL_CTRL+'g',show_grid_cb}, + {"&Grid and Size Settings...",FL_CTRL+'g',show_grid_cb}, {0}, {"&Shell",0,0,0,FL_SUBMENU}, {"Execute &Command...",FL_ALT+'x',(Fl_Callback *)show_shell_window}, @@ -1690,10 +1693,11 @@ void make_main_window() { fluid_prefs.get("gridx", gridx, 5); fluid_prefs.get("gridy", gridy, 5); fluid_prefs.get("show_guides", show_guides, 0); + fluid_prefs.get("widget_size", Fl_Widget_Type::default_size, 14); load_history(); - make_grid_window(); + make_layout_window(); make_settings_window(); make_shell_window(); |
