1 /********************************************************************************
2 * *
3 * Test Group Box *
4 * *
5 *********************************************************************************
6 * Copyright (C) 1997,2006 by Jeroen van der Zijp. All Rights Reserved. *
7 *********************************************************************************
8 * $Id: groupbox.cpp,v 1.115.2.1 2008/04/29 17:18:23 fox Exp $ *
9 ********************************************************************************/
10 #include "fx.h"
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <string.h>
14
15
16 #include "xincs.h"
17
18 /*******************************************************************************/
19
20
21 // Mini application object
22 class GroupWindow : public FXMainWindow {
23 FXDECLARE(GroupWindow)
24 protected:
25
26 // Member data
27 FXToolTip* tooltip;
28 FXMenuBar* menubar;
29 FXMenuPane* filemenu;
30 FXMenuPane* popupmenu;
31 FXMenuPane* helpmenu;
32 FXMenuPane* editmenu;
33 FXMenuPane* submenu1;
34 FXScrollPane* scrollpane;
35 FXPopup* pop;
36 FXPopup* coolpop;
37 FXHorizontalFrame* contents;
38 FXPacker* group1;
39 FXGroupBox* group2;
40 FXGroupBox* group3;
41 FXIcon *doc;
42 FXIcon *folder_open;
43 FXIcon *folder_closed;
44 FXFont *bigfont;
45 FXDataTarget radiotarget;
46 FXuint choice;
47
48 protected:
GroupWindow()49 GroupWindow(){}
50
51 public:
52
53 // Message handlers
54 long onCmdFileDlgAny(FXObject*,FXSelector,void*);
55 long onCmdFileDlgExisting(FXObject*,FXSelector,void*);
56 long onCmdFileDlgMultiple(FXObject*,FXSelector,void*);
57 long onCmdFileDlgDirectory(FXObject*,FXSelector,void*);
58 long onCmdFileDlgMultipleAll(FXObject*,FXSelector,void*);
59 long onCmdDirDlg(FXObject*,FXSelector,void*);
60 long onCmdDownSize(FXObject*,FXSelector,void*);
61 long onCmdDelete(FXObject*,FXSelector,void*);
62 long onCmdAbout(FXObject*,FXSelector,void*);
63 long onCmdRadio(FXObject*,FXSelector,void*);
64 long onCmdPopup(FXObject*,FXSelector,void*);
65 long onUpdRadio(FXObject*,FXSelector,void*);
66 long onCmdOption(FXObject*,FXSelector,void*);
67 long onCmdIconify(FXObject*,FXSelector,void*);
68 long onCmdDeiconify(FXObject*,FXSelector,void*);
69 long onCmdChoice(FXObject*,FXSelector,void*);
70
71 public:
72
73 // Messages
74 enum {
75 ID_DOWNSIZE=FXMainWindow::ID_LAST,
76 ID_POPUP,
77 ID_ABOUT,
78 ID_ICONIFY,
79 ID_DEICONIFY,
80 ID_DELETE,
81 ID_FILEDLG_ANY,
82 ID_FILEDLG_EXISTING,
83 ID_FILEDLG_MULTIPLE,
84 ID_FILEDLG_DIRECTORY,
85 ID_FILEDLG_MULTIPLE_ALL,
86 ID_DIRDLG,
87 ID_OPTION1,
88 ID_OPTION2,
89 ID_OPTION3,
90 ID_OPTION4,
91 ID_RADIO1,
92 ID_RADIO2,
93 ID_RADIO3,
94 ID_CHOICE
95 };
96
97 public:
98 GroupWindow(FXApp* a);
99 virtual void create();
100 virtual ~GroupWindow();
101 };
102
103
104
105 /*******************************************************************************/
106
107 // Map
108 FXDEFMAP(GroupWindow) GroupWindowMap[]={
109
110 //__Message_Type__________ID___________________________________________________Message_Handler_____
111 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_DOWNSIZE, GroupWindow::onCmdDownSize),
112 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_DELETE, GroupWindow::onCmdDelete),
113 FXMAPFUNCS(SEL_COMMAND, GroupWindow::ID_RADIO1,GroupWindow::ID_RADIO3, GroupWindow::onCmdRadio),
114 FXMAPFUNCS(SEL_UPDATE, GroupWindow::ID_RADIO1,GroupWindow::ID_RADIO3, GroupWindow::onUpdRadio),
115 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_POPUP, GroupWindow::onCmdPopup),
116 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_ABOUT, GroupWindow::onCmdAbout),
117 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_FILEDLG_ANY, GroupWindow::onCmdFileDlgAny),
118 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_FILEDLG_EXISTING, GroupWindow::onCmdFileDlgExisting),
119 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_FILEDLG_MULTIPLE, GroupWindow::onCmdFileDlgMultiple),
120 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_FILEDLG_MULTIPLE_ALL, GroupWindow::onCmdFileDlgMultipleAll),
121 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_FILEDLG_DIRECTORY, GroupWindow::onCmdFileDlgDirectory),
122 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_DIRDLG, GroupWindow::onCmdDirDlg),
123 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_ICONIFY, GroupWindow::onCmdIconify),
124 FXMAPFUNC(SEL_TIMEOUT, GroupWindow::ID_DEICONIFY, GroupWindow::onCmdDeiconify),
125 FXMAPFUNCS(SEL_COMMAND, GroupWindow::ID_OPTION1,GroupWindow::ID_OPTION4, GroupWindow::onCmdOption),
126 FXMAPFUNC(SEL_COMMAND, GroupWindow::ID_CHOICE, GroupWindow::onCmdChoice),
127 };
128
129
130 // Object implementation
131 FXIMPLEMENT(GroupWindow,FXMainWindow,GroupWindowMap,ARRAYNUMBER(GroupWindowMap))
132
133
134
135 /*******************************************************************************/
136
137
138 const unsigned char minidoc1[]={
139 0x47,0x49,0x46,0x38,0x37,0x61,0x10,0x00,0x10,0x00,0xf1,0x00,0x00,0xbf,0xbf,0xbf,
140 0x00,0x00,0x00,0xff,0xff,0xff,0x7f,0x7f,0x7f,0x2c,0x00,0x00,0x00,0x00,0x10,0x00,
141 0x10,0x00,0x00,0x02,0x39,0x84,0x8f,0x89,0xc1,0x1d,0x7a,0x82,0x98,0x93,0x41,0x20,
142 0x87,0x16,0xf2,0x29,0x49,0x71,0xcd,0x27,0x68,0x9b,0x16,0x0c,0x09,0x18,0x56,0xea,
143 0x52,0x9a,0x5b,0xba,0xb6,0x14,0x0d,0xcb,0xf3,0x1b,0xd9,0x6e,0xad,0x1b,0x70,0x78,
144 0x06,0x56,0x0b,0x17,0x71,0x28,0x89,0x86,0xa0,0xec,0x02,0x05,0x14,0x00,0x00,0x3b
145 };
146
147 const unsigned char minifolderopen[]={
148 0x47,0x49,0x46,0x38,0x37,0x61,0x10,0x00,0x10,0x00,0xf2,0x00,0x00,0xb2,0xc0,0xdc,
149 0x00,0x00,0x00,0x7f,0x7f,0x7f,0xff,0xff,0xff,0xd9,0xd9,0xd9,0xff,0xff,0x00,0x00,
150 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x03,
151 0x42,0x08,0xba,0xdc,0x2c,0x10,0xba,0x37,0x6a,0x15,0x13,0x88,0x41,0x4a,0x27,0x43,
152 0x14,0x29,0x9b,0x67,0x82,0x56,0x18,0x68,0xdc,0xe9,0x12,0x42,0x20,0xce,0x62,0x11,
153 0x6f,0x69,0x1e,0xc3,0x72,0xfb,0xb9,0xb2,0x18,0xeb,0x47,0xbc,0xad,0x4a,0xc4,0x93,
154 0x6c,0xc5,0x7a,0x99,0x62,0x4c,0x1a,0x2d,0xc0,0x04,0x50,0xaf,0x58,0x6c,0x66,0xcb,
155 0x6d,0x24,0x00,0x00,0x3b
156 };
157
158 /* Generated by reswrap from file minifolderclosed.gif */
159 const unsigned char minifolderclosed[]={
160 0x47,0x49,0x46,0x38,0x37,0x61,0x10,0x00,0x10,0x00,0xf2,0x00,0x00,0xb2,0xc0,0xdc,
161 0x80,0x80,0x80,0xc0,0xc0,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x00,
162 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x03,
163 0x3b,0x08,0xba,0xdc,0x1b,0x10,0x3a,0x16,0xc4,0xb0,0x22,0x4c,0x50,0xaf,0xcf,0x91,
164 0xc4,0x15,0x64,0x69,0x92,0x01,0x31,0x7e,0xac,0x95,0x8e,0x58,0x7b,0xbd,0x41,0x21,
165 0xc7,0x74,0x11,0xef,0xb3,0x5a,0xdf,0x9e,0x1c,0x6f,0x97,0x03,0xba,0x7c,0xa1,0x64,
166 0x48,0x05,0x20,0x38,0x9f,0x50,0xe8,0x66,0x4a,0x75,0x24,0x00,0x00,0x3b
167 };
168
169
170 // Make some windows
GroupWindow(FXApp * a)171 GroupWindow::GroupWindow(FXApp* a):FXMainWindow(a,"Group Box Test",NULL,NULL,DECOR_ALL,0,0,0,0),radiotarget(choice){
172
173 tooltip=new FXToolTip(getApp(),0,100,100);
174
175 doc=new FXGIFIcon(getApp(),minidoc1);
176 folder_open=new FXGIFIcon(getApp(),minifolderopen);
177 folder_closed=new FXGIFIcon(getApp(),minifolderclosed);
178
179 bigfont=new FXFont(getApp(),"helvetica,240,bold,italic");
180
181 // Menubar
182 menubar=new FXMenuBar(this,LAYOUT_SIDE_TOP|LAYOUT_FILL_X);
183 filemenu=new FXMenuPane(this);
184 new FXMenuCommand(filemenu,"Open any",folder_open,this,ID_FILEDLG_ANY);
185 new FXMenuCommand(filemenu,"Open existing",folder_open,this,ID_FILEDLG_EXISTING);
186 new FXMenuCommand(filemenu,"Open multiple",folder_open,this,ID_FILEDLG_MULTIPLE);
187 new FXMenuCommand(filemenu,"Open multiple all",folder_open,this,ID_FILEDLG_MULTIPLE_ALL);
188 new FXMenuCommand(filemenu,"Open directory",folder_open,this,ID_FILEDLG_DIRECTORY);
189 new FXMenuCommand(filemenu,"Open directory dialog",folder_open,this,ID_DIRDLG);
190 new FXMenuCommand(filemenu,"Open choice dialog",NULL,this,ID_CHOICE);
191 new FXMenuRadio(filemenu,"Radio&1",&radiotarget,FXDataTarget::ID_OPTION+1);
192 new FXMenuRadio(filemenu,"Radio&2",&radiotarget,FXDataTarget::ID_OPTION+2);
193 new FXMenuRadio(filemenu,"Radio&3",&radiotarget,FXDataTarget::ID_OPTION+3);
194
195 new FXMenuCommand(filemenu,"Delete\tCtl-X",NULL,this,ID_DELETE,0);
196 new FXMenuCommand(filemenu,"Downsize\tF5\tResize to minimum",NULL,this,ID_DOWNSIZE,0);
197 new FXMenuCommand(filemenu,"&Size",NULL,this,ID_DOWNSIZE,0);
198 new FXMenuCommand(filemenu,"Maximize",NULL,this,ID_MAXIMIZE,0); // TEST
199 new FXMenuCommand(filemenu,"Minimize",NULL,this,ID_ICONIFY,0); // TEST
200 new FXMenuCommand(filemenu,"Restore",NULL,this,ID_RESTORE,0); // TEST
201 new FXMenuCommand(filemenu,"Dump Widgets",NULL,getApp(),FXApp::ID_DUMP);
202
203 // Make edit popup menu
204 editmenu=new FXMenuPane(this);
205 new FXMenuCommand(editmenu,"Undo");
206 new FXMenuCommand(editmenu,"Cut");
207 submenu1=new FXMenuPane(this);
208 new FXMenuCommand(submenu1,"&One");
209 new FXMenuCommand(submenu1,"&Two");
210 new FXMenuCommand(submenu1,"Th&ree");
211 new FXMenuCommand(submenu1,"&Four");
212 new FXMenuCascade(editmenu,"&Submenu1",NULL,submenu1);
213 new FXMenuCascade(filemenu,"&Edit",NULL,editmenu);
214 new FXMenuCommand(filemenu,"&Quit\tCtl-Q",NULL,getApp(),FXApp::ID_QUIT,0);
215 new FXMenuTitle(menubar,"&File",NULL,filemenu);
216
217
218 helpmenu=new FXMenuPane(this);
219 new FXMenuCommand(helpmenu,"&About FOX...",NULL,this,ID_ABOUT,0);
220 new FXMenuTitle(menubar,"&Help",NULL,helpmenu,LAYOUT_RIGHT);
221
222 popupmenu=new FXMenuPane(this);
223 FXTextField* poptext=new FXTextField(popupmenu,10,NULL,0,FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP,0,0,0,0);
224 poptext->setText("Popup with text");
225
226 scrollpane=new FXScrollPane(this,10,PACK_UNIFORM_HEIGHT);
227 new FXMenuCommand(scrollpane,"One");
228 new FXMenuCommand(scrollpane,"Two");
229 new FXMenuCommand(scrollpane,"Three");
230 new FXMenuCommand(scrollpane,"Four");
231 new FXMenuCommand(scrollpane,"Five");
232 new FXMenuCommand(scrollpane,"Six");
233 new FXMenuCommand(scrollpane,"Seven");
234 new FXMenuCommand(scrollpane,"Eight");
235 new FXMenuCommand(scrollpane,"Nine");
236 new FXMenuCommand(scrollpane,"Ten");
237 new FXMenuCommand(scrollpane,"Eleven");
238 new FXMenuCommand(scrollpane,"Twelve");
239 new FXMenuCommand(scrollpane,"Thirteen");
240 new FXMenuCommand(scrollpane,"Fourteen");
241 new FXMenuCommand(scrollpane,"Fifteen");
242 new FXMenuCommand(scrollpane,"Sixteen");
243 new FXMenuCommand(scrollpane,"Seventeen");
244 new FXMenuCommand(scrollpane,"Eighteen");
245 new FXMenuCommand(scrollpane,"Nineteen");
246 new FXMenuCommand(scrollpane,"Twenty");
247 new FXMenuTitle(menubar,"&Scroll",NULL,scrollpane);
248
249 // Status bar
250 FXStatusBar *status=new FXStatusBar(this,LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER);
251
252 new FXLabel(status,"10:15 PM",NULL,LAYOUT_FILL_Y|LAYOUT_RIGHT|FRAME_SUNKEN);
253
254 // Content
255 contents=new FXHorizontalFrame(this,LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y);
256
257 group1=new FXGroupBox(contents,"Title Left",GROUPBOX_TITLE_LEFT|FRAME_RIDGE|LAYOUT_FILL_X|LAYOUT_FILL_Y);
258 group2=new FXGroupBox(contents,"Slider Tests",GROUPBOX_TITLE_CENTER|FRAME_RIDGE|LAYOUT_FILL_X|LAYOUT_FILL_Y);
259 group3=new FXGroupBox(contents,"Title Right",GROUPBOX_TITLE_RIGHT|FRAME_RIDGE|LAYOUT_FILL_X|LAYOUT_FILL_Y);
260
261 FXLabel *testlabel=new FXLabel(group1,"Big Font",NULL,LAYOUT_CENTER_X|JUSTIFY_CENTER_X);
262 testlabel->setFont(bigfont);
263
264 new FXButton(group1,"Small &Button",NULL,NULL,0,FRAME_RAISED|FRAME_THICK);
265 new FXButton(group1,"Big Fat Wide Button\nComprising\nthree lines",NULL,NULL,0,FRAME_RAISED|FRAME_THICK);
266 new FXToggleButton(group1,"C&losed\tTooltip for closed\tHelp for closed","O&pen\nState\tTooltip for open\tHelp for open",folder_closed,folder_open,NULL,0,ICON_BEFORE_TEXT|JUSTIFY_LEFT|FRAME_RAISED|FRAME_THICK);
267 FXTriStateButton *tsb=new FXTriStateButton(group1,"False","True","Maybe",folder_closed,folder_open,doc,NULL,0,ICON_BEFORE_TEXT|JUSTIFY_LEFT|FRAME_RAISED|FRAME_THICK);
268 tsb->setState(MAYBE);
269
270 pop=new FXPopup(this);
271
272 new FXOption(pop,"&First\tTip #1\tHelp first",NULL,this,ID_OPTION1,JUSTIFY_HZ_APART|ICON_AFTER_TEXT);
273 new FXOption(pop,"&Second\tTip #2\tHelp second",NULL,this,ID_OPTION2,JUSTIFY_HZ_APART|ICON_AFTER_TEXT);
274 new FXOption(pop,"Th&ird\tTip #3\tHelp third",NULL,this,ID_OPTION3,JUSTIFY_HZ_APART|ICON_AFTER_TEXT);
275 new FXOption(pop,"F&ourth\tTip #4\tHelp fourth",NULL,this,ID_OPTION4,JUSTIFY_HZ_APART|ICON_AFTER_TEXT);
276
277 new FXOptionMenu(group1,pop,LAYOUT_TOP|FRAME_RAISED|FRAME_THICK|JUSTIFY_HZ_APART|ICON_AFTER_TEXT);
278
279 new FXLabel(group1,"Te&kstje",NULL,LAYOUT_TOP|JUSTIFY_LEFT);
280 new FXButton(group1,"Add an `&&' by doubling\tTooltip\tHelp text for status",NULL,NULL,0,LAYOUT_TOP|FRAME_RAISED|FRAME_THICK);
281 new FXButton(group1,"Te&kstje",NULL,this,ID_POPUP,LAYOUT_TOP|FRAME_RAISED|FRAME_THICK);
282
283 new FXMenuButton(group1,"&Menu",NULL,filemenu,MENUBUTTON_ATTACH_BOTH|MENUBUTTON_DOWN|JUSTIFY_HZ_APART|LAYOUT_TOP|FRAME_RAISED|FRAME_THICK|ICON_AFTER_TEXT);
284 new FXMenuButton(group1,"&Menu",NULL,filemenu,MENUBUTTON_UP|LAYOUT_TOP|FRAME_RAISED|FRAME_THICK|ICON_AFTER_TEXT);
285
286 coolpop=new FXPopup(this,POPUP_HORIZONTAL);
287 new FXButton(coolpop,"A\tTipA",NULL,NULL,0,FRAME_THICK|FRAME_RAISED|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,0,0,30,30);
288 new FXButton(coolpop,"B\tTipB",NULL,NULL,0,FRAME_THICK|FRAME_RAISED|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,0,0,30,30);
289 new FXButton(coolpop,"C\tTipC",NULL,NULL,0,FRAME_THICK|FRAME_RAISED|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,0,0,30,30);
290 new FXButton(coolpop,"D\tTipD",NULL,NULL,0,FRAME_THICK|FRAME_RAISED|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,0,0,30,30);
291 new FXMenuButton(group1,"&S\tSideways",NULL,coolpop,MENUBUTTON_ATTACH_BOTH|MENUBUTTON_LEFT|MENUBUTTON_NOARROWS|LAYOUT_TOP|FRAME_RAISED|FRAME_THICK|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,0,0,30,30);
292
293 FXMatrix* matrix=new FXMatrix(group1,3,FRAME_RAISED|LAYOUT_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y);
294
295 new FXButton(matrix,"A",NULL,NULL,0,FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FILL_ROW);
296 new FXButton(matrix,"&Wide button",NULL,NULL,0,FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X);
297 new FXButton(matrix,"A",NULL,NULL,0,FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X);
298
299 new FXButton(matrix,"BBBB",NULL,NULL,0,FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FILL_ROW|LAYOUT_FILL_COLUMN);
300 new FXButton(matrix,"B",NULL,NULL,0,FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN);
301 new FXButton(matrix,"BB",NULL,NULL,0,FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN);
302
303 new FXButton(matrix,"C",NULL,NULL,0,FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_Y|LAYOUT_CENTER_X|LAYOUT_FILL_ROW);
304 new FXButton(matrix,"&wide",NULL,NULL,0,FRAME_RAISED|FRAME_THICK);
305 new FXButton(matrix,"CC",NULL,NULL,0,FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT);
306
307 FXSlider *slider;
308 new FXLabel(group2,"No Arrow");
309 slider=new FXSlider(group2,NULL,0,LAYOUT_TOP|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT|SLIDER_HORIZONTAL,0,0,200,30);
310
311 new FXLabel(group2,"Up Arrow");
312 slider=new FXSlider(group2,NULL,0,LAYOUT_TOP|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT|SLIDER_HORIZONTAL|SLIDER_ARROW_UP|SLIDER_TICKS_TOP,0,0,200,30);
313 slider->setRange(0,10);
314
315 new FXLabel(group2,"Down Arrow");
316 slider=new FXSlider(group2,NULL,0,LAYOUT_TOP|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT|SLIDER_HORIZONTAL|SLIDER_ARROW_DOWN|SLIDER_TICKS_BOTTOM,0,0,200,30);
317 slider->setRange(0,10);
318
319 new FXLabel(group2,"Inside Bar");
320 slider=new FXSlider(group2,NULL,0,LAYOUT_TOP|LAYOUT_FILL_X|LAYOUT_FIX_HEIGHT|SLIDER_HORIZONTAL|SLIDER_INSIDE_BAR|SLIDER_TICKS_BOTTOM,0,0,200,20);
321 slider->setRange(0,3);
322
323 FXHorizontalFrame *frame=new FXHorizontalFrame(group2,LAYOUT_FILL_X|LAYOUT_FILL_Y);
324
325
326 slider=new FXSlider(frame,NULL,0,LAYOUT_FIX_HEIGHT|SLIDER_VERTICAL|SLIDER_TICKS_LEFT|SLIDER_TICKS_RIGHT,0,0,30,200);
327 slider->setRange(0,10);
328 slider=new FXSlider(frame,NULL,0,LAYOUT_FIX_HEIGHT|SLIDER_VERTICAL|SLIDER_ARROW_RIGHT|SLIDER_TICKS_RIGHT,0,0,30,200);
329 slider->setRange(0,10);
330 slider=new FXSlider(frame,NULL,0,LAYOUT_FIX_HEIGHT|SLIDER_VERTICAL|SLIDER_ARROW_LEFT|SLIDER_TICKS_LEFT,0,0,30,200);
331 slider->setRange(0,10);
332 slider=new FXSlider(frame,NULL,0,LAYOUT_FIX_HEIGHT|SLIDER_VERTICAL|SLIDER_INSIDE_BAR|SLIDER_TICKS_LEFT,0,0,20,200);
333 slider->setRange(0,7);
334 slider->setTickDelta(7);
335 new FXScrollBar(frame,NULL,0,SCROLLBAR_VERTICAL|LAYOUT_FIX_HEIGHT|LAYOUT_FIX_WIDTH,0,0,20,300);
336
337 FXVerticalFrame *vframe1=new FXVerticalFrame(frame,LAYOUT_FILL_X|LAYOUT_FILL_Y);
338 new FXArrowButton(vframe1,NULL,0,LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK|ARROW_UP);
339 new FXArrowButton(vframe1,NULL,0,LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK|ARROW_DOWN);
340 new FXArrowButton(vframe1,NULL,0,LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK|ARROW_LEFT);
341 new FXArrowButton(vframe1,NULL,0,LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK|ARROW_RIGHT);
342 FXVerticalFrame *vframe2=new FXVerticalFrame(frame,LAYOUT_FILL_X|LAYOUT_FILL_Y);
343 new FXArrowButton(vframe2,NULL,0,LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK|ARROW_UP|ARROW_TOOLBAR);
344 new FXArrowButton(vframe2,NULL,0,LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK|ARROW_DOWN|ARROW_TOOLBAR);
345 new FXArrowButton(vframe2,NULL,0,LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK|ARROW_LEFT|ARROW_TOOLBAR);
346 new FXArrowButton(vframe2,NULL,0,LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK|ARROW_RIGHT|ARROW_TOOLBAR);
347
348 FXGroupBox *gp=new FXGroupBox(group3,"Group Box",LAYOUT_SIDE_TOP|FRAME_GROOVE|LAYOUT_FILL_X, 0,0,0,0);
349 new FXRadioButton(gp,"Radio &1",&radiotarget,FXDataTarget::ID_OPTION+1,ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP);
350 new FXRadioButton(gp,"Radio &2",&radiotarget,FXDataTarget::ID_OPTION+2,ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP);
351 new FXRadioButton(gp,"Radio &3",&radiotarget,FXDataTarget::ID_OPTION+3,ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP);
352
353 FXPacker *vv=new FXGroupBox(group3,"Group Box",LAYOUT_SIDE_TOP|FRAME_GROOVE|LAYOUT_FILL_X, 0,0,0,0);
354 new FXCheckButton(vv,"Hilversum 1",NULL,0,ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP);
355 new FXCheckButton(vv,"Hilversum 2",NULL,0,ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP);
356 FXCheckButton *chk1=new FXCheckButton(vv,"One multi-line\nCheckbox Widget",NULL,0,CHECKBUTTON_PLUS|JUSTIFY_LEFT|JUSTIFY_TOP|ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP);
357 chk1->setCheck(MAYBE);
358 FXCheckButton *chk2=new FXCheckButton(vv,fromAscii("Ouvres votre fen\\u00EAtre"),NULL,0,ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP);
359 chk2->setCheck(MAYBE);
360
361 FXSpinner *spinner=new FXSpinner(group3,20,NULL,0,SPIN_NORMAL|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP);
362 spinner->setRange(1,20);
363 spinner->setTipText("tip");
364 spinner->setHelpText("help");
365
366 FXRealSpinner *realspinner=new FXRealSpinner(group3,20,NULL,0,REALSPIN_CYCLIC|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP);
367 realspinner->setRange(1.0,2.0);
368 realspinner->setValue(1.0);
369 realspinner->setIncrement(0.1);
370
371 FXComboBox* combobox=new FXComboBox(group3,5,NULL,0,COMBOBOX_INSERT_LAST|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP);
372 combobox->setNumVisible(5);
373 combobox->appendItem("Very Wide Item");
374 for(int i=0; i<3; i++){
375 char name[50];
376 sprintf(name,"%04d",i);
377 combobox->appendItem(name);
378 }
379
380 FXTreeListBox *treebox=new FXTreeListBox(group3,NULL,0,FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP,0,0,200,0);
381 FXTreeItem *branch,*twig,*leaf,*topmost,*topmost2;
382
383 treebox->setNumVisible(10);
384 topmost=treebox->appendItem(NULL,"Top",folder_open,folder_closed);
385 topmost2=treebox->appendItem(NULL,"Top2",folder_open,folder_closed);
386 treebox->appendItem(topmost2,"First",doc,doc);
387
388 treebox->appendItem(topmost,"First",doc,doc);
389 treebox->appendItem(topmost,"Second",doc,doc);
390 treebox->appendItem(topmost,"Third",doc,doc);
391 branch=treebox->appendItem(topmost,"Fourth",folder_open,folder_closed);
392 treebox->appendItem(branch,"Fourth-First",doc,doc);
393 treebox->appendItem(branch,"Fourth-Second",doc,doc);
394 twig=treebox->appendItem(branch,"Fourth-Third",folder_open,folder_closed);
395 treebox->appendItem(twig,"Fourth-Third-First",doc,doc);
396 treebox->appendItem(twig,"Fourth-Third-Second",doc,doc);
397 treebox->appendItem(twig,"Fourth-Third-Third",doc,doc);
398 leaf=treebox->appendItem(twig,"Fourth-Third-Fourth",folder_open,folder_closed);
399 treebox->appendItem(leaf,"Fourth-Third-Fourth-First",doc,doc);
400 treebox->appendItem(leaf,"Fourth-Third-Fourth-Second",doc,doc);
401 treebox->appendItem(leaf,"Fourth-Third-Fourth-Third",doc,doc);
402 twig=treebox->appendItem(branch,"Fourth-Fourth",folder_open,folder_closed);
403 treebox->appendItem(twig,"Fourth-Fourth-First",doc,doc);
404 treebox->appendItem(twig,"Fourth-Fourth-Second",doc,doc);
405 treebox->appendItem(twig,"Fourth-Fourth-Third",doc,doc);
406
407 new FXLabel(group3,"H&it the hotkey",NULL,LAYOUT_CENTER_X|JUSTIFY_CENTER_X|FRAME_RAISED);
408 FXTextField* textfield0=new FXTextField(group3,20,NULL,0,FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FILL_X);
409 textfield0->setText("Normal Text Field");
410 FXTextField* textfield1=new FXTextField(group3,20,NULL,0,JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FILL_X);
411 textfield1->setText("Reverse Text Field");
412 FXTextField* textfield5=new FXTextField(group3,20,NULL,0,FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FILL_X);
413 textfield5->setText("Centered Text Field");
414 textfield5->setJustify(JUSTIFY_CENTER_X);
415 FXTextField* textfield2=new FXTextField(group3,20,NULL,0,JUSTIFY_RIGHT|TEXTFIELD_PASSWD|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FILL_X);
416 textfield2->setText("Password");
417 FXTextField* textfield3=new FXTextField(group3,20,NULL,0,TEXTFIELD_READONLY|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FILL_X);
418 textfield3->setText("Read Only");
419 FXTextField* textfield4=new FXTextField(group3,20,NULL,0,TEXTFIELD_READONLY|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FILL_X);
420 textfield4->setText("Grayed out");
421 textfield4->disable();
422
423 FXTextField* realnumber=new FXTextField(group3,20,NULL,0,TEXTFIELD_REAL|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FIX_HEIGHT,0,0,0,30);
424 realnumber->setText("1.0E+3");
425 FXTextField* intnumber=new FXTextField(group3,20,NULL,0,TEXTFIELD_INTEGER|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FIX_HEIGHT,0,0,0,30);
426 intnumber->setText("1000");
427
428 FXDial *dial2=new FXDial(group3,NULL,0,DIAL_CYCLIC|DIAL_HAS_NOTCH|DIAL_HORIZONTAL|LAYOUT_FILL_X|FRAME_RAISED|FRAME_THICK,0,0,120,0);
429 new FXScrollBar(group3,NULL,0,SCROLLBAR_HORIZONTAL|LAYOUT_FIX_HEIGHT|LAYOUT_FIX_WIDTH,0,0,300,20);
430
431 FXProgressBar *pbar=new FXProgressBar(group3,NULL,0,LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_PERCENTAGE);
432 pbar->setProgress(48);
433 pbar->setTotal(360);
434 FXProgressBar *pbar2=new FXProgressBar(group3,NULL,0,LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_VERTICAL|PROGRESSBAR_PERCENTAGE|LAYOUT_SIDE_LEFT);
435 pbar2->setTotal(360);
436 FXDial *dial1=new FXDial(group3,NULL,0,DIAL_CYCLIC|DIAL_HAS_NOTCH|DIAL_VERTICAL|FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_Y|LAYOUT_SIDE_LEFT);
437 pbar2->setProgress(48);
438 dial1->setTarget(pbar2);
439 dial1->setSelector(FXWindow::ID_SETVALUE);
440 dial2->setTarget(pbar);
441 dial2->setSelector(FXWindow::ID_SETVALUE);
442 choice=0;
443
444 }
445
~GroupWindow()446 GroupWindow::~GroupWindow(){
447 delete filemenu;
448 delete helpmenu;
449 delete editmenu;
450 delete submenu1;
451 delete pop;
452 delete coolpop;
453 delete popupmenu;
454 delete doc;
455 delete folder_open;
456 delete folder_closed;
457 delete bigfont;
458 }
459
460
461
462 static const FXchar sourcefiles[]="All Files (*)\nC++ Source Files (*.cpp,*.cxx,*.cc)\nC Source Files (*.c)\nC++ Header Files (*.hpp,*.hxx,*.hh,*.h)\n*.o\nAny Extension (*.*)\nThree Letter (*.\?\?\?)\nREADME*";
463
464
465 // Open any file
onCmdFileDlgAny(FXObject *,FXSelector,void *)466 long GroupWindow::onCmdFileDlgAny(FXObject*,FXSelector,void*){
467 FXString file=FXFileDialog::getSaveFilename(this,"Save file","../tests/groupbox.cpp",sourcefiles,1);
468 fxmessage("File=\"%s\"\n",file.text());
469 return 1;
470 }
471
472
473 // Open existing file
onCmdFileDlgExisting(FXObject *,FXSelector,void *)474 long GroupWindow::onCmdFileDlgExisting(FXObject*,FXSelector,void*){
475 FXString file=FXFileDialog::getOpenFilename(this,"Open file","../tests/dippy.h",sourcefiles,3);
476 fxmessage("File=\"%s\"\n",file.text());
477 return 1;
478 }
479
480
481 // Open multiple
onCmdFileDlgMultiple(FXObject *,FXSelector,void *)482 long GroupWindow::onCmdFileDlgMultiple(FXObject*,FXSelector,void*){
483 FXString* files=FXFileDialog::getOpenFilenames(this,"Open files","../tests/groupbox.cpp",sourcefiles);
484 if(files){
485 for(int i=0; !files[i].empty(); i++){
486 fxmessage("Files=\"%s\"\n",files[i].text());
487 }
488 delete [] files;
489 }
490 return 1;
491 }
492
493
494 // Open multiple all
onCmdFileDlgMultipleAll(FXObject *,FXSelector,void *)495 long GroupWindow::onCmdFileDlgMultipleAll(FXObject*,FXSelector,void*){
496 FXFileDialog open(this,"Open files or directories");
497 open.setSelectMode(SELECTFILE_MULTIPLE_ALL);
498 if(open.execute(PLACEMENT_CURSOR)){
499 FXString* files=open.getFilenames();
500 if(files){
501 for(int i=0; !files[i].empty(); i++){
502 fxmessage("Files=\"%s\"\n",files[i].text());
503 }
504 delete [] files;
505 }
506 }
507 return 1;
508 }
509
510
511 // Open existing directory
onCmdFileDlgDirectory(FXObject *,FXSelector,void *)512 long GroupWindow::onCmdFileDlgDirectory(FXObject*,FXSelector,void*){
513 FXString dir=FXFileDialog::getOpenDirectory(this,"Open directory",PATHSEPSTRING);
514 fxmessage("Dir=\"%s\"\n",dir.text());
515 return 1;
516 }
517
518
519 // Open
onCmdDirDlg(FXObject *,FXSelector,void *)520 long GroupWindow::onCmdDirDlg(FXObject*,FXSelector,void*){
521 FXDirDialog open(this,"Open directory");
522 open.showFiles(TRUE);
523 if(open.execute()){
524 fxmessage("Dir=%s\n",open.getDirectory().text());
525 }
526 return 1;
527 }
528
529
530 // Option
onCmdOption(FXObject *,FXSelector sel,void *)531 long GroupWindow::onCmdOption(FXObject*,FXSelector sel,void*){
532 fprintf(stderr,"Chose option %d\n",FXSELID(sel)-ID_OPTION1+1);
533 return 1;
534 }
535
536
537 // Test something
onCmdDownSize(FXObject *,FXSelector,void *)538 long GroupWindow::onCmdDownSize(FXObject*,FXSelector,void*){
539 resize(getDefaultWidth(),getDefaultHeight());
540 return 1;
541 }
542
543
544 // Test delete
onCmdDelete(FXObject *,FXSelector,void *)545 long GroupWindow::onCmdDelete(FXObject*,FXSelector,void*){
546 delete group2;
547 group2=NULL;
548 return 1;
549 }
550
551
552 // Pop up menu
onCmdPopup(FXObject *,FXSelector,void *)553 long GroupWindow::onCmdPopup(FXObject*,FXSelector,void*){
554 FXint x,y; FXuint buttons;
555 getRoot()->getCursorPosition(x,y,buttons);
556 popupmenu->popup(NULL,x,y);
557 return 1;
558 }
559
560
561 // Set choice
onCmdRadio(FXObject *,FXSelector sel,void *)562 long GroupWindow::onCmdRadio(FXObject*,FXSelector sel,void*){
563 choice=FXSELID(sel);
564 return 1;
565 }
566
567 // Test of iconify
onCmdIconify(FXObject *,FXSelector,void *)568 long GroupWindow::onCmdIconify(FXObject*,FXSelector,void*){
569 minimize();
570 getApp()->addTimeout(this,ID_DEICONIFY,2000);
571 FXTRACE((1,"iconify\n"));
572 return 1;
573 }
574
575
576 // Test of deiconify
onCmdDeiconify(FXObject *,FXSelector,void *)577 long GroupWindow::onCmdDeiconify(FXObject*,FXSelector,void*){
578 restore();
579 FXTRACE((1,"deiconify\n"));
580 return 1;
581 }
582
583
584 // Update menu
onUpdRadio(FXObject * sender,FXSelector sel,void *)585 long GroupWindow::onUpdRadio(FXObject* sender,FXSelector sel,void*){
586 sender->handle(this,(FXSELID(sel)==choice)?FXSEL(SEL_COMMAND,ID_CHECK):FXSEL(SEL_COMMAND,ID_UNCHECK),(void*)&choice);
587 return 1;
588 }
589
590
591 // About
onCmdAbout(FXObject *,FXSelector,void *)592 long GroupWindow::onCmdAbout(FXObject*,FXSelector,void*){
593 FXMessageBox::information(this,MBOX_OK,"About FOX:- An intentionally long title","FOX is a really, really cool C++ library!\nExample written by Jeroen");
594 return 1;
595 }
596
597
598 // Set choice
onCmdChoice(FXObject *,FXSelector,void *)599 long GroupWindow::onCmdChoice(FXObject*,FXSelector,void*){
600 FXGIFIcon icon(getApp(),minifolderclosed);
601 FXint choice=FXChoiceBox::ask(this,DECOR_RESIZE,"Choose","What is your choice?",&icon,"One\nTwo\nThree\nFour\nFive\nSix\nSeven\nOne very very very very very long entry");
602 FXTRACE((1,"choice=%d\n",choice));
603 return 1;
604 }
605
606
607 // Start
create()608 void GroupWindow::create(){
609 FXMainWindow::create();
610 show(PLACEMENT_SCREEN);
611 }
612
613
614 /*******************************************************************************/
615
616
617 // Start the whole thing
main(int argc,char * argv[])618 int main(int argc,char *argv[]){
619
620 // Make application
621 FXApp application("Groupbox","FoxTest");
622
623 // Open display
624 application.init(argc,argv);
625
626 // Make window
627 new GroupWindow(&application);
628
629 // Create app
630 application.create();
631
632 // Run
633 return application.run();
634 }
635
636
637