1 /* $Header: /cvsroot/lesstif/lesstif/test/Xm/form/test4.c,v 1.9 2002/05/01 15:39:21 amai Exp $ */
2
3 #include <stdio.h>
4 #include <stdlib.h>
5
6 #include <Xm/Xm.h>
7 #include <Xm/List.h>
8 #include <Xm/ScrolledW.h>
9 #include <Xm/Form.h>
10 #include <Xm/Label.h>
11 #include <Xm/MenuShell.h>
12 #include <Xm/PushB.h>
13 #include <Xm/Separator.h>
14 #include <Xm/Text.h>
15 #include <Xm/TextF.h>
16 #include <Xm/RowColumn.h>
17
18 #include "../../common/Test.h"
19
20
21 Widget form, toplevel, deleteButton, dbDescFileTf, dbFileTf, DBOptionMenu, dbNameTf, dbList;
22
23 char *fallback[] = {
24 "*form.background: red",
25 "*test.background: blue",
26 "*label.background: yellow",
27 "*quit.background: green",
28 NULL
29 };
30
31 #define LARGE_WIDTH 400
32 #define LARGE_HEIGHT 500
33 #define SMALL_WIDTH 200
34 #define SMALL_HEIGHT 250
35
Quit(Widget w,XtPointer client,XtPointer call)36 void Quit(Widget w, XtPointer client, XtPointer call)
37 {
38 exit(0);
39 }
40
41 /*
42 * Function:
43 * CONVERT(w, from_string, to_type, to_size, success);
44 * Description:
45 * A converter wrapper for convenience from BuilderXcessory.
46 * Input:
47 * w - Widget : the widget to use for conversion
48 * from_string - char * : the string to convert from
49 * to_type - char * : the type to convert to
50 * to_size - int : the size of the conversion result
51 * success - Boolean* : Set to the result value of the conversion
52 * Output:
53 * None
54 */
CONVERT(Widget w,char * from_string,char * to_type,int to_size,Boolean * success)55 XtPointer CONVERT(Widget w, char *from_string, char * to_type, int to_size, Boolean * success)
56 {
57 XrmValue fromVal, toVal; /* resource holders */
58 Boolean convResult; /* return value */
59 unsigned char oByte; /* one byte result */
60 unsigned short tByte; /* two byte result */
61 XtPointer fByte; /* four byte result */
62 XtPointer aByte; /* allocated result */
63
64 /*
65 * Zero it.
66 */
67 fByte = aByte = NULL;
68 *success = False;
69
70 /*
71 * Sometimes we do not know this at code output.
72 */
73 if (to_size == 0)
74 {
75 if (!strcmp(to_type, XmRXmString) || !strcmp(to_type, XmRXmStringTable))
76 {
77 to_size = sizeof(XtPointer);
78 }
79 else
80 {
81 to_size = strlen(from_string);
82 }
83 }
84
85 /*
86 * Set up the list.
87 */
88 fromVal.size = strlen(from_string) + 1;
89 fromVal.addr = from_string;
90
91 switch( to_size )
92 {
93 case 1:
94 toVal.size = sizeof(unsigned char);
95 toVal.addr = (XtPointer)&oByte;
96 break;
97 case 2:
98 toVal.size = sizeof(unsigned short);
99 toVal.addr = (XtPointer)&tByte;
100 break;
101 default:
102 toVal.size = sizeof(XtPointer);
103 toVal.addr = (XtPointer)&fByte;
104 break;
105 }
106
107 convResult = XtConvertAndStore(w,
108 XmRString,
109 &fromVal,
110 to_type,
111 &toVal);
112
113 if( convResult )
114 {
115 switch( to_size )
116 {
117 case 1:
118 fByte = (XtPointer)((int)oByte);
119 break;
120 case 2:
121 fByte = (XtPointer)((int)tByte);
122 break;
123 default:
124 break;
125 }
126 }
127
128
129 /*
130 * Conversion will fail if we need more than 4 bytes.
131 * For strings it will fail always the first time.
132 */
133 if( !convResult && toVal.size != to_size )
134 {
135 /*
136 * Need to allocate more space for this one.
137 */
138 toVal.addr = (XtPointer)XtMalloc(toVal.size);
139 fByte = aByte = toVal.addr;
140 convResult = XtConvertAndStore(w,
141 XmRString,
142 &fromVal,
143 to_type,
144 &toVal);
145 }
146
147 /*
148 * Free any thing useless we may have allocated.
149 */
150 if( !convResult )
151 {
152 XtFree((char*)aByte);
153 aByte = NULL;
154 }
155
156 /*
157 * Return the result.
158 */
159 *success = convResult;
160 /*SUPPRESS 80*/
161 return(fByte);
162 }
163
164 /*
165 * Function: CreateConfigureWindow()
166 * Create configureWindow hierarchy of widgets.
167 */
168 Widget
CreateConfigureWindow(Widget parent)169 CreateConfigureWindow(Widget parent)
170 {
171 Arg args[512];
172 Cardinal argcnt;
173 Boolean argok;
174 Widget retval;
175 Widget configureWindow;
176 Widget applyButton;
177 Widget cancelButton;
178 Widget label1;
179 Widget scrolledWindow1;
180 Widget label2;
181 Widget menuShell;
182 Widget pulldownMenu5;
183 Widget pushButton5;
184 Widget label3;
185 Widget label4;
186 Widget label5;
187 Widget separator1;
188 Widget separator2;
189 Widget addDBButton;
190 Widget moveUpButton;
191 Widget moveDownButton;
192
193 argok = False;
194
195 argcnt = 0;
196 XtSetArg(args[argcnt], XmNautoUnmanage, False); argcnt++;
197 XtSetArg(args[argcnt], XmNresizePolicy, XmRESIZE_GROW); argcnt++;
198 XtSetArg(args[argcnt], XmNx, 0); argcnt++;
199 XtSetArg(args[argcnt], XmNy, 0); argcnt++;
200 XtSetArg(args[argcnt], XmNwidth, 500); argcnt++;
201 XtSetArg(args[argcnt], XmNheight, 504); argcnt++;
202 configureWindow = XtCreateWidget("configureWindow",
203 xmFormWidgetClass,
204 parent,
205 args,
206 argcnt);
207 retval = configureWindow;
208
209 argcnt = 0;
210 XtSetArg(args[argcnt], XmNlabelString,
211 CONVERT(parent,"Move Down", "XmString", 0, &argok)); if (argok) argcnt++;
212 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
213 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
214 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
215 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
216 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++;
217 XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
218 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
219 XtSetArg(args[argcnt], XmNleftOffset, 25); argcnt++;
220 XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++;
221 XtSetArg(args[argcnt], XmNwidth, 99); argcnt++;
222 XtSetArg(args[argcnt], XmNheight, 30); argcnt++;
223 moveDownButton = XtCreateWidget("moveDownButton",
224 xmPushButtonWidgetClass,
225 configureWindow,
226 args,
227 argcnt);
228
229 XtManageChild(moveDownButton);
230
231 argcnt = 0;
232 XtSetArg(args[argcnt], XmNlabelString,
233 CONVERT(parent,"Move Up", "XmString", 0, &argok)); if (argok) argcnt++;
234 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
235 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
236 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
237 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
238 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++;
239 XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
240 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
241 XtSetArg(args[argcnt], XmNleftOffset, 25); argcnt++;
242 XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++;
243 XtSetArg(args[argcnt], XmNwidth, 99); argcnt++;
244 XtSetArg(args[argcnt], XmNheight, 30); argcnt++;
245 moveUpButton = XtCreateWidget("moveUpButton",
246 xmPushButtonWidgetClass,
247 configureWindow,
248 args,
249 argcnt);
250
251 XtManageChild(moveUpButton);
252
253 argcnt = 0;
254 XtSetArg(args[argcnt], XmNlabelString,
255 CONVERT(parent,"New", "XmString", 0, &argok)); if (argok) argcnt++;
256 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
257 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
258 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
259 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
260 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
261 XtSetArg(args[argcnt], XmNx, 10); argcnt++;
262 XtSetArg(args[argcnt], XmNwidth, 99); argcnt++;
263 XtSetArg(args[argcnt], XmNheight, 30); argcnt++;
264 addDBButton = XtCreateWidget("addDBButton",
265 xmPushButtonWidgetClass,
266 configureWindow,
267 args,
268 argcnt);
269
270 XtManageChild(addDBButton);
271
272 argcnt = 0;
273 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
274 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
275 XtSetArg(args[argcnt], XmNtopOffset, 50); argcnt++;
276 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
277 XtSetArg(args[argcnt], XmNx, 10); argcnt++;
278 XtSetArg(args[argcnt], XmNwidth, 482); argcnt++;
279 XtSetArg(args[argcnt], XmNheight, 20); argcnt++;
280 separator2 = XtCreateWidget("separator2",
281 xmSeparatorWidgetClass,
282 configureWindow,
283 args,
284 argcnt);
285 XtManageChild(separator2);
286
287 argcnt = 0;
288 XtSetArg(args[argcnt], XmNsensitive, True); argcnt++;
289 XtSetArg(args[argcnt], XmNlabelString,
290 CONVERT(parent,"Delete", "XmString", 0, &argok)); if (argok) argcnt++;
291 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
292 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
293 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
294 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
295 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++;
296 XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
297 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
298 XtSetArg(args[argcnt], XmNleftOffset, 25); argcnt++;
299 XtSetArg(args[argcnt], XmNwidth, 100); argcnt++;
300 XtSetArg(args[argcnt], XmNheight, 30); argcnt++;
301 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
302 XtSetArg(args[argcnt], XmNtopWidget, addDBButton); argcnt++;
303 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
304 XtSetArg(args[argcnt], XmNleftWidget, addDBButton); argcnt++;
305 deleteButton = XtCreateWidget("deleteButton",
306 xmPushButtonWidgetClass,
307 configureWindow,
308 args,
309 argcnt);
310
311 XtManageChild(deleteButton);
312
313 argcnt = 0;
314 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
315 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
316 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
317 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
318 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
319 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
320 XtSetArg(args[argcnt], XmNleftOffset, 10); argcnt++;
321 XtSetArg(args[argcnt], XmNrightOffset, 10); argcnt++;
322 XtSetArg(args[argcnt], XmNx, 10); argcnt++;
323 XtSetArg(args[argcnt], XmNwidth, 480); argcnt++;
324 XtSetArg(args[argcnt], XmNheight, 20); argcnt++;
325 separator1 = XtCreateWidget("separator1",
326 xmSeparatorWidgetClass,
327 configureWindow,
328 args,
329 argcnt);
330 XtManageChild(separator1);
331
332 argcnt = 0;
333 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
334 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
335 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
336 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
337 XtSetArg(args[argcnt], XmNtopOffset, -3); argcnt++;
338 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
339 XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
340 XtSetArg(args[argcnt], XmNrightOffset, 10); argcnt++;
341 XtSetArg(args[argcnt], XmNwidth, 268); argcnt++;
342 XtSetArg(args[argcnt], XmNheight, 36); argcnt++;
343 dbDescFileTf = XtCreateWidget("dbDescFileTf",
344 xmTextFieldWidgetClass,
345 configureWindow,
346 args,
347 argcnt);
348
349 XtManageChild(dbDescFileTf);
350
351 argcnt = 0;
352 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
353 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
354 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
355 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
356 XtSetArg(args[argcnt], XmNtopOffset, 1); argcnt++;
357 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
358 XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
359 XtSetArg(args[argcnt], XmNrightOffset, 10); argcnt++;
360 XtSetArg(args[argcnt], XmNwidth, 268); argcnt++;
361 XtSetArg(args[argcnt], XmNheight, 36); argcnt++;
362 dbFileTf = XtCreateWidget("dbFileTf",
363 xmTextFieldWidgetClass,
364 configureWindow,
365 args,
366 argcnt);
367
368 XtManageChild(dbFileTf);
369
370 argcnt = 0;
371 XtSetArg(args[argcnt], XmNlabelString,
372 CONVERT(parent,"Description File Name :", "XmString", 0, &argok)); if (argok) argcnt++;
373 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
374 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
375 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
376 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
377 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
378 XtSetArg(args[argcnt], XmNx, 10); argcnt++;
379 XtSetArg(args[argcnt], XmNwidth, 200); argcnt++;
380 XtSetArg(args[argcnt], XmNheight, 43); argcnt++;
381 label5 = XtCreateWidget("label5",
382 xmLabelWidgetClass,
383 configureWindow,
384 args,
385 argcnt);
386 XtManageChild(label5);
387
388 argcnt = 0;
389 XtSetArg(args[argcnt], XmNlabelString,
390 CONVERT(parent,"File Name :", "XmString", 0, &argok)); if (argok) argcnt++;
391 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
392 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
393 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
394 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
395 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
396 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
397 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
398 XtSetArg(args[argcnt], XmNleftOffset, 10); argcnt++;
399 XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++;
400 XtSetArg(args[argcnt], XmNx, 10); argcnt++;
401 XtSetArg(args[argcnt], XmNwidth, 202); argcnt++;
402 XtSetArg(args[argcnt], XmNheight, 42); argcnt++;
403 label4 = XtCreateWidget("label4",
404 xmLabelWidgetClass,
405 configureWindow,
406 args,
407 argcnt);
408 XtManageChild(label4);
409
410 argcnt = 0;
411 XtSetArg(args[argcnt], XmNlabelString,
412 CONVERT(parent,"Database Type :", "XmString", 0, &argok)); if (argok) argcnt++;
413 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
414 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
415 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
416 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
417 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
418 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
419 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
420 XtSetArg(args[argcnt], XmNleftOffset, 10); argcnt++;
421 XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++;
422 XtSetArg(args[argcnt], XmNx, 10); argcnt++;
423 XtSetArg(args[argcnt], XmNwidth, 202); argcnt++;
424 XtSetArg(args[argcnt], XmNheight, 41); argcnt++;
425 label3 = XtCreateWidget("label3",
426 xmLabelWidgetClass,
427 configureWindow,
428 args,
429 argcnt);
430 XtManageChild(label3);
431
432 argcnt = 0;
433 XtSetArg(args[argcnt], XmNlabelString,
434 CONVERT(parent," ", "XmString", 0, &argok)); if (argok) argcnt++;
435 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
436 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
437 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
438 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
439 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
440 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
441 XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
442 XtSetArg(args[argcnt], XmNrightOffset, 10); argcnt++;
443 XtSetArg(args[argcnt], XmNrowColumnType, XmMENU_OPTION); argcnt++;
444 XtSetArg(args[argcnt], XmNwidth, 268); argcnt++;
445 XtSetArg(args[argcnt], XmNheight, 31); argcnt++;
446 DBOptionMenu = XtCreateWidget("optionMenu1",
447 xmRowColumnWidgetClass,
448 configureWindow,
449 args,
450 argcnt);
451
452 XtManageChild(DBOptionMenu);
453
454 argcnt = 0;
455 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
456 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
457 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
458 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
459 XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
460 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
461 XtSetArg(args[argcnt], XmNleftOffset, 10); argcnt++;
462 XtSetArg(args[argcnt], XmNrightOffset, 10); argcnt++;
463 XtSetArg(args[argcnt], XmNwidth, 268); argcnt++;
464 XtSetArg(args[argcnt], XmNheight, 36); argcnt++;
465 dbNameTf = XtCreateWidget("dbNameTf",
466 xmTextFieldWidgetClass,
467 configureWindow,
468 args,
469 argcnt);
470
471 XtManageChild(dbNameTf);
472
473 argcnt = 0;
474 XtSetArg(args[argcnt], XmNlabelString,
475 CONVERT(parent,"Database Name", "XmString", 0, &argok)); if (argok) argcnt++;
476 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
477 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
478 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
479 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
480 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
481 XtSetArg(args[argcnt], XmNx, 10); argcnt++;
482 XtSetArg(args[argcnt], XmNwidth, 202); argcnt++;
483 XtSetArg(args[argcnt], XmNheight, 40); argcnt++;
484 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
485 XtSetArg(args[argcnt], XmNtopWidget, separator2); argcnt++;
486 label2 = XtCreateWidget("label2",
487 xmLabelWidgetClass,
488 configureWindow,
489 args,
490 argcnt);
491 XtManageChild(label2);
492
493 argcnt = 0;
494 XtSetArg(args[argcnt], XmNscrollingPolicy, XmAPPLICATION_DEFINED); argcnt++;
495 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
496 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
497 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
498 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
499 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
500 XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
501 XtSetArg(args[argcnt], XmNleftOffset, 10); argcnt++;
502 XtSetArg(args[argcnt], XmNrightOffset, 9); argcnt++;
503 XtSetArg(args[argcnt], XmNx, 10); argcnt++;
504 XtSetArg(args[argcnt], XmNwidth, 481); argcnt++;
505 XtSetArg(args[argcnt], XmNheight, 100); argcnt++;
506 scrolledWindow1 = XtCreateWidget("scrolledWindow1",
507 xmScrolledWindowWidgetClass,
508 configureWindow,
509 args,
510 argcnt);
511 XtManageChild(scrolledWindow1);
512
513 argcnt = 0;
514 XtSetArg(args[argcnt], XmNlabelString,
515 CONVERT(parent,"Database Names :", "XmString", 0, &argok)); if (argok) argcnt++;
516 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
517 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
518 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++;
519 XtSetArg(args[argcnt], XmNleftOffset, 10); argcnt++;
520 XtSetArg(args[argcnt], XmNx, 10); argcnt++;
521 XtSetArg(args[argcnt], XmNy, 10); argcnt++;
522 XtSetArg(args[argcnt], XmNwidth, 101); argcnt++;
523 XtSetArg(args[argcnt], XmNheight, 30); argcnt++;
524 label1 = XtCreateWidget("label1",
525 xmLabelWidgetClass,
526 configureWindow,
527 args,
528 argcnt);
529 XtManageChild(label1);
530
531 argcnt = 0;
532 XtSetArg(args[argcnt], XmNlabelString,
533 CONVERT(parent,"Cancel", "XmString", 0, &argok)); if (argok) argcnt++;
534 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
535 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
536 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
537 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
538 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++;
539 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
540 XtSetArg(args[argcnt], XmNleftOffset, 95); argcnt++;
541 XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++;
542 XtSetArg(args[argcnt], XmNwidth, 115); argcnt++;
543 XtSetArg(args[argcnt], XmNheight, 31); argcnt++;
544 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
545 XtSetArg(args[argcnt], XmNtopWidget, separator1); argcnt++;
546 cancelButton = XtCreateWidget("cancelButton",
547 xmPushButtonWidgetClass,
548 configureWindow,
549 args,
550 argcnt);
551
552 XtManageChild(cancelButton);
553
554 argcnt = 0;
555 XtSetArg(args[argcnt], XmNlabelString,
556 CONVERT(parent,"Apply", "XmString", 0, &argok)); if (argok) argcnt++;
557 XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
558 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
559 XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
560 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
561 XtSetArg(args[argcnt], XmNx, 20); argcnt++;
562 XtSetArg(args[argcnt], XmNwidth, 115); argcnt++;
563 XtSetArg(args[argcnt], XmNheight, 31); argcnt++;
564 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
565 XtSetArg(args[argcnt], XmNtopWidget, separator1); argcnt++;
566 applyButton = XtCreateWidget("applyButton",
567 xmPushButtonWidgetClass,
568 configureWindow,
569 args,
570 argcnt);
571
572 XtManageChild(applyButton);
573 XtAddCallback(applyButton, XmNactivateCallback, Quit, 0);
574
575 argcnt = 0;
576 XtSetArg(args[argcnt], XmNleftOffset, 95); argcnt++;
577 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
578 XtSetArg(args[argcnt], XmNleftWidget, applyButton); argcnt++;
579 XtSetValues(cancelButton, args, argcnt);
580
581 argcnt = 0;
582 XtSetArg(args[argcnt], XmNselectionPolicy, XmSINGLE_SELECT); argcnt++;
583 XtSetArg(args[argcnt], XmNwidth, 481); argcnt++;
584 XtSetArg(args[argcnt], XmNheight, 100); argcnt++;
585 dbList = XtCreateWidget("dbList",
586 xmListWidgetClass,
587 scrolledWindow1,
588 args,
589 argcnt);
590
591 XtManageChild(dbList);
592
593 argcnt = 0;
594 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
595 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
596 XtSetArg(args[argcnt], XmNtopWidget, label1); argcnt++;
597 XtSetValues(scrolledWindow1, args, argcnt);
598
599 argcnt = 0;
600 XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
601 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
602 XtSetArg(args[argcnt], XmNtopWidget, label2); argcnt++;
603 XtSetArg(args[argcnt], XmNleftOffset, 10); argcnt++;
604 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
605 XtSetArg(args[argcnt], XmNleftWidget, label2); argcnt++;
606 XtSetValues(dbNameTf, args, argcnt);
607
608 argcnt = 0;
609 XtSetArg(args[argcnt], XmNwidth, 1); argcnt++;
610 XtSetArg(args[argcnt], XmNheight, 1); argcnt++;
611 menuShell = XtCreatePopupShell("menuShell",
612 xmMenuShellWidgetClass,
613 XtParent(DBOptionMenu),
614 args,
615 argcnt);
616
617 argcnt = 0;
618 XtSetArg(args[argcnt], XmNrowColumnType, XmMENU_PULLDOWN); argcnt++;
619 XtSetArg(args[argcnt], XmNx, 0); argcnt++;
620 XtSetArg(args[argcnt], XmNy, 0); argcnt++;
621 XtSetArg(args[argcnt], XmNwidth, 78); argcnt++;
622 XtSetArg(args[argcnt], XmNheight, 25); argcnt++;
623 pulldownMenu5 = XtCreateWidget("pulldownMenu5",
624 xmRowColumnWidgetClass,
625 menuShell,
626 args,
627 argcnt);
628
629
630 argcnt = 0;
631 pushButton5 = XtCreateWidget("pushButton5",
632 xmPushButtonWidgetClass,
633 pulldownMenu5,
634 args,
635 argcnt);
636
637 XtManageChild(pushButton5);
638
639 argcnt = 0;
640 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
641 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
642 XtSetArg(args[argcnt], XmNtopWidget, label2); argcnt++;
643 XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
644 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
645 XtSetArg(args[argcnt], XmNleftWidget, dbNameTf); argcnt++;
646 XtSetArg(args[argcnt], XmNsubMenuId, pulldownMenu5); argcnt++;
647 XtSetValues(DBOptionMenu, args, argcnt);
648
649 argcnt = 0;
650 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
651 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
652 XtSetArg(args[argcnt], XmNtopWidget, label2); argcnt++;
653 XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++;
654 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
655 XtSetArg(args[argcnt], XmNrightWidget, label2); argcnt++;
656 XtSetValues(label3, args, argcnt);
657
658 argcnt = 0;
659 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
660 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
661 XtSetArg(args[argcnt], XmNtopWidget, label3); argcnt++;
662 XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++;
663 XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
664 XtSetArg(args[argcnt], XmNrightWidget, label3); argcnt++;
665 XtSetValues(label4, args, argcnt);
666
667 argcnt = 0;
668 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
669 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
670 XtSetArg(args[argcnt], XmNtopWidget, label4); argcnt++;
671 XtSetValues(label5, args, argcnt);
672
673 argcnt = 0;
674 XtSetArg(args[argcnt], XmNtopOffset, 1); argcnt++;
675 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
676 XtSetArg(args[argcnt], XmNtopWidget, label4); argcnt++;
677 XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
678 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
679 XtSetArg(args[argcnt], XmNleftWidget, dbNameTf); argcnt++;
680 XtSetValues(dbFileTf, args, argcnt);
681
682 argcnt = 0;
683 XtSetArg(args[argcnt], XmNtopOffset, -3); argcnt++;
684 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
685 XtSetArg(args[argcnt], XmNtopWidget, label5); argcnt++;
686 XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
687 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
688 XtSetArg(args[argcnt], XmNleftWidget, dbNameTf); argcnt++;
689 XtSetValues(dbDescFileTf, args, argcnt);
690
691 argcnt = 0;
692 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
693 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
694 XtSetArg(args[argcnt], XmNtopWidget, dbDescFileTf); argcnt++;
695 XtSetValues(separator1, args, argcnt);
696
697 argcnt = 0;
698 XtSetArg(args[argcnt], XmNtopOffset, 50); argcnt++;
699 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
700 XtSetArg(args[argcnt], XmNtopWidget, scrolledWindow1); argcnt++;
701 XtSetValues(separator2, args, argcnt);
702
703 argcnt = 0;
704 XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++;
705 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
706 XtSetArg(args[argcnt], XmNtopWidget, scrolledWindow1); argcnt++;
707 XtSetValues(addDBButton, args, argcnt);
708
709 argcnt = 0;
710 XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
711 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
712 XtSetArg(args[argcnt], XmNtopWidget, addDBButton); argcnt++;
713 XtSetArg(args[argcnt], XmNleftOffset, 25); argcnt++;
714 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
715 XtSetArg(args[argcnt], XmNleftWidget, deleteButton); argcnt++;
716 XtSetValues(moveUpButton, args, argcnt);
717
718 argcnt = 0;
719 XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
720 XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); argcnt++;
721 XtSetArg(args[argcnt], XmNtopWidget, moveUpButton); argcnt++;
722 XtSetArg(args[argcnt], XmNleftOffset, 25); argcnt++;
723 XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
724 XtSetArg(args[argcnt], XmNleftWidget, moveUpButton); argcnt++;
725 XtSetValues(moveDownButton, args, argcnt);
726
727 return( retval );
728 }
729
main(int argc,char ** argv)730 int main(int argc, char **argv)
731 {
732 XtAppContext app;
733
734 XtSetLanguageProc(NULL, NULL, NULL);
735
736 toplevel = XtVaAppInitialize(&app, "Form", NULL, 0, &argc, argv,
737 fallback, NULL);
738
739
740 form = CreateConfigureWindow(toplevel);
741 XtManageChild(form);
742
743
744 XtRealizeWidget(toplevel);
745
746 {
747 #if XmVERSION > 1
748 static XtWidgetGeometry Expected[] = {
749 {CWWidth | CWHeight , 325, 317, 500, 504, 0,0,0, /* configureWindow */},
750 {CWWidth | CWHeight | CWX | CWY, 383, 160, 99, 30, 0,0,0, /* moveDownButton */},
751 {CWWidth | CWHeight | CWX | CWY, 259, 160, 99, 30, 0,0,0, /* moveUpButton */},
752 {CWWidth | CWHeight | CWX | CWY, 10, 160, 99, 30, 0,0,0, /* addDBButton */},
753 {CWWidth | CWHeight | CWX | CWY, 10, 200, 482, 20, 0,0,0, /* separator2 */},
754 {CWWidth | CWHeight | CWX | CWY, 134, 160, 100, 30, 0,0,0, /* deleteButton */},
755 {CWWidth | CWHeight | CWX | CWY, 10, 426, 480, 20, 0,0,0, /* separator1 */},
756 {CWWidth | CWHeight | CWX | CWY, 222, 380, 268, 36, 0,0,0, /* dbDescFileTf */},
757 {CWWidth | CWHeight | CWX | CWY, 222, 332, 268, 36, 0,0,0, /* dbFileTf */},
758 {CWWidth | CWHeight | CWX | CWY, 10, 383, 200, 43, 0,0,0, /* label5 */},
759 {CWWidth | CWHeight | CWX | CWY, 10, 331, 202, 42, 0,0,0, /* label4 */},
760 {CWWidth | CWHeight | CWX | CWY, 10, 280, 202, 41, 0,0,0, /* label3 */},
761 {CWWidth | CWHeight | CWX | CWY, 222, 280, 268, 35, 0,0,0, /* optionMenu1 */},
762 {CWWidth | CWHeight | CWX | CWY, 3, 3, 10, 29, 0,0,0, /* OptionLabel */},
763 {CWWidth | CWHeight | CWX | CWY, 16, 3, 103, 29, 0,0,0, /* OptionButton */},
764 {CWWidth | CWHeight | CWX | CWY, 222, 230, 268, 36, 0,0,0, /* dbNameTf */},
765 {CWWidth | CWHeight | CWX | CWY, 10, 230, 202, 40, 0,0,0, /* label2 */},
766 {CWWidth | CWHeight | CWX | CWY, 10, 50, 481, 100, 0,0,0, /* scrolledWindow1 */},
767 {CWWidth | CWHeight | CWX | CWY, 0, 0, 481, 100, 0,0,0, /* dbList */},
768 {CWWidth | CWHeight | CWX | CWY, 10, 10, 101, 30, 0,0,0, /* label1 */},
769 {CWWidth | CWHeight | CWX | CWY, 230, 456, 115, 31, 0,0,0, /* cancelButton */},
770 {CWWidth | CWHeight | CWX | CWY, 20, 456, 115, 31, 0,0,0, /* applyButton */},
771 };
772 #else
773 static XtWidgetGeometry Expected[] = {
774 {CWWidth | CWHeight, 0, 0, 500, 504, 0,0,0, /* ConfigureWindow */},
775 {CWWidth | CWHeight | CWX | CWY,383, 160, 99, 30, 0,0,0, /* moveDownButton */},
776 {CWWidth | CWHeight | CWX | CWY,259, 160, 99, 30, 0,0,0, /* moveUpButton */},
777 {CWWidth | CWHeight | CWX | CWY, 10, 160, 99, 30, 0,0,0, /* addDBButton */},
778 {CWWidth | CWHeight | CWX | CWY, 10, 200, 482, 20, 0,0,0, /* separator2 */},
779 {CWWidth | CWHeight | CWX | CWY, 134, 160, 100, 30, 0,0,0, /* deleteButton */},
780 {CWWidth | CWHeight | CWX | CWY, 10, 426, 480, 20,0,0,0, /* separator1 */},
781 {CWWidth | CWHeight | CWX | CWY, 222, 380, 268, 36,0,0,0, /* dbDescFileTf */},
782 {CWWidth | CWHeight | CWX | CWY, 222, 332, 268, 36,0,0,0, /* dbFileTf */},
783 {CWWidth | CWHeight | CWX | CWY, 10, 383, 200, 43,0,0,0, /* label5 */},
784 {CWWidth | CWHeight | CWX | CWY, 10, 331, 202, 42,0,0,0, /* label4 */},
785 {CWWidth | CWHeight | CWX | CWY, 10, 280, 202, 41,0,0,0, /* label3 */},
786 {CWWidth | CWHeight | CWX | CWY, 222, 280, 268, 31,0,0,0, /* optionMenu1 */},
787 {CWWidth | CWHeight | CWX | CWY, 3, 3, 10, 25,0,0,0, /* OptionLabel */},
788 {CWWidth | CWHeight | CWX | CWY, 16, 3, 103, 25,0,0,0, /* OptionButton */},
789 {CWWidth | CWHeight | CWX | CWY, 222, 230, 268, 36,0,0,0, /* dbNameTf */},
790 {CWWidth | CWHeight | CWX | CWY, 10, 230, 202, 40,0,0,0, /* label2 */},
791 {CWWidth | CWHeight | CWX | CWY, 10, 50, 481, 100,0,0,0, /* scrolledWindow1 */},
792 {CWWidth | CWHeight | CWX | CWY, 0, 0, 481, 100,0,0,0, /* dbList */},
793 {CWWidth | CWHeight | CWX | CWY, 10, 10, 101, 30,0,0,0, /* label1 */},
794 {CWWidth | CWHeight | CWX | CWY, 230, 456, 115, 31,0,0,0, /* cancelButton */},
795 {CWWidth | CWHeight | CWX | CWY, 20, 456, 115, 31,0,0,0, /* applyButton */},
796 };
797 #endif
798
799 PrintDetails(toplevel, Expected);
800 }
801 LessTifTestMainLoop(toplevel);
802 exit(0);
803 }
804