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