1 /* dialogs-Xm.c --- Motif widgets for demo, options, and password dialogs.
2 * xscreensaver, Copyright (c) 1993-1997 Jamie Zawinski <jwz@netscape.com>
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation. No representations are made about the suitability of this
9 * software for any purpose. It is provided "as is" without express or
13 /* The code in this file started off its life as the output of XDesigner,
14 but I've since hacked it by hand... It's a mess, avert your eyes.
21 #include <X11/Xatom.h>
22 #include <X11/Intrinsic.h>
23 #include <X11/Shell.h>
26 #include <Xm/DialogS.h>
27 #include <Xm/DrawnB.h>
32 #include <Xm/ScrollBar.h>
33 #include <Xm/Separator.h>
35 #include <Xm/ToggleB.h>
37 #include <Xm/SelectioB.h>
41 #include "visual.h" /* for visual_depth() */
52 Widget resources_dialog;
53 Widget resources_form;
58 Widget lock_time_text;
59 Widget passwd_time_text;
60 Widget verbose_toggle;
85 create_passwd_dialog(Widget parent, Visual *visual, Colormap colormap)
92 Widget label1, label2, label3;
100 XtSetArg (al[ac], XmNvisual, visual); ac++;
101 XtSetArg (al[ac], XmNcolormap, colormap); ac++;
102 XtSetArg (al[ac], XmNdepth, visual_depth(XtScreen(parent), visual)); ac++;
104 shell = XmCreateDialogShell (parent, "passwdDialog", al, ac);
106 form1 = XmCreateForm (shell, "form", 0, 0);
108 roger = XmCreateDrawnButton (form1, "rogerLabel", 0, 0);
110 dialog = XmCreateSelectionBox (form1, "passwdForm", al, ac);
112 form2 = XmCreateForm ( dialog, "form", 0, 0);
113 label1 = XmCreateLabel ( form2, "passwdLabel1", 0, 0);
114 label2 = XmCreateLabel ( form2, "passwdLabel2", 0, 0);
115 label3 = XmCreateLabel ( form2, "passwdLabel3", 0, 0);
117 text = XmSelectionBoxGetChild (dialog, XmDIALOG_TEXT);
118 ok = XmSelectionBoxGetChild (dialog, XmDIALOG_OK_BUTTON);
119 cancel = XmSelectionBoxGetChild (dialog, XmDIALOG_CANCEL_BUTTON);
121 w = XmSelectionBoxGetChild (dialog, XmDIALOG_LIST_LABEL);
122 if (w) XtUnmanageChild (w);
123 w = XmSelectionBoxGetChild (dialog, XmDIALOG_LIST);
124 if (w) XtUnmanageChild (XtParent(w));
125 w = XmSelectionBoxGetChild (dialog, XmDIALOG_SELECTION_LABEL);
126 if (w) XtUnmanageChild (w);
127 w = XmSelectionBoxGetChild (dialog, XmDIALOG_SEPARATOR);
128 if (w) XtUnmanageChild (w);
129 w = XmSelectionBoxGetChild (dialog, XmDIALOG_APPLY_BUTTON);
130 if (w) XtUnmanageChild (w);
131 w = XmSelectionBoxGetChild (dialog, XmDIALOG_HELP_BUTTON);
132 if (w) XtUnmanageChild (w);
134 XtVaSetValues(label1,
135 XmNtopAttachment, XmATTACH_FORM,
136 XmNleftAttachment, XmATTACH_FORM,
137 XmNrightAttachment, XmATTACH_FORM,
138 XmNbottomAttachment, XmATTACH_NONE,
140 XtVaSetValues(label2,
141 XmNtopAttachment, XmATTACH_WIDGET,
142 XmNtopWidget, label1,
143 XmNleftAttachment, XmATTACH_FORM,
144 XmNrightAttachment, XmATTACH_FORM,
145 XmNbottomAttachment, XmATTACH_NONE,
147 XtVaSetValues(label3,
148 XmNtopAttachment, XmATTACH_WIDGET,
149 XmNtopWidget, label2,
150 XmNleftAttachment, XmATTACH_FORM,
151 XmNrightAttachment, XmATTACH_FORM,
152 XmNbottomAttachment, XmATTACH_FORM,
157 XmNtopAttachment, XmATTACH_FORM,
158 XmNleftAttachment, XmATTACH_FORM,
159 XmNrightAttachment, XmATTACH_NONE,
160 XmNbottomAttachment, XmATTACH_FORM,
162 XtVaSetValues(dialog,
163 XmNtopAttachment, XmATTACH_FORM,
164 XmNleftAttachment, XmATTACH_WIDGET,
165 XmNleftWidget, roger,
166 XmNrightAttachment, XmATTACH_FORM,
167 XmNbottomAttachment, XmATTACH_FORM,
170 XtManageChild(label1);
171 XtManageChild(label2);
172 XtManageChild(label3);
174 XtManageChild(form2);
177 XtManageChild(cancel);
179 XtManageChild(roger);
180 XtManageChild(dialog);
183 Dimension width = 0, height = 0;
184 XtRealizeWidget(form1);
185 XtVaGetValues(roger, XmNwidth, &width, XmNheight, &height, 0);
188 else if (width > height)
189 XtVaSetValues(roger, XmNwidth, width, XmNheight, width, 0);
191 XtVaSetValues(roger, XmNwidth, height, XmNheight, height, 0);
194 passwd_dialog = shell;
197 passwd_label1 = label1;
198 passwd_label3 = label3;
201 passwd_cancel = cancel;
207 create_resources_dialog(Widget parent, Visual *visual, Colormap colormap)
209 Widget children[22]; /* Children to manage */
210 Arg al[64]; /* Arg List */
211 register int ac = 0; /* Arg Count */
226 XtSetArg (al[ac], XmNvisual, visual); ac++;
227 XtSetArg (al[ac], XmNcolormap, colormap); ac++;
228 XtSetArg (al[ac], XmNdepth, visual_depth(XtScreen(parent), visual)); ac++;
230 real_dialog = XmCreatePromptDialog (parent, "resourcesForm", al, ac);
231 resources_dialog = XtParent(real_dialog);
233 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SEPARATOR);
234 if (w) XtUnmanageChild (w);
235 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_TEXT);
236 if (w) XtUnmanageChild (w);
237 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SELECTION_LABEL);
238 if (w) XtUnmanageChild (w);
239 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_HELP_BUTTON);
240 if (w) XtUnmanageChild (w);
243 XtSetArg (al [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
244 XtSetArg (al [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
245 XtSetArg (al [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
246 XtSetArg (al [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
247 resources_form = XmCreateForm (real_dialog, "form", al, ac);
248 XtManageChild (resources_form);
252 widget12 = XmCreateLabel ( resources_form, "resourcesLabel", al, ac );
253 widget13 = XmCreateSeparator ( resources_form, "separator", al, ac );
254 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
255 widget14 = XmCreateLabel ( resources_form, "timeoutLabel", al, ac );
257 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
258 widget15 = XmCreateLabel ( resources_form, "cycleLabel", al, ac );
260 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
261 widget16 = XmCreateLabel ( resources_form, "fadeSecondsLabel", al, ac );
263 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
264 widget17 = XmCreateLabel ( resources_form, "fadeTicksLabel", al, ac );
266 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
267 widget18 = XmCreateLabel ( resources_form, "lockLabel", al, ac );
269 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
270 widget48 = XmCreateLabel ( resources_form, "passwdLabel", al, ac );
272 timeout_text = XmCreateTextField ( resources_form, "timeoutText", al, ac );
273 cycle_text = XmCreateTextField ( resources_form, "cycleText", al, ac );
274 fade_text = XmCreateTextField ( resources_form, "fadeSecondsText", al, ac );
275 ticks_text = XmCreateTextField ( resources_form, "fadeTicksText", al, ac );
276 lock_time_text = XmCreateTextField ( resources_form, "passwdText", al, ac );
277 passwd_time_text = XmCreateTextField ( resources_form, "lockText", al, ac );
278 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
279 verbose_toggle = XmCreateToggleButton ( resources_form, "verboseToggle", al, ac );
281 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
282 cmap_toggle = XmCreateToggleButton ( resources_form, "cmapToggle", al, ac );
284 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
285 fade_toggle = XmCreateToggleButton ( resources_form, "fadeToggle", al, ac );
287 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
288 unfade_toggle = XmCreateToggleButton ( resources_form, "unfadeToggle", al, ac );
290 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
291 lock_toggle = XmCreateToggleButton ( resources_form, "lockToggle", al, ac );
293 widget29 = XmCreateSeparator ( resources_form, "separator", al, ac );
295 res_done = XmSelectionBoxGetChild (real_dialog, XmDIALOG_OK_BUTTON);
296 res_cancel = XmSelectionBoxGetChild (real_dialog, XmDIALOG_CANCEL_BUTTON);
298 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
299 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
300 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
301 XtSetArg(al[ac], XmNleftOffset, 4); ac++;
302 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
303 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
304 XtSetValues ( widget12,al, ac );
307 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
308 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
309 XtSetArg(al[ac], XmNtopWidget, widget12); ac++;
310 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
311 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
312 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
313 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
314 XtSetArg(al[ac], XmNrightOffset, 0); ac++;
315 XtSetValues ( widget13,al, ac );
318 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
319 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
320 XtSetArg(al[ac], XmNtopWidget, widget13); ac++;
321 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
322 XtSetArg(al[ac], XmNbottomWidget, timeout_text); ac++;
323 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
324 XtSetArg(al[ac], XmNleftOffset, 20); ac++;
325 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
326 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
327 XtSetArg(al[ac], XmNrightWidget, timeout_text); ac++;
328 XtSetValues ( widget14,al, ac );
331 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
332 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
333 XtSetArg(al[ac], XmNtopWidget, cycle_text); ac++;
334 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
335 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
336 XtSetArg(al[ac], XmNbottomWidget, cycle_text); ac++;
337 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
338 XtSetArg(al[ac], XmNleftOffset, 20); ac++;
339 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
340 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
341 XtSetArg(al[ac], XmNrightWidget, cycle_text); ac++;
342 XtSetValues ( widget15,al, ac );
345 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
346 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
347 XtSetArg(al[ac], XmNtopWidget, fade_text); ac++;
348 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
349 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
350 XtSetArg(al[ac], XmNbottomWidget, fade_text); ac++;
351 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
352 XtSetArg(al[ac], XmNleftOffset, 20); ac++;
353 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
354 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
355 XtSetArg(al[ac], XmNrightWidget, fade_text); ac++;
356 XtSetValues ( widget16,al, ac );
359 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
360 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
361 XtSetArg(al[ac], XmNtopWidget, ticks_text); ac++;
362 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
363 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
364 XtSetArg(al[ac], XmNbottomWidget, ticks_text); ac++;
365 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
366 XtSetArg(al[ac], XmNleftOffset, 20); ac++;
367 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
368 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
369 XtSetArg(al[ac], XmNrightWidget, ticks_text); ac++;
370 XtSetValues ( widget17,al, ac );
373 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
374 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
375 XtSetArg(al[ac], XmNtopWidget, lock_time_text); ac++;
376 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
377 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
378 XtSetArg(al[ac], XmNbottomWidget, lock_time_text); ac++;
379 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
380 XtSetArg(al[ac], XmNleftOffset, 19); ac++;
381 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
382 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
383 XtSetArg(al[ac], XmNrightWidget, lock_time_text); ac++;
384 XtSetValues ( widget18,al, ac );
387 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
388 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
389 XtSetArg(al[ac], XmNtopWidget, passwd_time_text); ac++;
390 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
391 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
392 XtSetArg(al[ac], XmNbottomWidget, passwd_time_text); ac++;
393 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
394 XtSetArg(al[ac], XmNleftOffset, 14); ac++;
395 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
396 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
397 XtSetArg(al[ac], XmNrightWidget, passwd_time_text); ac++;
398 XtSetValues ( widget48,al, ac );
401 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
402 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
403 XtSetArg(al[ac], XmNtopWidget, widget13); ac++;
404 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
405 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
406 XtSetArg(al[ac], XmNleftOffset, 141); ac++;
407 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
408 XtSetValues ( timeout_text,al, ac );
411 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
412 XtSetArg(al[ac], XmNtopOffset, 2); ac++;
413 XtSetArg(al[ac], XmNtopWidget, timeout_text); ac++;
414 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
415 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
416 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
417 XtSetArg(al[ac], XmNleftWidget, timeout_text); ac++;
418 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
419 XtSetValues ( cycle_text,al, ac );
422 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
423 XtSetArg(al[ac], XmNtopOffset, 2); ac++;
424 XtSetArg(al[ac], XmNtopWidget, cycle_text); ac++;
425 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
426 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
427 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
428 XtSetArg(al[ac], XmNleftWidget, cycle_text); ac++;
429 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
430 XtSetValues ( fade_text,al, ac );
433 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
434 XtSetArg(al[ac], XmNtopOffset, 2); ac++;
435 XtSetArg(al[ac], XmNtopWidget, fade_text); ac++;
436 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
437 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
438 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
439 XtSetArg(al[ac], XmNleftWidget, fade_text); ac++;
440 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
441 XtSetValues ( ticks_text,al, ac );
444 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
445 XtSetArg(al[ac], XmNtopOffset, 2); ac++;
446 XtSetArg(al[ac], XmNtopWidget, ticks_text); ac++;
447 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
448 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
449 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
450 XtSetArg(al[ac], XmNleftWidget, ticks_text); ac++;
451 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
452 XtSetValues ( lock_time_text,al, ac );
455 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
456 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
457 XtSetArg(al[ac], XmNtopWidget, lock_time_text); ac++;
458 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
459 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
460 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
461 XtSetArg(al[ac], XmNleftWidget, lock_time_text); ac++;
462 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
463 XtSetValues ( passwd_time_text,al, ac );
466 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
467 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
468 XtSetArg(al[ac], XmNtopWidget, widget13); ac++;
469 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
470 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
471 XtSetArg(al[ac], XmNbottomWidget, timeout_text); ac++;
472 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
473 XtSetArg(al[ac], XmNleftOffset, 20); ac++;
474 XtSetArg(al[ac], XmNleftWidget, timeout_text); ac++;
475 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
476 XtSetArg(al[ac], XmNrightOffset, 20); ac++;
477 XtSetValues ( verbose_toggle,al, ac );
480 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
481 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
482 XtSetArg(al[ac], XmNtopWidget, cycle_text); ac++;
483 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
484 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
485 XtSetArg(al[ac], XmNbottomWidget, cycle_text); ac++;
486 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
487 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
488 XtSetArg(al[ac], XmNleftWidget, verbose_toggle); ac++;
489 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
490 XtSetArg(al[ac], XmNrightOffset, 20); ac++;
491 XtSetValues ( cmap_toggle,al, ac );
494 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
495 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
496 XtSetArg(al[ac], XmNtopWidget, fade_text); ac++;
497 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
498 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
499 XtSetArg(al[ac], XmNbottomWidget, fade_text); ac++;
500 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
501 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
502 XtSetArg(al[ac], XmNleftWidget, cmap_toggle); ac++;
503 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
504 XtSetArg(al[ac], XmNrightOffset, 20); ac++;
505 XtSetValues ( fade_toggle,al, ac );
508 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
509 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
510 XtSetArg(al[ac], XmNtopWidget, ticks_text); ac++;
511 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
512 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
513 XtSetArg(al[ac], XmNbottomWidget, ticks_text); ac++;
514 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
515 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
516 XtSetArg(al[ac], XmNleftWidget, fade_toggle); ac++;
517 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
518 XtSetArg(al[ac], XmNrightOffset, 20); ac++;
519 XtSetValues ( unfade_toggle,al, ac );
522 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
523 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
524 XtSetArg(al[ac], XmNtopWidget, lock_time_text); ac++;
525 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
526 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
527 XtSetArg(al[ac], XmNbottomWidget, lock_time_text); ac++;
528 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
529 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
530 XtSetArg(al[ac], XmNleftWidget, unfade_toggle); ac++;
531 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
532 XtSetArg(al[ac], XmNrightOffset, 20); ac++;
533 XtSetValues ( lock_toggle,al, ac );
536 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
537 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
538 XtSetArg(al[ac], XmNtopWidget, passwd_time_text); ac++;
540 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
541 XtSetArg(al[ac], XmNbottomOffset, 4); ac++;
543 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
544 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
545 XtSetValues ( widget29,al, ac );
551 children[ac++] = widget12;
552 children[ac++] = widget13;
553 children[ac++] = widget14;
554 children[ac++] = widget15;
555 children[ac++] = widget16;
556 children[ac++] = widget17;
557 children[ac++] = widget18;
558 children[ac++] = widget48;
559 children[ac++] = timeout_text;
560 children[ac++] = cycle_text;
561 children[ac++] = fade_text;
562 children[ac++] = ticks_text;
563 children[ac++] = lock_time_text;
564 children[ac++] = passwd_time_text;
565 children[ac++] = verbose_toggle;
566 children[ac++] = cmap_toggle;
567 children[ac++] = fade_toggle;
568 children[ac++] = unfade_toggle;
569 children[ac++] = lock_toggle;
570 children[ac++] = widget29;
572 XtManageChildren(children, ac);
575 resources_form = real_dialog;
580 create_demo_dialog(Widget parent, Visual *visual, Colormap colormap)
582 Arg al[64]; /* Arg List */
583 register int ac = 0; /* Arg Count */
590 XtSetArg (al[ac], XmNvisual, visual); ac++;
591 XtSetArg (al[ac], XmNcolormap, colormap); ac++;
592 XtSetArg (al[ac], XmNdepth, visual_depth(XtScreen(parent), visual)); ac++;
595 real_dialog = XmCreatePromptDialog (parent, "demoForm", al, ac);
596 demo_dialog = XtParent(real_dialog);
598 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SEPARATOR);
599 if (w) XtUnmanageChild (w);
600 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_TEXT);
601 if (w) XtUnmanageChild (w);
602 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SELECTION_LABEL);
603 if (w) XtUnmanageChild (w);
604 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_OK_BUTTON);
605 if (w) XtUnmanageChild (w);
606 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_CANCEL_BUTTON);
607 if (w) XtUnmanageChild (w);
608 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_HELP_BUTTON);
609 if (w) XtUnmanageChild (w);
612 XtSetArg (al [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
613 XtSetArg (al [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
614 XtSetArg (al [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
615 XtSetArg (al [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
616 demo_form = XmCreateForm (real_dialog, "form", al, ac);
617 XtManageChild (demo_form);
619 label1 = XmCreateLabel ( demo_form, "label1", al, ac );
620 label2 = XmCreateLabel ( demo_form, "label2", al, ac );
621 demo_list = XmCreateScrolledList ( demo_form, "demoList", al, ac );
622 text_area = XtParent ( demo_list );
625 text_line = XmSelectionBoxGetChild (real_dialog, XmDIALOG_TEXT);
626 XtManageChild(text_line);
628 /* #### ARRGH! This is apparently the only way to make hitting return in
629 the text field not *ALSO* activate the most-recently-selected button!
631 This has the unfortunate side effect of making the buttons not be
632 keyboard-traversable, but that's less bad than not being able to try
633 out new switches by typing them into the text field.
635 XmSelectionBox(3M) says in the "Additional Behavior" section:
637 Calls the activate callbacks for the button with
638 the keyboard focus. [... ] In a List widget or
639 single-line Text widget, the List or Text action
640 associated with KActivate is called before the
641 SelectionBox actions associated with KActivate."
643 So they take it as a given that when running activateCallback on a single-
644 line Text widget, you'll also want to run activateCallback on whatever the
645 currently-focussed button is as well! Morons! Villains! Shitheads!
647 (Perhaps there's some way to override XmSelectionBox's KActivate behavior.
648 I doubt it, but if there is, I don't know it.)
651 XtSetArg(al[ac], XmNtraversalOn, False); ac++;
653 next = XmCreatePushButton ( real_dialog, "next", al, ac );
654 prev = XmCreatePushButton ( real_dialog, "prev", al, ac );
655 edit = XmCreatePushButton ( real_dialog, "edit", al, ac );
656 done = XmCreatePushButton ( real_dialog, "done", al, ac );
657 restart = XmCreatePushButton ( real_dialog, "restart", al, ac );
662 XtManageChild(restart);
665 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
666 XtSetArg(al[ac], XmNtopOffset, 5); ac++;
667 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
668 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
669 XtSetArg(al[ac], XmNleftOffset, 4); ac++;
670 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
671 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
672 XtSetValues ( label1,al, ac );
675 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
676 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
677 XtSetArg(al[ac], XmNtopWidget, label1); ac++;
678 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
679 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
680 XtSetArg(al[ac], XmNleftOffset, 4); ac++;
681 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
682 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
683 XtSetValues ( label2,al, ac );
686 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
687 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
688 XtSetArg(al[ac], XmNtopWidget, label2); ac++;
689 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
690 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
691 XtSetArg(al[ac], XmNleftOffset, 4); ac++;
692 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
693 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
694 XtSetValues ( text_area,al, ac );
696 XtManageChild(demo_list);
697 XtManageChild(label1);
698 XtManageChild(label2);
700 demo_form = real_dialog;