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