1 /* dialogs-Xm.c --- Motif widgets for demo, options, and password dialogs.
2 * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <jwz@jwz.org>
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() */
43 Widget preferences_dialog;
44 Widget preferences_form;
48 Widget fade_ticks_text;
49 Widget lock_timeout_text;
50 Widget passwd_timeout_text;
51 Widget verbose_toggle;
52 Widget install_cmap_toggle;
75 create_preferences_dialog(Widget parent, Visual *visual, Colormap colormap)
77 Widget children[22]; /* Children to manage */
78 Arg al[64]; /* Arg List */
79 register int ac = 0; /* Arg Count */
94 XtSetArg (al[ac], XmNvisual, visual); ac++;
95 XtSetArg (al[ac], XmNcolormap, colormap); ac++;
96 XtSetArg (al[ac], XmNdepth, visual_depth(XtScreen(parent), visual)); ac++;
98 real_dialog = XmCreatePromptDialog (parent, "preferencesForm", al, ac);
99 preferences_dialog = XtParent(real_dialog);
101 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SEPARATOR);
102 if (w) XtUnmanageChild (w);
103 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_TEXT);
104 if (w) XtUnmanageChild (w);
105 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SELECTION_LABEL);
106 if (w) XtUnmanageChild (w);
107 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_HELP_BUTTON);
108 if (w) XtUnmanageChild (w);
111 XtSetArg (al [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
112 XtSetArg (al [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
113 XtSetArg (al [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
114 XtSetArg (al [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
115 preferences_form = XmCreateForm (real_dialog, "form", al, ac);
116 XtManageChild (preferences_form);
120 widget12 = XmCreateLabel ( preferences_form, "preferencesLabel", al, ac );
121 widget13 = XmCreateSeparator ( preferences_form, "separator", al, ac );
122 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
123 widget14 = XmCreateLabel ( preferences_form, "timeoutLabel", al, ac );
125 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
126 widget15 = XmCreateLabel ( preferences_form, "cycleLabel", al, ac );
128 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
129 widget16 = XmCreateLabel ( preferences_form, "fadeSecondsLabel", al, ac );
131 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
132 widget17 = XmCreateLabel ( preferences_form, "fadeTicksLabel", al, ac );
134 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
135 widget18 = XmCreateLabel ( preferences_form, "lockLabel", al, ac );
137 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_END); ac++;
138 widget48 = XmCreateLabel ( preferences_form, "passwdLabel", al, ac );
140 timeout_text = XmCreateTextField ( preferences_form, "timeoutText", al, ac );
141 cycle_text = XmCreateTextField ( preferences_form, "cycleText", al, ac );
142 fade_text = XmCreateTextField ( preferences_form, "fadeSecondsText", al, ac);
143 fade_ticks_text = XmCreateTextField ( preferences_form, "fadeTicksText", al, ac);
144 lock_timeout_text = XmCreateTextField ( preferences_form, "passwdText", al, ac);
145 passwd_timeout_text = XmCreateTextField ( preferences_form, "lockText", al, ac);
146 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
147 verbose_toggle = XmCreateToggleButton (preferences_form,"verboseToggle",al,ac);
149 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
150 install_cmap_toggle = XmCreateToggleButton ( preferences_form, "cmapToggle", al, ac);
152 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
153 fade_toggle = XmCreateToggleButton ( preferences_form, "fadeToggle", al, ac);
155 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
156 unfade_toggle = XmCreateToggleButton (preferences_form,"unfadeToggle",al,ac);
158 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
159 lock_toggle = XmCreateToggleButton ( preferences_form, "lockToggle", al, ac);
161 widget29 = XmCreateSeparator ( preferences_form, "separator", al, ac );
163 prefs_done = XmSelectionBoxGetChild (real_dialog, XmDIALOG_OK_BUTTON);
164 prefs_cancel = XmSelectionBoxGetChild (real_dialog, XmDIALOG_CANCEL_BUTTON);
166 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
167 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
168 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
169 XtSetArg(al[ac], XmNleftOffset, 4); ac++;
170 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
171 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
172 XtSetValues ( widget12,al, ac );
175 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
176 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
177 XtSetArg(al[ac], XmNtopWidget, widget12); ac++;
178 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
179 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
180 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
181 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
182 XtSetArg(al[ac], XmNrightOffset, 0); ac++;
183 XtSetValues ( widget13,al, ac );
186 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
187 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
188 XtSetArg(al[ac], XmNtopWidget, widget13); ac++;
189 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
190 XtSetArg(al[ac], XmNbottomWidget, timeout_text); ac++;
191 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
192 XtSetArg(al[ac], XmNleftOffset, 20); ac++;
193 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
194 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
195 XtSetArg(al[ac], XmNrightWidget, timeout_text); ac++;
196 XtSetValues ( widget14,al, ac );
199 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
200 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
201 XtSetArg(al[ac], XmNtopWidget, cycle_text); ac++;
202 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
203 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
204 XtSetArg(al[ac], XmNbottomWidget, cycle_text); ac++;
205 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
206 XtSetArg(al[ac], XmNleftOffset, 20); ac++;
207 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
208 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
209 XtSetArg(al[ac], XmNrightWidget, cycle_text); ac++;
210 XtSetValues ( widget15,al, ac );
213 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
214 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
215 XtSetArg(al[ac], XmNtopWidget, fade_text); ac++;
216 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
217 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
218 XtSetArg(al[ac], XmNbottomWidget, fade_text); ac++;
219 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
220 XtSetArg(al[ac], XmNleftOffset, 20); ac++;
221 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
222 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
223 XtSetArg(al[ac], XmNrightWidget, fade_text); ac++;
224 XtSetValues ( widget16,al, ac );
227 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
228 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
229 XtSetArg(al[ac], XmNtopWidget, fade_ticks_text); ac++;
230 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
231 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
232 XtSetArg(al[ac], XmNbottomWidget, fade_ticks_text); ac++;
233 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
234 XtSetArg(al[ac], XmNleftOffset, 20); ac++;
235 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
236 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
237 XtSetArg(al[ac], XmNrightWidget, fade_ticks_text); ac++;
238 XtSetValues ( widget17,al, ac );
241 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
242 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
243 XtSetArg(al[ac], XmNtopWidget, lock_timeout_text); ac++;
244 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
245 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
246 XtSetArg(al[ac], XmNbottomWidget, lock_timeout_text); ac++;
247 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
248 XtSetArg(al[ac], XmNleftOffset, 19); ac++;
249 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
250 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
251 XtSetArg(al[ac], XmNrightWidget, lock_timeout_text); ac++;
252 XtSetValues ( widget18,al, ac );
255 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
256 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
257 XtSetArg(al[ac], XmNtopWidget, passwd_timeout_text); ac++;
258 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
259 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
260 XtSetArg(al[ac], XmNbottomWidget, passwd_timeout_text); ac++;
261 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
262 XtSetArg(al[ac], XmNleftOffset, 14); ac++;
263 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
264 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
265 XtSetArg(al[ac], XmNrightWidget, passwd_timeout_text); ac++;
266 XtSetValues ( widget48,al, ac );
269 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
270 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
271 XtSetArg(al[ac], XmNtopWidget, widget13); ac++;
272 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
273 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
274 XtSetArg(al[ac], XmNleftOffset, 141); ac++;
275 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
276 XtSetValues ( timeout_text,al, ac );
279 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
280 XtSetArg(al[ac], XmNtopOffset, 2); ac++;
281 XtSetArg(al[ac], XmNtopWidget, timeout_text); ac++;
282 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
283 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
284 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
285 XtSetArg(al[ac], XmNleftWidget, timeout_text); ac++;
286 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
287 XtSetValues ( cycle_text,al, ac );
290 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
291 XtSetArg(al[ac], XmNtopOffset, 2); ac++;
292 XtSetArg(al[ac], XmNtopWidget, cycle_text); ac++;
293 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
294 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
295 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
296 XtSetArg(al[ac], XmNleftWidget, cycle_text); ac++;
297 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
298 XtSetValues ( fade_text,al, ac );
301 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
302 XtSetArg(al[ac], XmNtopOffset, 2); ac++;
303 XtSetArg(al[ac], XmNtopWidget, fade_text); ac++;
304 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
305 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
306 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
307 XtSetArg(al[ac], XmNleftWidget, fade_text); ac++;
308 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
309 XtSetValues ( fade_ticks_text,al, ac );
312 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
313 XtSetArg(al[ac], XmNtopOffset, 2); ac++;
314 XtSetArg(al[ac], XmNtopWidget, fade_ticks_text); ac++;
315 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
316 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
317 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
318 XtSetArg(al[ac], XmNleftWidget, fade_ticks_text); ac++;
319 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
320 XtSetValues ( lock_timeout_text,al, ac );
323 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
324 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
325 XtSetArg(al[ac], XmNtopWidget, lock_timeout_text); ac++;
326 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
327 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
328 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
329 XtSetArg(al[ac], XmNleftWidget, lock_timeout_text); ac++;
330 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
331 XtSetValues ( passwd_timeout_text,al, ac );
334 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
335 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
336 XtSetArg(al[ac], XmNtopWidget, widget13); ac++;
337 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
338 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
339 XtSetArg(al[ac], XmNbottomWidget, timeout_text); ac++;
340 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
341 XtSetArg(al[ac], XmNleftOffset, 20); ac++;
342 XtSetArg(al[ac], XmNleftWidget, timeout_text); ac++;
343 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
344 XtSetArg(al[ac], XmNrightOffset, 20); ac++;
345 XtSetValues ( verbose_toggle,al, ac );
348 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
349 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
350 XtSetArg(al[ac], XmNtopWidget, cycle_text); ac++;
351 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
352 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
353 XtSetArg(al[ac], XmNbottomWidget, cycle_text); ac++;
354 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
355 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
356 XtSetArg(al[ac], XmNleftWidget, verbose_toggle); ac++;
357 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
358 XtSetArg(al[ac], XmNrightOffset, 20); ac++;
359 XtSetValues ( install_cmap_toggle,al, ac );
362 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
363 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
364 XtSetArg(al[ac], XmNtopWidget, fade_text); ac++;
365 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
366 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
367 XtSetArg(al[ac], XmNbottomWidget, fade_text); ac++;
368 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
369 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
370 XtSetArg(al[ac], XmNleftWidget, install_cmap_toggle); ac++;
371 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
372 XtSetArg(al[ac], XmNrightOffset, 20); ac++;
373 XtSetValues ( fade_toggle,al, ac );
376 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
377 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
378 XtSetArg(al[ac], XmNtopWidget, fade_ticks_text); ac++;
379 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
380 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
381 XtSetArg(al[ac], XmNbottomWidget, fade_ticks_text); ac++;
382 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
383 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
384 XtSetArg(al[ac], XmNleftWidget, fade_toggle); ac++;
385 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
386 XtSetArg(al[ac], XmNrightOffset, 20); ac++;
387 XtSetValues ( unfade_toggle,al, ac );
390 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
391 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
392 XtSetArg(al[ac], XmNtopWidget, lock_timeout_text); ac++;
393 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
394 XtSetArg(al[ac], XmNbottomOffset, 0); ac++;
395 XtSetArg(al[ac], XmNbottomWidget, lock_timeout_text); ac++;
396 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); ac++;
397 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
398 XtSetArg(al[ac], XmNleftWidget, unfade_toggle); ac++;
399 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
400 XtSetArg(al[ac], XmNrightOffset, 20); ac++;
401 XtSetValues ( lock_toggle,al, ac );
404 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
405 XtSetArg(al[ac], XmNtopOffset, 0); ac++;
406 XtSetArg(al[ac], XmNtopWidget, passwd_timeout_text); ac++;
408 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
409 XtSetArg(al[ac], XmNbottomOffset, 4); ac++;
411 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
412 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
413 XtSetValues ( widget29,al, ac );
419 children[ac++] = widget12;
420 children[ac++] = widget13;
421 children[ac++] = widget14;
422 children[ac++] = widget15;
423 children[ac++] = widget16;
424 children[ac++] = widget17;
425 children[ac++] = widget18;
426 children[ac++] = widget48;
427 children[ac++] = timeout_text;
428 children[ac++] = cycle_text;
429 children[ac++] = fade_text;
430 children[ac++] = fade_ticks_text;
431 children[ac++] = lock_timeout_text;
432 children[ac++] = passwd_timeout_text;
433 children[ac++] = verbose_toggle;
434 children[ac++] = install_cmap_toggle;
435 children[ac++] = fade_toggle;
436 children[ac++] = unfade_toggle;
437 children[ac++] = lock_toggle;
438 children[ac++] = widget29;
440 XtManageChildren(children, ac);
443 preferences_form = real_dialog;
448 create_demo_dialog(Widget parent, Visual *visual, Colormap colormap)
450 Arg al[64]; /* Arg List */
451 register int ac = 0; /* Arg Count */
458 XtSetArg (al[ac], XmNvisual, visual); ac++;
459 XtSetArg (al[ac], XmNcolormap, colormap); ac++;
460 XtSetArg (al[ac], XmNdepth, visual_depth(XtScreen(parent), visual)); ac++;
463 real_dialog = XmCreatePromptDialog (parent, "demoForm", al, ac);
464 demo_dialog = XtParent(real_dialog);
466 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SEPARATOR);
467 if (w) XtUnmanageChild (w);
468 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_TEXT);
469 if (w) XtUnmanageChild (w);
470 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_SELECTION_LABEL);
471 if (w) XtUnmanageChild (w);
472 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_OK_BUTTON);
473 if (w) XtUnmanageChild (w);
474 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_CANCEL_BUTTON);
475 if (w) XtUnmanageChild (w);
476 w = XmSelectionBoxGetChild (real_dialog, XmDIALOG_HELP_BUTTON);
477 if (w) XtUnmanageChild (w);
480 XtSetArg (al [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
481 XtSetArg (al [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
482 XtSetArg (al [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
483 XtSetArg (al [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
484 demo_form = XmCreateForm (real_dialog, "form", al, ac);
485 XtManageChild (demo_form);
487 label1 = XmCreateLabel ( demo_form, "label1", al, ac );
488 label2 = XmCreateLabel ( demo_form, "label2", al, ac );
489 demo_list = XmCreateScrolledList ( demo_form, "demoList", al, ac );
490 text_area = XtParent ( demo_list );
493 text_line = XmSelectionBoxGetChild (real_dialog, XmDIALOG_TEXT);
494 XtManageChild(text_line);
496 /* #### ARRGH! This is apparently the only way to make hitting return in
497 the text field not *ALSO* activate the most-recently-selected button!
499 This has the unfortunate side effect of making the buttons not be
500 keyboard-traversable, but that's less bad than not being able to try
501 out new switches by typing them into the text field.
503 XmSelectionBox(3M) says in the "Additional Behavior" section:
505 Calls the activate callbacks for the button with
506 the keyboard focus. [... ] In a List widget or
507 single-line Text widget, the List or Text action
508 associated with KActivate is called before the
509 SelectionBox actions associated with KActivate."
511 So they take it as a given that when running activateCallback on a single-
512 line Text widget, you'll also want to run activateCallback on whatever the
513 currently-focussed button is as well! Morons! Villains! Shitheads!
515 (Perhaps there's some way to override XmSelectionBox's KActivate behavior.
516 I doubt it, but if there is, I don't know it.)
519 XtSetArg(al[ac], XmNtraversalOn, False); ac++;
521 next = XmCreatePushButton ( real_dialog, "next", al, ac );
522 prev = XmCreatePushButton ( real_dialog, "prev", al, ac );
523 edit = XmCreatePushButton ( real_dialog, "edit", al, ac );
524 done = XmCreatePushButton ( real_dialog, "done", al, ac );
526 restart = XmCreatePushButton ( real_dialog, "restart", al, ac );
533 XtManageChild(restart);
537 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
538 XtSetArg(al[ac], XmNtopOffset, 5); ac++;
539 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
540 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
541 XtSetArg(al[ac], XmNleftOffset, 4); ac++;
542 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
543 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
544 XtSetValues ( label1,al, ac );
547 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
548 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
549 XtSetArg(al[ac], XmNtopWidget, label1); ac++;
550 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
551 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
552 XtSetArg(al[ac], XmNleftOffset, 4); ac++;
553 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
554 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
555 XtSetValues ( label2,al, ac );
558 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
559 XtSetArg(al[ac], XmNtopOffset, 4); ac++;
560 XtSetArg(al[ac], XmNtopWidget, label2); ac++;
561 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
562 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
563 XtSetArg(al[ac], XmNleftOffset, 4); ac++;
564 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
565 XtSetArg(al[ac], XmNrightOffset, 4); ac++;
566 XtSetValues ( text_area,al, ac );
568 XtManageChild(demo_list);
569 XtManageChild(label1);
570 XtManageChild(label2);
572 demo_form = real_dialog;