1 /***********************************************************************/
2 /* Open Visualization Data Explorer */
3 /* (C) Copyright IBM Corp. 1989,1999 */
4 /* ALL RIGHTS RESERVED */
5 /* This code licensed under the */
6 /* "IBM PUBLIC LICENSE - Open Visualization Data Explorer" */
7 /***********************************************************************/
8
9 #include <dxconfig.h>
10 #include "../base/defines.h"
11
12
13 #include <X11/StringDefs.h>
14
15 #include <limits.h>
16 #include <Xm/Xm.h>
17 #include <Xm/DialogS.h>
18 #include <Xm/Form.h>
19 #include <Xm/PushB.h>
20 #include <Xm/ToggleB.h>
21 #include <Xm/Text.h>
22 #include <Xm/Label.h>
23 #include <Xm/Separator.h>
24 #include <Xm/BulletinB.h>
25
26 #include "DXStrings.h"
27 #include "OptionsDialog.h"
28 #include "MBMainWindow.h"
29
30 boolean OptionsDialog::ClassInitialized = FALSE;
31
32 String OptionsDialog::DefaultResources[] = {
33 "*dialogTitle: Options",
34 "*mainForm*okPB.labelString: OK",
35 "*mainForm*cancelPB.labelString: Cancel",
36 "*topOffset: 15",
37 "*bottomOffset: 15",
38 "*leftOffset: 10",
39 "*rightOffset: 10",
40 "*pinToggle.labelString: PIN - Always run module on the same"
41 " processor (if MP)",
42 "*sideEffectToggle.labelString: SIDE_EFFECT - Run module on every"
43 " execution",
44 NULL
45 };
46
47
createDialog(Widget parent)48 Widget OptionsDialog::createDialog(Widget parent)
49 {
50 int n;
51 Widget shell, sep;
52 boolean set;
53 XmString xms;
54
55 shell = XmCreateDialogShell(parent, this->name, NULL, 0);
56 XtVaSetValues(shell,
57 XmNtitle, "Options...",
58 XmNallowShellResize, True,
59 XmNwidth, 425,
60 NULL);
61
62 this->mainform =
63 XtVaCreateWidget("mainForm",
64 xmFormWidgetClass, shell,
65 XmNdialogStyle, XmDIALOG_APPLICATION_MODAL,
66 XmNautoUnmanage, FALSE,
67 XmNwidth, 425,
68 NULL);
69
70 this->pin_tb =
71 XtVaCreateManagedWidget("pinToggle",
72 xmToggleButtonWidgetClass, this->mainform,
73 XmNleftAttachment, XmATTACH_FORM,
74 XmNtopAttachment, XmATTACH_FORM,
75 NULL);
76
77 this->side_effect_tb=
78 XtVaCreateManagedWidget("sideEffectToggle",
79 xmToggleButtonWidgetClass, this->mainform,
80 XmNleftAttachment, XmATTACH_FORM,
81 XmNtopAttachment, XmATTACH_WIDGET,
82 XmNtopWidget, this->pin_tb,
83 NULL);
84
85
86 sep =
87 XtVaCreateManagedWidget("sep",
88 xmSeparatorWidgetClass, this->mainform,
89 XmNleftAttachment, XmATTACH_FORM,
90 XmNleftOffset, 3,
91 XmNrightAttachment, XmATTACH_FORM,
92 XmNrightOffset, 3,
93 XmNtopAttachment, XmATTACH_WIDGET,
94 XmNtopWidget, this->side_effect_tb,
95 NULL);
96
97 this->ok=
98 XtVaCreateManagedWidget("okPB",
99 xmPushButtonWidgetClass, this->mainform,
100 XmNleftAttachment, XmATTACH_POSITION,
101 XmNleftPosition, 5,
102 XmNrightAttachment, XmATTACH_POSITION,
103 XmNrightPosition, 25,
104 XmNbottomAttachment, XmATTACH_FORM,
105 XmNtopAttachment, XmATTACH_WIDGET,
106 XmNtopWidget, sep,
107 NULL);
108
109 this->cancel=
110 XtVaCreateManagedWidget("cancelPB",
111 xmPushButtonWidgetClass, this->mainform,
112 XmNleftAttachment, XmATTACH_POSITION,
113 XmNleftPosition, 75,
114 XmNrightAttachment, XmATTACH_POSITION,
115 XmNrightPosition, 95,
116 XmNbottomAttachment, XmATTACH_FORM,
117 XmNtopAttachment, XmATTACH_WIDGET,
118 XmNtopWidget, sep,
119 NULL);
120
121 XtManageChild(this->mainform);
122 return this->mainform;
123 }
124
OptionsDialog(Widget parent,MBMainWindow * mbmw)125 OptionsDialog::OptionsDialog(Widget parent, MBMainWindow *mbmw)
126 : Dialog("optionsD", parent)
127 {
128 Widget shell;
129
130 //
131 // Install the default resources for THIS class (not the derived classes)
132 //
133 if (NOT OptionsDialog::ClassInitialized)
134 {
135 OptionsDialog::ClassInitialized = TRUE;
136 this->installDefaultResources(parent);
137 }
138
139 this->mbmw = mbmw;
140 this->pin = FALSE;
141 this->side_effect = FALSE;
142 }
143
~OptionsDialog()144 OptionsDialog::~OptionsDialog()
145 {
146 if(this->host)
147 delete this->host;
148
149 }
150
151 //
152 // Install the default resources for this class.
153 //
installDefaultResources(Widget baseWidget)154 void OptionsDialog::installDefaultResources(Widget baseWidget)
155 {
156 this->setDefaultResources(baseWidget, OptionsDialog::DefaultResources);
157 this->Dialog::installDefaultResources(baseWidget);
158 }
159
post()160 void OptionsDialog::post()
161 {
162 boolean set;
163
164 this->Dialog::post();
165 XmToggleButtonSetState(this->pin_tb, this->pin, False);
166 XmToggleButtonSetState(this->side_effect_tb, this->side_effect, False);
167 }
168
okCallback(Dialog * d)169 boolean OptionsDialog::okCallback(Dialog *d)
170 {
171 OptionsDialog *optionsDialog = (OptionsDialog*)d;
172
173 optionsDialog->pin =
174 XmToggleButtonGetState(optionsDialog->pin_tb);
175 optionsDialog->side_effect =
176 XmToggleButtonGetState(optionsDialog->side_effect_tb);
177 return True;
178 }
179
cancelCallback(Dialog * d)180 void OptionsDialog::cancelCallback(Dialog *d)
181 {
182 OptionsDialog *optionsDialog = (OptionsDialog*)d;
183
184 XmToggleButtonSetState(optionsDialog->pin_tb,
185 optionsDialog->pin, False);
186 XmToggleButtonSetState(optionsDialog->side_effect_tb,
187 optionsDialog->side_effect, False);
188
189 }
getValues(boolean & pin,boolean & side_effect)190 void OptionsDialog::getValues(boolean &pin,
191 boolean &side_effect)
192 {
193 pin = this->pin;
194 side_effect = this->side_effect;
195
196 }
setPin(boolean pin)197 void OptionsDialog::setPin(boolean pin)
198 {
199 this->pin = pin;
200 }
setSideEffect(boolean side_effect)201 void OptionsDialog::setSideEffect(boolean side_effect)
202 {
203 this->side_effect = side_effect;
204 }
205
206