/* demo-Xm.c --- implements the interactive demo-mode and options dialogs.
* xscreensaver, Copyright (c) 1999, 2003 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <X11/Xatom.h>
#include <X11/Intrinsic.h>
#include <X11/IntrinsicP.h> /* just for debug info */
#include <X11/ShellP.h>
#include <X11/Shell.h>
#include <Xm/Xm.h>
#include <Xm/MainW.h>
#include <Xm/Form.h>
#include <Xm/Frame.h>
#include <Xm/ScrolledW.h>
#include <Xm/List.h>
#include <Xm/PushB.h>
#include <Xm/PushBG.h>
#include <Xm/Text.h>
#include <Xm/TextF.h>
#include <Xm/ToggleBG.h>
#include <Xm/CascadeBG.h>
#include <Xm/RowColumn.h>
#include <Xm/LabelG.h>
#include <Xm/SeparatoG.h>
#include <Xm/SelectioB.h>
#ifdef HAVE_XMCOMBOBOX /* a Motif 2.0 widget */
# include <Xm/ComboBox.h>
# ifndef XmNtextField /* Lesstif 0.89.4 bug */
# undef HAVE_XMCOMBOBOX
# endif
#endif /* HAVE_XMCOMBOBOX */
#include <stdio.h>
#include <stdlib.h>
const char *visual_menu[] = {
"Any", "Best", "Default", "Default-N", "GL", "TrueColor", "PseudoColor",
"StaticGray", "GrayScale", "DirectColor", "Color", "Gray", "Mono", 0
};
static Widget create_demos_page (Widget parent);
static Widget create_options_page (Widget parent);
static void
tab_cb (Widget button, XtPointer client_data, XtPointer ignored)
{
Widget parent = XtParent(button);
Widget tabber = XtNameToWidget (parent, "*folder");
Widget this_tab = (Widget) client_data;
Widget *kids = 0;
Cardinal nkids = 0;
if (!tabber) abort();
XtVaGetValues (tabber, XmNnumChildren, &nkids, XmNchildren, &kids, NULL);
if (!kids) abort();
if (nkids > 0)
XtUnmanageChildren (kids, nkids);
XtManageChild (this_tab);
}
extern Widget create_xscreensaver_demo (Widget parent);
Widget
create_xscreensaver_demo (Widget parent)
{
/* MainWindow
Form
Menubar
DemoTab
OptionsTab
HR
Tabber
(demo page)
(options page)
*/
Widget mainw, form, menubar;
Widget demo_tab, options_tab, hr, tabber, demos, options;
Arg av[100];
int ac = 0;
mainw = XmCreateMainWindow (parent, "demoForm", av, ac);
form = XmCreateForm (mainw, "form", av, ac);
menubar = XmCreateSimpleMenuBar (form, "menubar", av, ac);
XtVaSetValues (menubar,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
{
Widget menu = 0, item = 0;
char *menus[] = {
"*file", "blank", "lock", "kill", "restart", "-", "exit",
"*edit", "cut", "copy", "paste",
"*help", "about", "docMenu" };
int i;
for (i = 0; i < sizeof(menus)/sizeof(*menus); i++)
{
ac = 0;
if (menus[i][0] == '-')
item = XmCreateSeparatorGadget (menu, "separator", av, ac);
else if (menus[i][0] != '*')
item = XmCreatePushButtonGadget (menu, menus[i], av, ac);
else
{
menu = XmCreatePulldownMenu (parent, menus[i]+1, av, ac);
XtSetArg (av [ac], XmNsubMenuId, menu); ac++;
item = XmCreateCascadeButtonGadget (menubar, menus[i]+1, av, ac);
if (!strcmp (menus[i]+1, "help"))
XtVaSetValues(menubar, XmNmenuHelpWidget, item, NULL);
}
XtManageChild (item);
}
ac = 0;
}
demo_tab = XmCreatePushButtonGadget (form, "demoTab", av, ac);
XtVaSetValues (demo_tab,
XmNleftAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, menubar,
NULL);
options_tab = XmCreatePushButtonGadget (form, "optionsTab", av, ac);
XtVaSetValues (options_tab,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, demo_tab,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, demo_tab,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, demo_tab,
NULL);
hr = XmCreateSeparatorGadget (form, "hr", av, ac);
XtVaSetValues (hr,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, demo_tab,
NULL);
tabber = XmCreateForm (form, "folder", av, ac);
XtVaSetValues (tabber,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, hr,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
demos = create_demos_page (tabber);
options = create_options_page (tabber);
XtAddCallback (demo_tab, XmNactivateCallback, tab_cb, demos);
XtAddCallback (options_tab, XmNactivateCallback, tab_cb, options);
XtManageChild (demos);
XtManageChild (options);
XtManageChild (demo_tab);
XtManageChild (options_tab);
XtManageChild (hr);
XtManageChild (menubar);
XtManageChild (tabber);
XtManageChild (form);
#if 1
XtUnmanageChild (options);
XtManageChild (demos);
#endif
return mainw;
}
static Widget
create_demos_page (Widget parent)
{
/* Form1 (horizontal)
Form2 (vertical)
Scroller
List
ButtonBox1 (vertical)
Button ("Down")
Button ("Up")
Form3 (vertical)
Frame
Label
TextArea (doc)
Label
Text ("Command Line")
Form4 (horizontal)
Checkbox ("Enabled")
Label ("Visual")
ComboBox
HR
ButtonBox2 (vertical)
Button ("Demo")
Button ("Documentation")
*/
Widget form1, form2, form3, form4;
Widget scroller, list, buttonbox1, down, up;
Widget frame, frame_label, doc, cmd_label, cmd_text, enabled, vis_label;
Widget combo;
Widget hr, buttonbox2, demo, man;
Arg av[100];
int ac = 0;
int i;
form1 = XmCreateForm (parent, "form1", av, ac);
form2 = XmCreateForm (form1, "form2", av, ac);
XtVaSetValues (form2,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
scroller = XmCreateScrolledWindow (form2, "scroller", av, ac);
XtVaSetValues (scroller,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_WIDGET,
NULL);
list = XmCreateList (scroller, "list", av, ac);
buttonbox1 = XmCreateForm (form2, "buttonbox1", av, ac);
XtVaSetValues (buttonbox1,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
XtVaSetValues (scroller, XmNbottomWidget, buttonbox1, NULL);
down = XmCreatePushButton (buttonbox1, "down", av, ac);
XtVaSetValues (down,
XmNleftAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
up = XmCreatePushButton (buttonbox1, "up", av, ac);
XtVaSetValues (up,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, down,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
form3 = XmCreateForm (form1, "form3", av, ac);
XtVaSetValues (form3,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, form2,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
frame = XmCreateFrame (form3, "frame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
frame_label = XmCreateLabelGadget (frame, "frameLabel", av, ac);
ac = 0;
XtVaSetValues (frame,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_WIDGET,
NULL);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_WORKAREA_CHILD); ac++;
doc = XmCreateText (frame, "doc", av, ac);
ac = 0;
XtVaSetValues (doc,
XmNeditable, FALSE,
XmNcursorPositionVisible, FALSE,
XmNwordWrap, TRUE,
XmNeditMode, XmMULTI_LINE_EDIT,
XmNshadowThickness, 0,
NULL);
cmd_label = XmCreateLabelGadget (form3, "cmdLabel", av, ac);
XtVaSetValues (cmd_label,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_WIDGET,
NULL);
XtVaSetValues (frame, XmNbottomWidget, cmd_label, NULL);
cmd_text = XmCreateTextField (form3, "cmdText", av, ac);
XtVaSetValues (cmd_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_WIDGET,
NULL);
XtVaSetValues (cmd_label, XmNbottomWidget, cmd_text, NULL);
form4 = XmCreateForm (form3, "form4", av, ac);
XtVaSetValues (form4,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_WIDGET,
NULL);
XtVaSetValues (cmd_text, XmNbottomWidget, form4, NULL);
enabled = XmCreateToggleButtonGadget (form4, "enabled", av, ac);
XtVaSetValues (enabled,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
vis_label = XmCreateLabelGadget (form4, "visLabel", av, ac);
XtVaSetValues (vis_label,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, enabled,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
#ifdef HAVE_XMCOMBOBOX
{
Widget list;
ac = 0;
XtSetArg (av [ac], XmNcomboBoxType, XmDROP_DOWN_COMBO_BOX); ac++;
combo = XmCreateComboBox (form4, "combo", av, ac);
for (i = 0; visual_menu[i]; i++)
{
XmString xs = XmStringCreate ((char *) visual_menu[i],
XmSTRING_DEFAULT_CHARSET);
XmComboBoxAddItem (combo, xs, 0, False);
XmStringFree (xs);
}
XtVaGetValues (combo, XmNlist, &list, NULL);
XtVaSetValues (list, XmNvisibleItemCount, i, NULL);
}
#else /* !HAVE_XMCOMBOBOX */
{
Widget popup_menu = XmCreatePulldownMenu (parent, "menu", av, ac);
Widget kids[100];
for (i = 0; visual_menu[i]; i++)
{
XmString xs = XmStringCreate ((char *) visual_menu[i],
XmSTRING_DEFAULT_CHARSET);
ac = 0;
XtSetArg (av [ac], XmNlabelString, xs); ac++;
kids[i] = XmCreatePushButtonGadget (popup_menu, "button", av, ac);
/* XtAddCallback (combo, XmNactivateCallback, visual_popup_cb,
combo); */
XmStringFree (xs);
}
XtManageChildren (kids, i);
ac = 0;
XtSetArg (av [ac], XmNsubMenuId, popup_menu); ac++;
combo = XmCreateOptionMenu (form4, "combo", av, ac);
ac = 0;
}
#endif /* !HAVE_XMCOMBOBOX */
XtVaSetValues (combo,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, vis_label,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
hr = XmCreateSeparatorGadget (form3, "hr", av, ac);
XtVaSetValues (hr,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_WIDGET,
NULL);
XtVaSetValues (form4, XmNbottomWidget, hr, NULL);
buttonbox2 = XmCreateForm (form3, "buttonbox2", av, ac);
XtVaSetValues (buttonbox2,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
XtVaSetValues (hr, XmNbottomWidget, buttonbox2, NULL);
demo = XmCreatePushButtonGadget (buttonbox2, "demo", av, ac);
XtVaSetValues (demo,
XmNleftAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
man = XmCreatePushButtonGadget (buttonbox2, "man", av, ac);
XtVaSetValues (man,
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
XtManageChild (demo);
XtManageChild (man);
XtManageChild (buttonbox2);
XtManageChild (hr);
XtManageChild (combo);
XtManageChild (vis_label);
XtManageChild (enabled);
XtManageChild (form4);
XtManageChild (cmd_text);
XtManageChild (cmd_label);
XtManageChild (doc);
XtManageChild (frame_label);
XtManageChild (frame);
XtManageChild (form3);
XtManageChild (up);
XtManageChild (down);
XtManageChild (buttonbox1);
XtManageChild (list);
XtManageChild (scroller);
XtManageChild (form2);
XtManageChild (form1);
XtVaSetValues (form1,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
return form1;
}
static Widget
create_options_page (Widget parent)
{
/* This is what the layout is today:
Form (horizontal)
Label ("Saver Timeout")
Label ("Cycle Timeout")
Label ("Fade Duration")
Label ("Fade Ticks")
Label ("Lock Timeout")
Label ("Password Timeout")
Text (timeout)
Text (cycle)
Text (fade seconds)
Text (fade ticks)
Text (lock)
Text (passwd)
Toggle ("Verbose")
Toggle ("Install Colormap")
Toggle ("Fade Colormap")
Toggle ("Unfade Colormap")
Toggle ("Require Password")
HR
Button ("OK")
Button ("Cancel")
*/
/* This is what it should be:
Form (horizontal)
Form (vertical) ("column1")
Frame
Label ("Blanking and Locking")
Form
Label ("Blank After")
Label ("Cycle After")
Text ("Blank After")
Text ("Cycle After")
HR
Checkbox ("Require Password")
Label ("Lock After")
Text ("Lock After")
Frame
Label ("Image Manipulation")
Form
Checkbox ("Grab Desktop Images")
Checkbox ("Grab Video Frames")
Checkbox ("Choose Random Image")
Text (pathname)
Button ("Browse")
Frame
Label ("Diagnostics")
Form
Checkbox ("Verbose Diagnostics")
Checkbox ("Display Subprocess Errors")
Checkbox ("Display Splash Screen at Startup")
Form (vertical) ("column2")
Frame
Label ("Display Power Management")
Form
Checkbox ("Power Management Enabled")
Label ("Standby After")
Label ("Suspend After")
Label ("Off After")
Text ("Standby After")
Text ("Suspend After")
Text ("Off After")
Frame
Label ("Colormaps")
Form
Checkbox ("Install Colormap")
HR
Checkbox ("Fade To Black When Blanking")
Checkbox ("Fade From Black When Unblanking")
Label ("Fade Duration")
Text ("Fade Duration")
timeoutLabel
cycleLabel
fadeSecondsLabel
lockLabel
passwdLabel
timeoutText
cycleText
fadeSecondsText
lockText
passwdText
verboseToggle
cmapToggle
fadeToggle
unfadeToggle
lockToggle
separator
OK
Cancel
*/
Arg av[64];
int ac = 0;
Widget children[100];
Widget timeout_label, cycle_label, fade_seconds_label;
Widget lock_label, passwd_label, hr;
Widget preferences_form;
Widget timeout_text, cycle_text, fade_text;
Widget lock_timeout_text, passwd_timeout_text, verbose_toggle;
Widget install_cmap_toggle, fade_toggle, unfade_toggle;
Widget lock_toggle, prefs_done, prefs_cancel;
ac = 0;
XtSetArg (av [ac], XmNdialogType, XmDIALOG_PROMPT); ac++;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
preferences_form = XmCreateForm (parent, "preferencesForm", av, ac);
XtManageChild (preferences_form);
ac = 0;
XtSetArg(av[ac], XmNalignment, XmALIGNMENT_END); ac++;
timeout_label = XmCreateLabelGadget (preferences_form, "timeoutLabel",
av, ac);
ac = 0;
XtSetArg(av[ac], XmNalignment, XmALIGNMENT_END); ac++;
cycle_label = XmCreateLabelGadget (preferences_form, "cycleLabel",
av, ac);
ac = 0;
XtSetArg(av[ac], XmNalignment, XmALIGNMENT_END); ac++;
fade_seconds_label = XmCreateLabelGadget (preferences_form,
"fadeSecondsLabel", av, ac);
ac = 0;
XtSetArg(av[ac], XmNalignment, XmALIGNMENT_END); ac++;
lock_label = XmCreateLabelGadget (preferences_form, "lockLabel", av, ac);
ac = 0;
XtSetArg(av[ac], XmNalignment, XmALIGNMENT_END); ac++;
passwd_label = XmCreateLabelGadget (preferences_form, "passwdLabel", av, ac);
ac = 0;
timeout_text = XmCreateTextField (preferences_form, "timeoutText", av, ac);
cycle_text = XmCreateTextField (preferences_form, "cycleText", av, ac);
fade_text = XmCreateTextField (preferences_form, "fadeSecondsText", av, ac);
lock_timeout_text = XmCreateTextField (preferences_form, "lockText",
av, ac);
passwd_timeout_text = XmCreateTextField (preferences_form, "passwdText",
av, ac);
XtSetArg(av[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
verbose_toggle = XmCreateToggleButtonGadget (preferences_form,
"verboseToggle", av, ac);
ac = 0;
XtSetArg(av[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
install_cmap_toggle = XmCreateToggleButtonGadget (preferences_form,
"cmapToggle", av, ac);
ac = 0;
XtSetArg(av[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
fade_toggle = XmCreateToggleButtonGadget (preferences_form, "fadeToggle",
av, ac);
ac = 0;
XtSetArg(av[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
unfade_toggle = XmCreateToggleButtonGadget (preferences_form, "unfadeToggle",
av,ac);
ac = 0;
XtSetArg(av[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
lock_toggle = XmCreateToggleButtonGadget (preferences_form, "lockToggle",
av, ac);
ac = 0;
hr = XmCreateSeparatorGadget (preferences_form, "separator", av, ac);
prefs_done = XmCreatePushButtonGadget (preferences_form, "OK", av, ac);
prefs_cancel = XmCreatePushButtonGadget (preferences_form, "Cancel", av, ac);
XtVaSetValues (timeout_label,
XmNtopAttachment, XmATTACH_FORM,
XmNtopOffset, 4,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, timeout_text,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 20,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightOffset, 4,
XmNrightWidget, timeout_text,
NULL);
XtVaSetValues (cycle_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 0,
XmNtopWidget, cycle_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomOffset, 0,
XmNbottomWidget, cycle_text,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 20,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightOffset, 4,
XmNrightWidget, cycle_text,
NULL);
XtVaSetValues (fade_seconds_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 0,
XmNtopWidget, fade_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomOffset, 0,
XmNbottomWidget, fade_text,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 20,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightOffset, 4,
XmNrightWidget, fade_text,
NULL);
XtVaSetValues (lock_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 0,
XmNtopWidget, lock_timeout_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomOffset, 0,
XmNbottomWidget, lock_timeout_text,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 19,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightOffset, 4,
XmNrightWidget, lock_timeout_text,
NULL);
XtVaSetValues (passwd_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 0,
XmNtopWidget, passwd_timeout_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomOffset, 0,
XmNbottomWidget, passwd_timeout_text,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 14,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightOffset, 4,
XmNrightWidget, passwd_timeout_text,
NULL);
XtVaSetValues (timeout_text,
XmNtopAttachment, XmATTACH_FORM,
XmNtopOffset, 4,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 141,
NULL);
XtVaSetValues (cycle_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopOffset, 2,
XmNtopWidget, timeout_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftOffset, 0,
XmNleftWidget, timeout_text,
NULL);
XtVaSetValues (fade_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopOffset, 2,
XmNtopWidget, cycle_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftOffset, 0,
XmNleftWidget, cycle_text,
NULL);
XtVaSetValues (lock_timeout_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopOffset, 2,
XmNtopWidget, fade_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftOffset, 0,
XmNleftWidget, fade_text,
NULL);
XtVaSetValues (passwd_timeout_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopOffset, 4,
XmNtopWidget, lock_timeout_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftOffset, 0,
XmNleftWidget, lock_timeout_text,
NULL);
XtVaSetValues (verbose_toggle,
XmNtopAttachment, XmATTACH_FORM,
XmNtopOffset, 4,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomOffset, 0,
XmNbottomWidget, timeout_text,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftOffset, 20,
XmNleftWidget, timeout_text,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, 20,
NULL);
XtVaSetValues (install_cmap_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 0,
XmNtopWidget, cycle_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomOffset, 0,
XmNbottomWidget, cycle_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftOffset, 0,
XmNleftWidget, verbose_toggle,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, 20,
NULL);
XtVaSetValues (fade_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 0,
XmNtopWidget, fade_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomOffset, 0,
XmNbottomWidget, fade_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftOffset, 0,
XmNleftWidget, install_cmap_toggle,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, 20,
NULL);
XtVaSetValues (unfade_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 0,
XmNtopWidget, lock_timeout_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomOffset, 0,
XmNbottomWidget, lock_timeout_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftOffset, 0,
XmNleftWidget, fade_toggle,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, 20,
NULL);
XtVaSetValues (lock_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopOffset, 0,
XmNtopWidget, passwd_timeout_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomOffset, 0,
XmNbottomWidget, passwd_timeout_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftOffset, 0,
XmNleftWidget, unfade_toggle,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, 20,
NULL);
XtVaSetValues (hr,
XmNtopWidget, passwd_timeout_text,
XmNbottomAttachment, XmATTACH_FORM,
XmNbottomOffset, 4,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
XtVaSetValues (prefs_done,
XmNleftAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
XtVaSetValues (prefs_cancel,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
XtVaSetValues (hr,
XmNbottomAttachment, XmATTACH_WIDGET,
XmNbottomWidget, prefs_done,
NULL);
ac = 0;
children[ac++] = timeout_label;
children[ac++] = cycle_label;
children[ac++] = fade_seconds_label;
children[ac++] = lock_label;
children[ac++] = passwd_label;
children[ac++] = timeout_text;
children[ac++] = cycle_text;
children[ac++] = fade_text;
children[ac++] = lock_timeout_text;
children[ac++] = passwd_timeout_text;
children[ac++] = verbose_toggle;
children[ac++] = install_cmap_toggle;
children[ac++] = fade_toggle;
children[ac++] = unfade_toggle;
children[ac++] = lock_toggle;
children[ac++] = hr;
XtManageChildren(children, ac);
ac = 0;
XtManageChild (prefs_done);
XtManageChild (prefs_cancel);
XtManageChild (preferences_form);
XtVaSetValues (preferences_form,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
return preferences_form;
}