convert all Imakefile LinuxDistribution to LinuxArchitecture.
[oweals/cde.git] / cde / programs / dtksh / examples / crMovesText1.src
1 XCOMM! CDE_INSTALLATION_TOP/bin/dtksh
2 XCOMM  $XConsortium: crMovesText1.src /main/3 1996/04/23 20:19:33 drk $
3
4 XCOMM #########################################################################
5 XCOMM   (c) Copyright 1993, 1994 Hewlett-Packard Company        
6 XCOMM   (c) Copyright 1993, 1994 International Business Machines Corp.
7 XCOMM   (c) Copyright 1993, 1994 Sun Microsystems, Inc.
8 XCOMM   (c) Copyright 1993, 1994 Unix System Labs, Inc., a subsidiary of
9 XCOMM       Novell, Inc.
10 XCOMM #########################################################################
11
12
13 XCOMM 
14 XCOMM  This advanced shell script demonstrates the code necessary for forcing
15 XCOMM  the Return key to move the focus to the next text field in a dialog,
16 XCOMM  instead of causing the default pushbutton to be activated.  When the
17 XCOMM  focus has moved to the last text field, then the Return key will activate
18 XCOMM  the default pushbutton.
19 XCOMM 
20
21 XCOMM  This function modifies the text field indicated by $1, so that when
22 XCOMM  the text field receives the focus, it clears the default button; when
23 XCOMM  it loses the focus, it will reenable the default button.  It also adds
24 XCOMM  some translations for catching the Return key, so that it can force
25 XCOMM  the focus to the next text widget, which is indicated by $2
26 SetCrControls()
27 {
28    XtAddCallback $1 focusCallback "ClearDftButton"
29    XtAddCallback $1 losingFocusCallback "SetDftButton $OK"
30
31    XtOverrideTranslations $1 \
32         "Ctrl<Key>Return:ksh_eval(\"XmProcessTraversal $2 TRAVERSE_CURRENT\") 
33         <Key>Return:ksh_eval(\"XmProcessTraversal $2 TRAVERSE_CURRENT\")"
34 }
35
36 XCOMM  FocusOut Callback: reenables the default button
37 SetDftButton()
38 {
39    XtSetValues $FORM defaultButton:$OK
40 }
41
42 XCOMM  FocusIn Callback: disables the default button
43 ClearDftButton()
44 {
45    XtSetValues $FORM defaultButton:NULL
46 }
47
48 XCOMM  If the 'Ok' button is activated, but the 'Name' field is empty, then
49 XCOMM  this function will display an error dialog.
50 EmptyNameError()
51 {
52    XmCreateErrorDialog ERROR_DIALOG $TOPLEVEL noName \
53             okLabelString:Ok \
54             messageString:"You must supply a name...."
55    XmMessageBoxGetChild CANCEL_BTN $ERROR_DIALOG DIALOG_CANCEL_BUTTON
56    XmMessageBoxGetChild HELP_BTN $ERROR_DIALOG DIALOG_HELP_BUTTON
57    XtUnmanageChildren $CANCEL_BTN $HELP_BTN
58
59    XtSetValues $(XtParent "-" $ERROR_DIALOG) title:foo
60
61    XtManageChildren $ERROR_DIALOG
62 }
63
64 XCOMM  Pushbutton Callback: attached to the 'Cancel' pushbutton
65 QuitCB()
66 {
67    exit 0
68 }
69
70 XCOMM  Pushbutton Callback: attached to the default pushbutton.  It extracts the
71 XCOMM                       fields within the dialog, and does some validation.
72 CheckActionValues()
73 {
74    XtGetValues $LARGEICON value:LARGEICON_VALUE
75    XtGetValues $SMALLICON value:SMALLICON_VALUE
76    XtGetValues $DESCRIPTION value:DESCRIPTION_VALUE
77    XtGetValues $COMMANDLINE value:COMMANDLINE_VALUE
78    XtGetValues $PROMPT value:PROMPT_VALUE
79    XtGetValues $COMMANDTYPE menuHistory:COMMANDTYPE_WIDGET
80
81    XmTextGetString NAME_VALUE $NAME
82
83    if [ "$NAME_VALUE" = "" ] 
84    then
85       EmptyNameError
86    else
87       echo "Name: "$NAME_VALUE
88       echo "Large Icon: "$LARGEICON_VALUE
89       echo "Small Icon: "$SMALLICON_VALUE
90       echo "Description: "$DESCRIPTION_VALUE
91       echo "Command Line: "$COMMANDLINE_VALUE
92       echo "Prompt: "$PROMPT_VALUE
93       echo "Command Type: "$COMMANDTYPE_WIDGET
94    fi
95 }
96
97 XCOMM ###################### Create the Main UI ###############################
98
99 XtInitialize TOPLEVEL createAction CreateAction "$0" "$@"
100 XtCreateManagedWidget FORM form XmForm $TOPLEVEL 
101
102 XtCreateManagedWidget NAMELABEL nameLabel XmLabel $FORM \
103          topAttachment:ATTACH_FORM \
104          topOffset:20 \
105          leftAttachment:ATTACH_FORM \
106          leftOffset:20 \
107          labelString:"Name:"
108
109 XtCreateManagedWidget NAME name XmText $FORM \
110          topAttachment:ATTACH_OPPOSITE_WIDGET \
111          topWidget:$NAMELABEL \
112          topOffset:-7 \
113          leftAttachment:ATTACH_WIDGET \
114          leftWidget:$NAMELABEL \
115          leftOffset:10 \
116          rightAttachment:ATTACH_FORM \
117          rightOffset:10 \
118          navigationType:EXCLUSIVE_TAB_GROUP
119
120 XtCreateManagedWidget COMMANDLINELABEL commandLineLabel XmLabel $FORM \
121          topAttachment:ATTACH_WIDGET \
122          topWidget:$NAMELABEL \
123          topOffset:20 \
124          leftAttachment:ATTACH_FORM \
125          leftOffset:20 \
126          labelString:"Command Line:"
127
128 XtCreateManagedWidget COMMANDLINE commandLine XmText $FORM \
129          topAttachment:ATTACH_WIDGET \
130          topWidget:$COMMANDLINELABEL \
131          topOffset:5 \
132          leftAttachment:ATTACH_FORM \
133          leftOffset:40 \
134          rightAttachment:ATTACH_FORM \
135          rightOffset:10 \
136          navigationType:EXCLUSIVE_TAB_GROUP
137
138 XmCreatePulldownMenu PANE $FORM pane 
139 XtCreateManagedWidget XWIN xwin XmPushButton $PANE \
140          labelString:"X Windows"
141 XtCreateManagedWidget NOOUT noOut XmPushButton $PANE \
142          labelString:"No Output"
143 XtCreateManagedWidget TERM term XmPushButton $PANE \
144          labelString:"Terminal"
145 XtCreateManagedWidget TERMCLOSE termClose XmPushButton $PANE \
146          labelString:"Terminal [auto-close]"
147
148 XmCreateOptionMenu COMMANDTYPE $FORM commandType \
149          topAttachment:ATTACH_WIDGET \
150          topWidget:$COMMANDLINE \
151          topOffset:20 \
152          leftAttachment:ATTACH_FORM \
153          leftOffset:20 \
154          rightAttachment:ATTACH_FORM \
155          rightOffset:10 \
156          labelString:"Window Type:" \
157          menuHistory:$TERM \
158          subMenuId:$PANE \
159          navigationType:EXCLUSIVE_TAB_GROUP
160 XtSetValues $COMMANDTYPE spacing:35
161 XtManageChildren $COMMANDTYPE
162
163 XtCreateManagedWidget OPTLABEL optLabel XmLabel $FORM \
164          topAttachment:ATTACH_WIDGET \
165          topWidget:$COMMANDTYPE \
166          topOffset:30 \
167          leftAttachment:ATTACH_FORM \
168          leftOffset:100 \
169          labelString:"Optional Fields"
170
171 XtCreateManagedWidget SEP1 sep1 XmSeparator $FORM \
172          topAttachment:ATTACH_OPPOSITE_WIDGET \
173          topWidget:$OPTLABEL \
174          topOffset:10 \
175          rightAttachment:ATTACH_WIDGET \
176          rightWidget:$OPTLABEL \
177          rightOffset:5 \
178          leftAttachment:ATTACH_FORM \
179          orientation:HORIZONTAL \
180          separatorType:SHADOW_ETCHED_OUT
181
182 XtCreateManagedWidget SEP2 sep2 XmSeparator $FORM \
183          topAttachment:ATTACH_OPPOSITE_WIDGET \
184          topWidget:$OPTLABEL \
185          topOffset:10 \
186          leftAttachment:ATTACH_WIDGET \
187          leftWidget:$OPTLABEL \
188          leftOffset:5 \
189          rightAttachment:ATTACH_FORM \
190          orientation:HORIZONTAL \
191          separatorType:SHADOW_ETCHED_OUT
192
193 XtCreateManagedWidget PROMPTLABEL promptLabel XmLabel $FORM \
194          topAttachment:ATTACH_WIDGET \
195          topWidget:$OPTLABEL \
196          topOffset:20 \
197          leftAttachment:ATTACH_FORM \
198          leftOffset:20 \
199          labelString:"Filename Prompt:"
200
201 XtCreateManagedWidget PROMPT prompt XmText $FORM \
202          topAttachment:ATTACH_WIDGET \
203          topWidget:$PROMPTLABEL \
204          topOffset:5 \
205          leftAttachment:ATTACH_FORM \
206          leftOffset:40 \
207          rightAttachment:ATTACH_FORM \
208          rightOffset:10 \
209          navigationType:EXCLUSIVE_TAB_GROUP
210
211 XtCreateManagedWidget LARGEICONLABEL largeIconLabel XmLabel $FORM \
212          topAttachment:ATTACH_WIDGET \
213          topWidget:$PROMPT \
214          topOffset:30 \
215          leftAttachment:ATTACH_FORM \
216          leftOffset:20 \
217          labelString:"Large Icon:"
218
219 XtCreateManagedWidget LARGEICON largeIcon XmText $FORM \
220          topAttachment:ATTACH_OPPOSITE_WIDGET \
221          topWidget:$LARGEICONLABEL \
222          topOffset:-7 \
223          leftAttachment:ATTACH_WIDGET \
224          leftWidget:$LARGEICONLABEL \
225          leftOffset:20 \
226          rightAttachment:ATTACH_FORM \
227          rightOffset:10 \
228          navigationType:EXCLUSIVE_TAB_GROUP
229
230 XtCreateManagedWidget SMALLICONLABEL smallIconLabel XmLabel $FORM \
231          topAttachment:ATTACH_WIDGET \
232          topWidget:$LARGEICONLABEL \
233          topOffset:20 \
234          leftAttachment:ATTACH_FORM \
235          leftOffset:20 \
236          labelString:"Small Icon:"
237
238 XtCreateManagedWidget SMALLICON smallIcon XmText $FORM \
239          topAttachment:ATTACH_OPPOSITE_WIDGET \
240          topWidget:$SMALLICONLABEL \
241          topOffset:-7 \
242          leftAttachment:ATTACH_OPPOSITE_WIDGET \
243          leftWidget:$LARGEICON \
244          rightAttachment:ATTACH_FORM \
245          rightOffset:10 \
246          navigationType:EXCLUSIVE_TAB_GROUP
247
248 XtCreateManagedWidget DESCRIPTIONLABEL descriptionLabel XmLabel $FORM \
249          topAttachment:ATTACH_WIDGET \
250          topWidget:$SMALLICONLABEL \
251          topOffset:20 \
252          leftAttachment:ATTACH_FORM \
253          leftOffset:20 \
254          labelString:"Description:"
255
256 XmCreateScrolledText DESCRIPTION $FORM description \
257           topAttachment:ATTACH_WIDGET \
258           topWidget:$DESCRIPTIONLABEL \
259           topOffset:5 \
260           leftAttachment:ATTACH_FORM \
261           leftOffset:40 \
262           rightAttachment:ATTACH_FORM \
263           rightOffset:10 \
264           editMode:MULTI_LINE_EDIT \
265           rows:4 \
266           navigationType:EXCLUSIVE_TAB_GROUP
267 XtManageChildren $DESCRIPTION
268
269 XtCreateManagedWidget SEP sep XmSeparator $FORM \
270          topAttachment:ATTACH_WIDGET \
271          topWidget:$DESCRIPTION \
272          topOffset:20 \
273          rightAttachment:ATTACH_FORM \
274          leftAttachment:ATTACH_FORM
275
276 XtCreateManagedWidget OK ok XmPushButton $FORM \
277          labelString:Apply \
278          leftAttachment:ATTACH_POSITION \
279          leftPosition:10 \
280          rightAttachment:ATTACH_POSITION \
281          rightPosition:30 \
282          topAttachment:ATTACH_WIDGET \
283          topWidget:$SEP \
284          topOffset:20 \
285          bottomOffset:10 \
286          bottomAttachment:ATTACH_FORM
287 XtAddCallback $OK activateCallback CheckActionValues
288
289 XtCreateManagedWidget CLOSE close XmPushButton $FORM \
290          labelString:Close \
291          leftAttachment:ATTACH_POSITION \
292          leftPosition:40 \
293          rightAttachment:ATTACH_POSITION \
294          rightPosition:60 \
295          topAttachment:ATTACH_WIDGET \
296          topWidget:$SEP \
297          topOffset:20 \
298          bottomOffset:10 \
299          bottomAttachment:ATTACH_FORM
300 XtAddCallback $CLOSE activateCallback QuitCB
301
302 XtCreateManagedWidget HELP help XmPushButton $FORM \
303          labelString:Help \
304          leftAttachment:ATTACH_POSITION \
305          leftPosition:70 \
306          rightAttachment:ATTACH_POSITION \
307          rightPosition:90 \
308          topAttachment:ATTACH_WIDGET \
309          topWidget:$SEP \
310          topOffset:20 \
311          bottomOffset:10 \
312          bottomAttachment:ATTACH_FORM
313
314 XtSetValues $FORM \
315         defaultButton:$OK \
316         cancelButton:$CLOSE \
317         navigationType:EXCLUSIVE_TAB_GROUP \
318         initialFocus:$NAME 
319
320 XCOMM  Set up proper behavior for the Return key
321 SetCrControls $NAME         $COMMANDLINE 
322 SetCrControls $COMMANDLINE  $PROMPT 
323 SetCrControls $PROMPT       $LARGEICON 
324 SetCrControls $LARGEICON    $SMALLICON 
325
326 XtRealizeWidget $TOPLEVEL
327 XtMainLoop