1 //
2 // "$Id$"
3 //
4 // Widget panel for the Fast Light Tool Kit (FLTK).
5 //
6 // Copyright 1998-2021 by Bill Spitzak and others.
7 //
8 // This library is free software. Distribution and use rights are outlined in
9 // the file "COPYING" which should have been included with this file.  If this
10 // file is missing or damaged, see the license at:
11 //
12 //     http://www.fltk.org/COPYING.php
13 //
14 // Please report all bugs and problems on the following page:
15 //
16 //     http://www.fltk.org/str.php
17 //
18 
19 // generated by Fast Light User Interface Designer (fluid) version 1.0308
20 
21 #include "widget_panel.h"
22 extern void comment_cb(Fl_Text_Editor*, void*);
23 
cb_(Fl_Tabs * o,void * v)24 static void cb_(Fl_Tabs* o, void* v) {
25   propagate_load((Fl_Group *)o,v);
26 }
27 
28 Fl_Menu_Item menu_[] = {
29  {"   Image Alignment   ", 0,  0, (void*)(0xFFFFFFFF), 1, (uchar)FL_NORMAL_LABEL, 2, 11, 0},
30  {"image over text", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_IMAGE_OVER_TEXT), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
31  {"text over image", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_TEXT_OVER_IMAGE), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
32  {"text next to image", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_TEXT_NEXT_TO_IMAGE), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
33  {"image next to text", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_IMAGE_NEXT_TO_TEXT), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
34  {"image is backdrop", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_IMAGE_BACKDROP), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
35  {0,0,0,0,0,0,0,0,0}
36 };
37 
38 Fl_Menu_Item menu_1[] = {
39  {"   Inside && Outside   ", 0,  0, (void*)(0xFFFFFFFF), 1, (uchar)FL_NORMAL_LABEL, 2, 11, 0},
40  {"top left", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_TOP_LEFT), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
41  {"top", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_TOP), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
42  {"top right", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_TOP_RIGHT), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
43  {"left", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_LEFT), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
44  {"center", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_CENTER), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
45  {"right", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_RIGHT), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
46  {"bottom left", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_BOTTOM_LEFT), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
47  {"bottom", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_BOTTOM), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
48  {"bottom right", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_BOTTOM_RIGHT), 128, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
49  {"   Outside Alignment   ", 0,  0, (void*)(0xFFFFFFFF), 1, (uchar)FL_NORMAL_LABEL, 2, 11, 0},
50  {"left top", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_LEFT_TOP), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
51  {"right top", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_RIGHT_TOP), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
52  {"left bottom", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_LEFT_BOTTOM), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
53  {"right bottom", 0,  0, (void*)((fl_intptr_t)FL_ALIGN_RIGHT_BOTTOM), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
54  {0,0,0,0,0,0,0,0,0}
55 };
56 
57 Fl_Value_Input *widget_x_input=(Fl_Value_Input *)0;
58 
59 Fl_Value_Input *widget_y_input=(Fl_Value_Input *)0;
60 
61 Fl_Value_Input *widget_w_input=(Fl_Value_Input *)0;
62 
63 Fl_Value_Input *widget_h_input=(Fl_Value_Input *)0;
64 
65 Fl_Menu_Item menu_2[] = {
66  {"private", 0,  0, (void*)(0), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
67  {"public", 0,  0, (void*)(1), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
68  {"protected", 0,  0, (void*)(2), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
69  {0,0,0,0,0,0,0,0,0}
70 };
71 
72 Fl_Menu_Item menu_3[] = {
73  {"local", 0,  0, (void*)(0), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
74  {"global", 0,  0, (void*)(1), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
75  {0,0,0,0,0,0,0,0,0}
76 };
77 
78 Fl_Input *v_input[4]={(Fl_Input *)0};
79 
cb_1(Fl_Tile *,void * v)80 static void cb_1(Fl_Tile*, void* v) {
81   wComment->do_callback(wComment, v);
82 wCallback->do_callback(wCallback, v);
83 }
84 
85 Fl_Text_Editor *wComment=(Fl_Text_Editor *)0;
86 
87 CodeEditor *wCallback=(CodeEditor *)0;
88 
89 Fl_Button *wLiveMode=(Fl_Button *)0;
90 
91 /**
92  Create a panel that can be used with all known widgets
93 */
make_widget_panel()94 Fl_Double_Window* make_widget_panel() {
95   Fl_Double_Window* w;
96   { // Use a Double Window to avoid flickering.
97     Fl_Double_Window* o = new Fl_Double_Window(420, 400);
98     w = o; if (w) {/* empty */}
99     o->labelsize(11);
100     o->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
101     o->hotspot(o);
102     { Fl_Tabs* o = new Fl_Tabs(10, 10, 400, 350);
103       o->selection_color((Fl_Color)12);
104       o->labelsize(11);
105       o->labelcolor(FL_BACKGROUND2_COLOR);
106       o->callback((Fl_Callback*)cb_);
107       o->when(FL_WHEN_NEVER);
108       { Fl_Group* o = new Fl_Group(10, 30, 400, 330, "GUI");
109         o->labelsize(11);
110         o->callback((Fl_Callback*)propagate_load);
111         o->when(FL_WHEN_NEVER);
112         { Fl_Group* o = new Fl_Group(95, 40, 309, 20, "Label:");
113           o->labelfont(1);
114           o->labelsize(11);
115           o->callback((Fl_Callback*)propagate_load);
116           o->align(Fl_Align(FL_ALIGN_LEFT));
117           { Fl_Input* o = new Fl_Input(95, 40, 190, 20);
118             o->tooltip("The label text for the widget.\nUse Ctrl-J for newlines.");
119             o->labelfont(1);
120             o->labelsize(11);
121             o->textsize(11);
122             o->callback((Fl_Callback*)label_cb);
123             o->when(FL_WHEN_CHANGED);
124             Fl_Group::current()->resizable(o);
125           } // Fl_Input* o
126           { Fl_Choice* o = new Fl_Choice(284, 40, 120, 20);
127             o->tooltip("The label style for the widget.");
128             o->box(FL_THIN_UP_BOX);
129             o->down_box(FL_BORDER_BOX);
130             o->labelfont(1);
131             o->labelsize(11);
132             o->textsize(11);
133             o->callback((Fl_Callback*)labeltype_cb);
134             o->menu(labeltypemenu);
135           } // Fl_Choice* o
136           o->end();
137         } // Fl_Group* o
138         { Fl_Group* o = new Fl_Group(95, 65, 309, 20, "Image:");
139           o->labelfont(1);
140           o->labelsize(11);
141           o->callback((Fl_Callback*)propagate_load);
142           o->align(Fl_Align(FL_ALIGN_LEFT));
143           { Fl_Input* o = new Fl_Input(95, 65, 240, 20);
144             o->tooltip("The active image for the widget.");
145             o->labelfont(1);
146             o->labelsize(11);
147             o->textsize(11);
148             o->callback((Fl_Callback*)image_cb);
149             Fl_Group::current()->resizable(o);
150           } // Fl_Input* o
151           { Fl_Button* o = new Fl_Button(334, 65, 70, 20, "Browse...");
152             o->tooltip("Click to choose the active image.");
153             o->labelsize(11);
154             o->callback((Fl_Callback*)image_browse_cb);
155           } // Fl_Button* o
156           o->end();
157         } // Fl_Group* o
158         { Fl_Group* o = new Fl_Group(95, 90, 309, 20, "Inactive:");
159           o->labelfont(1);
160           o->labelsize(11);
161           o->callback((Fl_Callback*)propagate_load);
162           o->align(Fl_Align(FL_ALIGN_LEFT));
163           { Fl_Input* o = new Fl_Input(95, 90, 240, 20);
164             o->tooltip("The inactive image for the widget.");
165             o->labelfont(1);
166             o->labelsize(11);
167             o->textsize(11);
168             o->callback((Fl_Callback*)inactive_cb);
169             Fl_Group::current()->resizable(o);
170           } // Fl_Input* o
171           { Fl_Button* o = new Fl_Button(334, 90, 70, 20, "Browse...");
172             o->tooltip("Click to choose the inactive image.");
173             o->labelsize(11);
174             o->callback((Fl_Callback*)inactive_browse_cb);
175           } // Fl_Button* o
176           o->end();
177         } // Fl_Group* o
178         { Fl_Group* o = new Fl_Group(95, 115, 310, 20, "Alignment:");
179           o->labelfont(1);
180           o->labelsize(11);
181           o->callback((Fl_Callback*)propagate_load);
182           o->align(Fl_Align(FL_ALIGN_LEFT));
183           { Fl_Button* o = new Fl_Button(95, 115, 30, 20, "Clip");
184             o->tooltip("Clip the label to the inside of the widget.");
185             o->type(1);
186             o->selection_color(FL_INACTIVE_COLOR);
187             o->labelsize(11);
188             o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_CLIP));
189             o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
190           } // Fl_Button* o
191           { Fl_Button* o = new Fl_Button(130, 115, 38, 20, "Wrap");
192             o->tooltip("Wrap the label text.");
193             o->type(1);
194             o->selection_color(FL_INACTIVE_COLOR);
195             o->labelsize(11);
196             o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_WRAP));
197           } // Fl_Button* o
198           { Fl_Button* o = new Fl_Button(278, 115, 20, 20, "@-1<-");
199             o->tooltip("Left-align the label.");
200             o->type(1);
201             o->selection_color(FL_INACTIVE_COLOR);
202             o->labelsize(11);
203             o->labelcolor(FL_INACTIVE_COLOR);
204             o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_LEFT));
205             o->hide();
206           } // Fl_Button* o
207           { Fl_Button* o = new Fl_Button(303, 115, 20, 20, "@-1->");
208             o->tooltip("Right-align the label.");
209             o->type(1);
210             o->selection_color(FL_INACTIVE_COLOR);
211             o->labelsize(11);
212             o->labelcolor(FL_INACTIVE_COLOR);
213             o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_RIGHT));
214             o->hide();
215           } // Fl_Button* o
216           { Fl_Button* o = new Fl_Button(328, 115, 20, 20, "@-18");
217             o->tooltip("Top-align the label.");
218             o->type(1);
219             o->selection_color(FL_INACTIVE_COLOR);
220             o->labelsize(11);
221             o->labelcolor(FL_INACTIVE_COLOR);
222             o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_TOP));
223             o->hide();
224           } // Fl_Button* o
225           { Fl_Button* o = new Fl_Button(353, 115, 20, 20, "@-12");
226             o->tooltip("Bottom-align the label.");
227             o->type(1);
228             o->selection_color(FL_INACTIVE_COLOR);
229             o->labelsize(11);
230             o->labelcolor(FL_INACTIVE_COLOR);
231             o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_BOTTOM));
232             o->hide();
233           } // Fl_Button* o
234           { Fl_Choice* o = new Fl_Choice(172, 115, 110, 20);
235             o->down_box(FL_BORDER_BOX);
236             o->labelsize(11);
237             o->textsize(11);
238             o->callback((Fl_Callback*)align_text_image_cb);
239             o->menu(menu_);
240           } // Fl_Choice* o
241           { Fl_Choice* o = new Fl_Choice(288, 115, 85, 20);
242             o->down_box(FL_BORDER_BOX);
243             o->labelsize(11);
244             o->textsize(11);
245             o->callback((Fl_Callback*)align_position_cb);
246             o->menu(menu_1);
247           } // Fl_Choice* o
248           { Fl_Button* o = new Fl_Button(378, 115, 20, 20, "@-3square");
249             o->tooltip("Show the label inside the widget.");
250             o->type(1);
251             o->selection_color(FL_INACTIVE_COLOR);
252             o->labelsize(11);
253             o->labelcolor(FL_INACTIVE_COLOR);
254             o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_INSIDE));
255           } // Fl_Button* o
256           { Fl_Box* o = new Fl_Box(404, 115, 0, 20);
257             o->labelsize(11);
258             Fl_Group::current()->resizable(o);
259           } // Fl_Box* o
260           o->end();
261         } // Fl_Group* o
262         { Fl_Group* o = new Fl_Group(95, 150, 314, 20, "Position:");
263           o->labelfont(1);
264           o->labelsize(11);
265           o->callback((Fl_Callback*)propagate_load);
266           o->align(Fl_Align(FL_ALIGN_LEFT));
267           { widget_x_input = new Fl_Value_Input(95, 150, 55, 20, "X:");
268             widget_x_input->tooltip("The X position of the widget.");
269             widget_x_input->labelsize(11);
270             widget_x_input->maximum(2048);
271             widget_x_input->step(1);
272             widget_x_input->textsize(11);
273             widget_x_input->callback((Fl_Callback*)x_cb);
274             widget_x_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
275           } // Fl_Value_Input* widget_x_input
276           { widget_y_input = new Fl_Value_Input(155, 150, 55, 20, "Y:");
277             widget_y_input->tooltip("The Y position of the widget.");
278             widget_y_input->labelsize(11);
279             widget_y_input->maximum(2048);
280             widget_y_input->step(1);
281             widget_y_input->textsize(11);
282             widget_y_input->callback((Fl_Callback*)y_cb);
283             widget_y_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
284           } // Fl_Value_Input* widget_y_input
285           { widget_w_input = new Fl_Value_Input(215, 150, 55, 20, "Width:");
286             widget_w_input->tooltip("The width of the widget.");
287             widget_w_input->labelsize(11);
288             widget_w_input->maximum(2048);
289             widget_w_input->step(1);
290             widget_w_input->textsize(11);
291             widget_w_input->callback((Fl_Callback*)w_cb);
292             widget_w_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
293           } // Fl_Value_Input* widget_w_input
294           { widget_h_input = new Fl_Value_Input(275, 150, 55, 20, "Height:");
295             widget_h_input->tooltip("The height of the widget.");
296             widget_h_input->labelsize(11);
297             widget_h_input->maximum(2048);
298             widget_h_input->step(1);
299             widget_h_input->textsize(11);
300             widget_h_input->callback((Fl_Callback*)h_cb);
301             widget_h_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
302           } // Fl_Value_Input* widget_h_input
303           { Fl_Light_Button* o = new Fl_Light_Button(335, 150, 65, 20, "Relative");
304             o->tooltip("If set, widgets inside a widget class of type Fl_Group are repositioned relat\
305 ive to the origin at construction time");
306             o->labelsize(11);
307             o->callback((Fl_Callback*)wc_relative_cb);
308           } // Fl_Light_Button* o
309           { Fl_Box* o = new Fl_Box(398, 150, 1, 20);
310             Fl_Group::current()->resizable(o);
311           } // Fl_Box* o
312           o->end();
313         } // Fl_Group* o
314         { Fl_Group* o = new Fl_Group(95, 185, 300, 20, "Values:");
315           o->labelfont(1);
316           o->labelsize(11);
317           o->callback((Fl_Callback*)propagate_load);
318           o->align(Fl_Align(FL_ALIGN_LEFT));
319           { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Size:");
320             o->tooltip("The size of the slider.");
321             o->labelsize(11);
322             o->step(0.010101);
323             o->textsize(11);
324             o->callback((Fl_Callback*)slider_size_cb);
325             o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
326           } // Fl_Value_Input* o
327           { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20, "Minimum:");
328             o->tooltip("The minimum value of the widget.");
329             o->labelsize(11);
330             o->textsize(11);
331             o->callback((Fl_Callback*)min_cb);
332             o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
333           } // Fl_Value_Input* o
334           { Fl_Value_Input* o = new Fl_Value_Input(215, 185, 55, 20, "Maximum:");
335             o->tooltip("The maximum value of the widget.");
336             o->labelsize(11);
337             o->value(1);
338             o->textsize(11);
339             o->callback((Fl_Callback*)max_cb);
340             o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
341           } // Fl_Value_Input* o
342           { Fl_Value_Input* o = new Fl_Value_Input(275, 185, 55, 20, "Step:");
343             o->tooltip("The resolution of the widget value.");
344             o->labelsize(11);
345             o->textsize(11);
346             o->callback((Fl_Callback*)step_cb);
347             o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
348           } // Fl_Value_Input* o
349           { Fl_Value_Input* o = new Fl_Value_Input(335, 185, 55, 20, "Value:");
350             o->tooltip("The current widget value.");
351             o->labelsize(11);
352             o->textsize(11);
353             o->callback((Fl_Callback*)value_cb);
354             o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
355           } // Fl_Value_Input* o
356           { Fl_Box* o = new Fl_Box(395, 185, 0, 20);
357             Fl_Group::current()->resizable(o);
358           } // Fl_Box* o
359           o->end();
360         } // Fl_Group* o
361         { Fl_Group* o = new Fl_Group(95, 185, 300, 20, "Size Range:");
362           o->labelfont(1);
363           o->labelsize(11);
364           o->callback((Fl_Callback*)propagate_load);
365           o->align(Fl_Align(FL_ALIGN_LEFT));
366           o->hide();
367           { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Minimum Size:");
368             o->tooltip("The size of the slider.");
369             o->labelsize(11);
370             o->maximum(2048);
371             o->step(1);
372             o->textsize(11);
373             o->callback((Fl_Callback*)min_w_cb);
374             o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
375           } // Fl_Value_Input* o
376           { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20);
377             o->tooltip("The minimum value of the widget.");
378             o->labelsize(11);
379             o->maximum(2048);
380             o->step(1);
381             o->textsize(11);
382             o->callback((Fl_Callback*)min_h_cb);
383             o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
384           } // Fl_Value_Input* o
385           { Fl_Button* o = new Fl_Button(215, 185, 25, 20, "set");
386             o->labelsize(11);
387             o->callback((Fl_Callback*)set_min_size_cb);
388           } // Fl_Button* o
389           { Fl_Value_Input* o = new Fl_Value_Input(245, 185, 55, 20, "Maximum Size:");
390             o->tooltip("The maximum value of the widget.");
391             o->labelsize(11);
392             o->maximum(2048);
393             o->step(1);
394             o->textsize(11);
395             o->callback((Fl_Callback*)max_w_cb);
396             o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
397           } // Fl_Value_Input* o
398           { Fl_Value_Input* o = new Fl_Value_Input(305, 185, 55, 20);
399             o->tooltip("The resolution of the widget value.");
400             o->labelsize(11);
401             o->maximum(2048);
402             o->step(1);
403             o->textsize(11);
404             o->callback((Fl_Callback*)max_h_cb);
405             o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
406           } // Fl_Value_Input* o
407           { Fl_Button* o = new Fl_Button(365, 185, 25, 20, "set");
408             o->labelsize(11);
409             o->callback((Fl_Callback*)set_max_size_cb);
410           } // Fl_Button* o
411           { Fl_Box* o = new Fl_Box(395, 185, 0, 20);
412             Fl_Group::current()->resizable(o);
413           } // Fl_Box* o
414           o->end();
415         } // Fl_Group* o
416         { // This is a special button that grabs keystrokes directly
417           Shortcut_Button* o = new Shortcut_Button(95, 210, 310, 20, "Shortcut:");
418           o->tooltip("The shortcut key for the widget.");
419           o->box(FL_DOWN_BOX);
420           o->color(FL_BACKGROUND2_COLOR);
421           o->selection_color(FL_BACKGROUND2_COLOR);
422           o->labeltype(FL_NORMAL_LABEL);
423           o->labelfont(1);
424           o->labelsize(11);
425           o->labelcolor(FL_FOREGROUND_COLOR);
426           o->callback((Fl_Callback*)shortcut_in_cb);
427           o->align(Fl_Align(FL_ALIGN_LEFT));
428           o->when(FL_WHEN_RELEASE);
429         } // Shortcut_Button* o
430         { Fl_Group* o = new Fl_Group(95, 235, 300, 20, "X Class:");
431           o->labelfont(1);
432           o->labelsize(11);
433           o->callback((Fl_Callback*)propagate_load);
434           o->align(Fl_Align(FL_ALIGN_LEFT));
435           { Fl_Input* o = new Fl_Input(95, 235, 95, 20, ":");
436             o->tooltip("The X resource class.");
437             o->labelfont(1);
438             o->labelsize(11);
439             o->textsize(11);
440             o->callback((Fl_Callback*)xclass_cb);
441             Fl_Group::current()->resizable(o);
442           } // Fl_Input* o
443           { Fl_Light_Button* o = new Fl_Light_Button(195, 235, 60, 20, "Border");
444             o->tooltip("Add a border around the window.");
445             o->selection_color((Fl_Color)1);
446             o->labelsize(11);
447             o->callback((Fl_Callback*)border_cb);
448           } // Fl_Light_Button* o
449           { Fl_Light_Button* o = new Fl_Light_Button(260, 235, 55, 20, "Modal");
450             o->tooltip("Make the window modal.");
451             o->selection_color((Fl_Color)1);
452             o->labelsize(11);
453             o->callback((Fl_Callback*)modal_cb);
454           } // Fl_Light_Button* o
455           { Fl_Light_Button* o = new Fl_Light_Button(320, 235, 75, 20, "Nonmodal");
456             o->tooltip("Make the window non-modal.");
457             o->selection_color((Fl_Color)1);
458             o->labelsize(11);
459             o->callback((Fl_Callback*)non_modal_cb);
460             o->align(Fl_Align(132|FL_ALIGN_INSIDE));
461           } // Fl_Light_Button* o
462           o->end();
463         } // Fl_Group* o
464         { Fl_Group* o = new Fl_Group(95, 260, 305, 20, "Attributes:");
465           o->labelfont(1);
466           o->labelsize(11);
467           o->callback((Fl_Callback*)propagate_load);
468           o->align(Fl_Align(FL_ALIGN_LEFT));
469           { Fl_Light_Button* o = new Fl_Light_Button(95, 260, 60, 20, "Visible");
470             o->tooltip("Show the widget.");
471             o->selection_color((Fl_Color)1);
472             o->labelsize(11);
473             o->callback((Fl_Callback*)visible_cb);
474           } // Fl_Light_Button* o
475           { Fl_Light_Button* o = new Fl_Light_Button(160, 260, 60, 20, "Active");
476             o->tooltip("Activate the widget.");
477             o->selection_color((Fl_Color)1);
478             o->labelsize(11);
479             o->callback((Fl_Callback*)active_cb);
480           } // Fl_Light_Button* o
481           { Fl_Light_Button* o = new Fl_Light_Button(225, 260, 75, 20, "Resizable");
482             o->tooltip("Make the widget resizable.");
483             o->selection_color((Fl_Color)1);
484             o->labelsize(11);
485             o->callback((Fl_Callback*)resizable_cb);
486             o->when(FL_WHEN_CHANGED);
487           } // Fl_Light_Button* o
488           { Fl_Light_Button* o = new Fl_Light_Button(305, 260, 70, 20, "Hotspot");
489             o->tooltip("Center the window under this widget.");
490             o->selection_color((Fl_Color)1);
491             o->labelsize(11);
492             o->callback((Fl_Callback*)hotspot_cb);
493             o->when(FL_WHEN_CHANGED);
494           } // Fl_Light_Button* o
495           { Fl_Box* o = new Fl_Box(395, 260, 0, 20);
496             o->labelsize(11);
497             Fl_Group::current()->resizable(o);
498           } // Fl_Box* o
499           o->end();
500         } // Fl_Group* o
501         { Fl_Input* o = new Fl_Input(95, 285, 310, 20, "Tooltip:");
502           o->tooltip("The tooltip text for the widget.\nUse Ctrl-J for newlines.");
503           o->labelfont(1);
504           o->labelsize(11);
505           o->textsize(11);
506           o->callback((Fl_Callback*)tooltip_cb);
507         } // Fl_Input* o
508         { Fl_Box* o = new Fl_Box(95, 305, 300, 5);
509           o->labelsize(11);
510           Fl_Group::current()->resizable(o);
511         } // Fl_Box* o
512         o->end();
513         Fl_Group::current()->resizable(o);
514       } // Fl_Group* o
515       { Fl_Group* o = new Fl_Group(10, 30, 400, 330, "Style");
516         o->labelsize(11);
517         o->callback((Fl_Callback*)propagate_load);
518         o->when(FL_WHEN_NEVER);
519         o->hide();
520         { Fl_Group* o = new Fl_Group(95, 40, 309, 20, "Label Font:");
521           o->labelfont(1);
522           o->labelsize(11);
523           o->callback((Fl_Callback*)propagate_load);
524           o->align(Fl_Align(FL_ALIGN_LEFT));
525           { Fl_Choice* o = new Fl_Choice(95, 40, 170, 20);
526             o->tooltip("The style of the label text.");
527             o->box(FL_THIN_UP_BOX);
528             o->down_box(FL_BORDER_BOX);
529             o->labelfont(1);
530             o->labelsize(11);
531             o->textsize(11);
532             o->callback((Fl_Callback*)labelfont_cb);
533             Fl_Group::current()->resizable(o);
534             o->menu(fontmenu);
535           } // Fl_Choice* o
536           { Fl_Value_Input* o = new Fl_Value_Input(264, 40, 50, 20);
537             o->tooltip("The size of the label text.");
538             o->labelsize(11);
539             o->maximum(100);
540             o->step(1);
541             o->value(14);
542             o->textsize(11);
543             o->callback((Fl_Callback*)labelsize_cb);
544           } // Fl_Value_Input* o
545           { Fl_Button* o = new Fl_Button(314, 40, 90, 20, "Label Color");
546             o->tooltip("The color of the label text.");
547             o->labelsize(11);
548             o->callback((Fl_Callback*)labelcolor_cb);
549           } // Fl_Button* o
550           o->end();
551         } // Fl_Group* o
552         { Fl_Group* o = new Fl_Group(95, 65, 309, 20, "Box:");
553           o->labelfont(1);
554           o->labelsize(11);
555           o->callback((Fl_Callback*)propagate_load);
556           o->align(Fl_Align(FL_ALIGN_LEFT));
557           { Fl_Choice* o = new Fl_Choice(95, 65, 219, 20);
558             o->tooltip("The \"up\" box of the widget.");
559             o->box(FL_THIN_UP_BOX);
560             o->down_box(FL_BORDER_BOX);
561             o->labelfont(1);
562             o->labelsize(11);
563             o->textsize(11);
564             o->callback((Fl_Callback*)box_cb);
565             Fl_Group::current()->resizable(o);
566             o->menu(boxmenu);
567           } // Fl_Choice* o
568           { Fl_Button* o = new Fl_Button(314, 65, 90, 20, "Color");
569             o->tooltip("The background color of the widget.");
570             o->labelsize(11);
571             o->callback((Fl_Callback*)color_cb);
572           } // Fl_Button* o
573           o->end();
574         } // Fl_Group* o
575         { Fl_Group* o = new Fl_Group(95, 90, 309, 20, "Down Box:");
576           o->labelfont(1);
577           o->labelsize(11);
578           o->callback((Fl_Callback*)propagate_load);
579           o->align(Fl_Align(FL_ALIGN_LEFT));
580           { Fl_Choice* o = new Fl_Choice(95, 90, 219, 20);
581             o->tooltip("The \"down\" box of the widget.");
582             o->box(FL_THIN_UP_BOX);
583             o->down_box(FL_BORDER_BOX);
584             o->labelfont(1);
585             o->labelsize(11);
586             o->textsize(11);
587             o->callback((Fl_Callback*)down_box_cb);
588             Fl_Group::current()->resizable(o);
589             o->menu(boxmenu);
590           } // Fl_Choice* o
591           { Fl_Button* o = new Fl_Button(314, 90, 90, 20, "Select Color");
592             o->tooltip("The selection color of the widget.");
593             o->labelsize(11);
594             o->callback((Fl_Callback*)color2_cb);
595           } // Fl_Button* o
596           o->end();
597         } // Fl_Group* o
598         { Fl_Group* o = new Fl_Group(95, 115, 309, 20, "Text Font:");
599           o->labelfont(1);
600           o->labelsize(11);
601           o->callback((Fl_Callback*)propagate_load);
602           o->align(Fl_Align(FL_ALIGN_LEFT));
603           { Fl_Choice* o = new Fl_Choice(95, 115, 170, 20);
604             o->tooltip("The value text style.");
605             o->box(FL_DOWN_BOX);
606             o->down_box(FL_BORDER_BOX);
607             o->labelfont(1);
608             o->labelsize(11);
609             o->textsize(11);
610             o->callback((Fl_Callback*)textfont_cb);
611             Fl_Group::current()->resizable(o);
612             o->menu(fontmenu);
613           } // Fl_Choice* o
614           { Fl_Value_Input* o = new Fl_Value_Input(264, 115, 50, 20);
615             o->tooltip("The value text size.");
616             o->labelsize(11);
617             o->maximum(100);
618             o->step(1);
619             o->value(14);
620             o->textsize(11);
621             o->callback((Fl_Callback*)textsize_cb);
622           } // Fl_Value_Input* o
623           { Fl_Button* o = new Fl_Button(314, 115, 90, 20, "Text Color");
624             o->tooltip("The value text color.");
625             o->labelsize(11);
626             o->callback((Fl_Callback*)textcolor_cb);
627           } // Fl_Button* o
628           o->end();
629         } // Fl_Group* o
630         { Fl_Box* o = new Fl_Box(95, 140, 300, 40);
631           o->labelsize(11);
632           Fl_Group::current()->resizable(o);
633         } // Fl_Box* o
634         o->end();
635       } // Fl_Group* o
636       { Fl_Group* o = new Fl_Group(10, 30, 400, 330, "C++");
637         o->labelsize(11);
638         o->callback((Fl_Callback*)propagate_load);
639         o->when(FL_WHEN_NEVER);
640         o->hide();
641         { Fl_Group* o = new Fl_Group(95, 40, 310, 20, "Class:");
642           o->labelfont(1);
643           o->labelsize(11);
644           o->callback((Fl_Callback*)propagate_load);
645           o->align(Fl_Align(FL_ALIGN_LEFT));
646           { Fl_Input* o = new Fl_Input(95, 40, 172, 20);
647             o->tooltip("The widget subclass.");
648             o->labelfont(1);
649             o->labelsize(11);
650             o->textfont(4);
651             o->textsize(11);
652             o->callback((Fl_Callback*)subclass_cb, (void*)(4));
653             Fl_Group::current()->resizable(o);
654           } // Fl_Input* o
655           { Fl_Choice* o = new Fl_Choice(265, 40, 140, 20);
656             o->tooltip("The widget subtype.");
657             o->box(FL_THIN_UP_BOX);
658             o->down_box(FL_BORDER_BOX);
659             o->labelsize(11);
660             o->textsize(11);
661             o->callback((Fl_Callback*)subtype_cb);
662           } // Fl_Choice* o
663           o->end();
664         } // Fl_Group* o
665         { Fl_Group* o = new Fl_Group(95, 65, 310, 20, "Name:");
666           o->labelfont(1);
667           o->labelsize(11);
668           o->callback((Fl_Callback*)propagate_load);
669           o->align(Fl_Align(FL_ALIGN_LEFT));
670           { Fl_Input* o = new Fl_Input(95, 65, 235, 20);
671             o->tooltip("The name of the widget.");
672             o->labelfont(1);
673             o->labelsize(11);
674             o->textsize(11);
675             o->callback((Fl_Callback*)name_cb);
676             Fl_Group::current()->resizable(o);
677           } // Fl_Input* o
678           { Fl_Choice* o = new Fl_Choice(330, 65, 75, 20);
679             o->tooltip("Change member access attribute.");
680             o->down_box(FL_BORDER_BOX);
681             o->labelsize(11);
682             o->textsize(11);
683             o->callback((Fl_Callback*)name_public_member_cb);
684             o->when(FL_WHEN_CHANGED);
685             o->menu(menu_2);
686           } // Fl_Choice* o
687           { Fl_Choice* o = new Fl_Choice(330, 65, 75, 20);
688             o->tooltip("Change widget accessibility.");
689             o->down_box(FL_BORDER_BOX);
690             o->labelsize(11);
691             o->textsize(11);
692             o->callback((Fl_Callback*)name_public_cb);
693             o->when(FL_WHEN_CHANGED);
694             o->menu(menu_3);
695           } // Fl_Choice* o
696           o->end();
697         } // Fl_Group* o
698         { v_input[0] = new Fl_Input(95, 90, 310, 20, "Extra Code:");
699           v_input[0]->tooltip("Extra initialization code for the widget.");
700           v_input[0]->labelfont(1);
701           v_input[0]->labelsize(11);
702           v_input[0]->textfont(4);
703           v_input[0]->textsize(11);
704           v_input[0]->callback((Fl_Callback*)v_input_cb, (void*)(0));
705         } // Fl_Input* v_input[0]
706         { v_input[1] = new Fl_Input(95, 110, 310, 20);
707           v_input[1]->tooltip("Extra initialization code for the widget.");
708           v_input[1]->labelsize(11);
709           v_input[1]->textfont(4);
710           v_input[1]->textsize(11);
711           v_input[1]->callback((Fl_Callback*)v_input_cb, (void*)(1));
712         } // Fl_Input* v_input[1]
713         { v_input[2] = new Fl_Input(95, 130, 310, 20);
714           v_input[2]->tooltip("Extra initialization code for the widget.");
715           v_input[2]->labelsize(11);
716           v_input[2]->textfont(4);
717           v_input[2]->textsize(11);
718           v_input[2]->callback((Fl_Callback*)v_input_cb, (void*)(2));
719         } // Fl_Input* v_input[2]
720         { v_input[3] = new Fl_Input(95, 150, 310, 20);
721           v_input[3]->tooltip("Extra initialization code for the widget.");
722           v_input[3]->labelsize(11);
723           v_input[3]->textfont(4);
724           v_input[3]->textsize(11);
725           v_input[3]->callback((Fl_Callback*)v_input_cb, (void*)(3));
726         } // Fl_Input* v_input[3]
727         { Fl_Tile* o = new Fl_Tile(95, 175, 310, 130);
728           o->callback((Fl_Callback*)cb_1);
729           { Fl_Group* o = new Fl_Group(95, 175, 310, 48);
730             o->box(FL_FLAT_BOX);
731             { wComment = new Fl_Text_Editor(95, 175, 310, 45, "Comment:");
732               wComment->tooltip("Write a comment that will appear in the source code and in the widget tree ov\
733 erview.");
734               wComment->box(FL_DOWN_BOX);
735               wComment->labelfont(1);
736               wComment->labelsize(11);
737               wComment->textfont(6);
738               wComment->textsize(11);
739               wComment->textcolor((Fl_Color)59);
740               wComment->align(Fl_Align(FL_ALIGN_LEFT));
741               wComment->when(FL_WHEN_CHANGED);
742               Fl_Group::current()->resizable(wComment);
743               wComment->buffer(new Fl_Text_Buffer());
744               wComment->callback((Fl_Callback*)comment_cb);
745             } // Fl_Text_Editor* wComment
746             o->end();
747           } // Fl_Group* o
748           { Fl_Group* o = new Fl_Group(95, 223, 310, 82);
749             o->box(FL_FLAT_BOX);
750             { wCallback = new CodeEditor(95, 225, 310, 80, "Callback:");
751               wCallback->tooltip("The callback function or code for the widget. Use the variable name \'o\' to \
752 access the Widget pointer and \'v\' to access the user value.");
753               wCallback->box(FL_DOWN_BOX);
754               wCallback->color(FL_BACKGROUND2_COLOR);
755               wCallback->selection_color(FL_SELECTION_COLOR);
756               wCallback->labeltype(FL_NORMAL_LABEL);
757               wCallback->labelfont(1);
758               wCallback->labelsize(11);
759               wCallback->labelcolor(FL_FOREGROUND_COLOR);
760               wCallback->textfont(4);
761               wCallback->textsize(11);
762               wCallback->callback((Fl_Callback*)callback_cb);
763               wCallback->align(Fl_Align(FL_ALIGN_LEFT));
764               wCallback->when(FL_WHEN_RELEASE);
765               Fl_Group::current()->resizable(wCallback);
766             } // CodeEditor* wCallback
767             o->end();
768           } // Fl_Group* o
769           o->end();
770           Fl_Group::current()->resizable(o);
771         } // Fl_Tile* o
772         { Fl_Group* o = new Fl_Group(95, 310, 310, 20, "User Data:");
773           o->labelfont(1);
774           o->labelsize(11);
775           o->callback((Fl_Callback*)propagate_load);
776           o->align(Fl_Align(FL_ALIGN_LEFT));
777           { Fl_Input* o = new Fl_Input(95, 310, 158, 20);
778             o->tooltip("The user data to pass into the callback code.");
779             o->labelfont(1);
780             o->labelsize(11);
781             o->textfont(4);
782             o->textsize(11);
783             o->callback((Fl_Callback*)user_data_cb);
784             Fl_Group::current()->resizable(o);
785           } // Fl_Input* o
786           { Fl_Choice* o = new Fl_Choice(300, 310, 105, 20, "When:");
787             o->tooltip("When to call the callback function.");
788             o->box(FL_THIN_UP_BOX);
789             o->down_box(FL_BORDER_BOX);
790             o->labelfont(1);
791             o->labelsize(11);
792             o->textsize(11);
793             o->callback((Fl_Callback*)when_cb);
794             o->when(FL_WHEN_CHANGED);
795             o->menu(whenmenu);
796           } // Fl_Choice* o
797           o->end();
798         } // Fl_Group* o
799         { Fl_Group* o = new Fl_Group(95, 335, 310, 20, "Type:");
800           o->labelfont(1);
801           o->labelsize(11);
802           o->callback((Fl_Callback*)propagate_load);
803           o->align(Fl_Align(FL_ALIGN_LEFT));
804           { Fl_Input* o = new Fl_Input(95, 335, 158, 20);
805             o->tooltip("The type of the user data.");
806             o->labelfont(1);
807             o->labelsize(11);
808             o->textfont(4);
809             o->textsize(11);
810             o->callback((Fl_Callback*)user_data_type_cb);
811             Fl_Group::current()->resizable(o);
812           } // Fl_Input* o
813           { Fl_Light_Button* o = new Fl_Light_Button(300, 335, 105, 20, "No Change");
814             o->tooltip("Call the callback even if the value has not changed.");
815             o->selection_color((Fl_Color)1);
816             o->labelsize(11);
817             o->callback((Fl_Callback*)when_button_cb);
818           } // Fl_Light_Button* o
819           o->end();
820         } // Fl_Group* o
821         o->end();
822       } // Fl_Group* o
823       o->end();
824       Fl_Group::current()->resizable(o);
825     } // Fl_Tabs* o
826     { Fl_Group* o = new Fl_Group(9, 370, 400, 20);
827       o->labelsize(11);
828       { Fl_Box* o = new Fl_Box(9, 370, 20, 20);
829         o->labelsize(11);
830         Fl_Group::current()->resizable(o);
831       } // Fl_Box* o
832       { Fl_Button* o = new Fl_Button(240, 370, 99, 20, "Hide &Overlays");
833         o->tooltip("Hide the widget overlay box.");
834         o->labelsize(11);
835         o->labelcolor((Fl_Color)1);
836         o->callback((Fl_Callback*)overlay_cb);
837       } // Fl_Button* o
838       { Fl_Button* o = new Fl_Button(66, 370, 80, 20, "Revert");
839         o->labelsize(11);
840         o->callback((Fl_Callback*)revert_cb);
841         o->hide();
842       } // Fl_Button* o
843       { Fl_Return_Button* o = new Fl_Return_Button(344, 370, 64, 20, "Close");
844         o->labelsize(11);
845         o->callback((Fl_Callback*)ok_cb);
846       } // Fl_Return_Button* o
847       { Fl_Button* o = new Fl_Button(339, 370, 70, 20, "Cancel");
848         o->labelsize(11);
849         o->callback((Fl_Callback*)cancel_cb);
850         o->hide();
851       } // Fl_Button* o
852       { wLiveMode = new Fl_Button(151, 370, 84, 20, "Live &Mode");
853         wLiveMode->tooltip("Create a live duplicate of the selected widgets to test resizing and menu beh\
854 avior.");
855         wLiveMode->type(1);
856         wLiveMode->labelsize(11);
857         wLiveMode->callback((Fl_Callback*)live_mode_cb);
858       } // Fl_Button* wLiveMode
859       o->end();
860     } // Fl_Group* o
861     o->size_range(o->w(), o->h());
862     o->size_range(420, 400);
863     o->end();
864   } // Fl_Double_Window* o
865   return w;
866 }
867 
868 //
869 // End of "$Id$".
870 //
871