1 XCOMM! CDE_INSTALLATION_TOP/bin/dtksh
2 XCOMM $XConsortium: crMovesText1.src /main/3 1996/04/23 20:19:33 drk $
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
10 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.
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
28 XtAddCallback $1 focusCallback "ClearDftButton"
29 XtAddCallback $1 losingFocusCallback "SetDftButton $OK"
31 XtOverrideTranslations $1 \
32 "Ctrl<Key>Return:ksh_eval(\"XmProcessTraversal $2 TRAVERSE_CURRENT\")
33 <Key>Return:ksh_eval(\"XmProcessTraversal $2 TRAVERSE_CURRENT\")"
36 XCOMM FocusOut Callback: reenables the default button
39 XtSetValues $FORM defaultButton:$OK
42 XCOMM FocusIn Callback: disables the default button
45 XtSetValues $FORM defaultButton:NULL
48 XCOMM If the 'Ok' button is activated, but the 'Name' field is empty, then
49 XCOMM this function will display an error dialog.
52 XmCreateErrorDialog ERROR_DIALOG $TOPLEVEL noName \
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
59 XtSetValues $(XtParent "-" $ERROR_DIALOG) title:foo
61 XtManageChildren $ERROR_DIALOG
64 XCOMM Pushbutton Callback: attached to the 'Cancel' pushbutton
70 XCOMM Pushbutton Callback: attached to the default pushbutton. It extracts the
71 XCOMM fields within the dialog, and does some validation.
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
81 XmTextGetString NAME_VALUE $NAME
83 if [ "$NAME_VALUE" = "" ]
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
97 XCOMM ###################### Create the Main UI ###############################
99 XtInitialize TOPLEVEL createAction CreateAction "$0" "$@"
100 XtCreateManagedWidget FORM form XmForm $TOPLEVEL
102 XtCreateManagedWidget NAMELABEL nameLabel XmLabel $FORM \
103 topAttachment:ATTACH_FORM \
105 leftAttachment:ATTACH_FORM \
109 XtCreateManagedWidget NAME name XmText $FORM \
110 topAttachment:ATTACH_OPPOSITE_WIDGET \
111 topWidget:$NAMELABEL \
113 leftAttachment:ATTACH_WIDGET \
114 leftWidget:$NAMELABEL \
116 rightAttachment:ATTACH_FORM \
118 navigationType:EXCLUSIVE_TAB_GROUP
120 XtCreateManagedWidget COMMANDLINELABEL commandLineLabel XmLabel $FORM \
121 topAttachment:ATTACH_WIDGET \
122 topWidget:$NAMELABEL \
124 leftAttachment:ATTACH_FORM \
126 labelString:"Command Line:"
128 XtCreateManagedWidget COMMANDLINE commandLine XmText $FORM \
129 topAttachment:ATTACH_WIDGET \
130 topWidget:$COMMANDLINELABEL \
132 leftAttachment:ATTACH_FORM \
134 rightAttachment:ATTACH_FORM \
136 navigationType:EXCLUSIVE_TAB_GROUP
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]"
148 XmCreateOptionMenu COMMANDTYPE $FORM commandType \
149 topAttachment:ATTACH_WIDGET \
150 topWidget:$COMMANDLINE \
152 leftAttachment:ATTACH_FORM \
154 rightAttachment:ATTACH_FORM \
156 labelString:"Window Type:" \
159 navigationType:EXCLUSIVE_TAB_GROUP
160 XtSetValues $COMMANDTYPE spacing:35
161 XtManageChildren $COMMANDTYPE
163 XtCreateManagedWidget OPTLABEL optLabel XmLabel $FORM \
164 topAttachment:ATTACH_WIDGET \
165 topWidget:$COMMANDTYPE \
167 leftAttachment:ATTACH_FORM \
169 labelString:"Optional Fields"
171 XtCreateManagedWidget SEP1 sep1 XmSeparator $FORM \
172 topAttachment:ATTACH_OPPOSITE_WIDGET \
173 topWidget:$OPTLABEL \
175 rightAttachment:ATTACH_WIDGET \
176 rightWidget:$OPTLABEL \
178 leftAttachment:ATTACH_FORM \
179 orientation:HORIZONTAL \
180 separatorType:SHADOW_ETCHED_OUT
182 XtCreateManagedWidget SEP2 sep2 XmSeparator $FORM \
183 topAttachment:ATTACH_OPPOSITE_WIDGET \
184 topWidget:$OPTLABEL \
186 leftAttachment:ATTACH_WIDGET \
187 leftWidget:$OPTLABEL \
189 rightAttachment:ATTACH_FORM \
190 orientation:HORIZONTAL \
191 separatorType:SHADOW_ETCHED_OUT
193 XtCreateManagedWidget PROMPTLABEL promptLabel XmLabel $FORM \
194 topAttachment:ATTACH_WIDGET \
195 topWidget:$OPTLABEL \
197 leftAttachment:ATTACH_FORM \
199 labelString:"Filename Prompt:"
201 XtCreateManagedWidget PROMPT prompt XmText $FORM \
202 topAttachment:ATTACH_WIDGET \
203 topWidget:$PROMPTLABEL \
205 leftAttachment:ATTACH_FORM \
207 rightAttachment:ATTACH_FORM \
209 navigationType:EXCLUSIVE_TAB_GROUP
211 XtCreateManagedWidget LARGEICONLABEL largeIconLabel XmLabel $FORM \
212 topAttachment:ATTACH_WIDGET \
215 leftAttachment:ATTACH_FORM \
217 labelString:"Large Icon:"
219 XtCreateManagedWidget LARGEICON largeIcon XmText $FORM \
220 topAttachment:ATTACH_OPPOSITE_WIDGET \
221 topWidget:$LARGEICONLABEL \
223 leftAttachment:ATTACH_WIDGET \
224 leftWidget:$LARGEICONLABEL \
226 rightAttachment:ATTACH_FORM \
228 navigationType:EXCLUSIVE_TAB_GROUP
230 XtCreateManagedWidget SMALLICONLABEL smallIconLabel XmLabel $FORM \
231 topAttachment:ATTACH_WIDGET \
232 topWidget:$LARGEICONLABEL \
234 leftAttachment:ATTACH_FORM \
236 labelString:"Small Icon:"
238 XtCreateManagedWidget SMALLICON smallIcon XmText $FORM \
239 topAttachment:ATTACH_OPPOSITE_WIDGET \
240 topWidget:$SMALLICONLABEL \
242 leftAttachment:ATTACH_OPPOSITE_WIDGET \
243 leftWidget:$LARGEICON \
244 rightAttachment:ATTACH_FORM \
246 navigationType:EXCLUSIVE_TAB_GROUP
248 XtCreateManagedWidget DESCRIPTIONLABEL descriptionLabel XmLabel $FORM \
249 topAttachment:ATTACH_WIDGET \
250 topWidget:$SMALLICONLABEL \
252 leftAttachment:ATTACH_FORM \
254 labelString:"Description:"
256 XmCreateScrolledText DESCRIPTION $FORM description \
257 topAttachment:ATTACH_WIDGET \
258 topWidget:$DESCRIPTIONLABEL \
260 leftAttachment:ATTACH_FORM \
262 rightAttachment:ATTACH_FORM \
264 editMode:MULTI_LINE_EDIT \
266 navigationType:EXCLUSIVE_TAB_GROUP
267 XtManageChildren $DESCRIPTION
269 XtCreateManagedWidget SEP sep XmSeparator $FORM \
270 topAttachment:ATTACH_WIDGET \
271 topWidget:$DESCRIPTION \
273 rightAttachment:ATTACH_FORM \
274 leftAttachment:ATTACH_FORM
276 XtCreateManagedWidget OK ok XmPushButton $FORM \
278 leftAttachment:ATTACH_POSITION \
280 rightAttachment:ATTACH_POSITION \
282 topAttachment:ATTACH_WIDGET \
286 bottomAttachment:ATTACH_FORM
287 XtAddCallback $OK activateCallback CheckActionValues
289 XtCreateManagedWidget CLOSE close XmPushButton $FORM \
291 leftAttachment:ATTACH_POSITION \
293 rightAttachment:ATTACH_POSITION \
295 topAttachment:ATTACH_WIDGET \
299 bottomAttachment:ATTACH_FORM
300 XtAddCallback $CLOSE activateCallback QuitCB
302 XtCreateManagedWidget HELP help XmPushButton $FORM \
304 leftAttachment:ATTACH_POSITION \
306 rightAttachment:ATTACH_POSITION \
308 topAttachment:ATTACH_WIDGET \
312 bottomAttachment:ATTACH_FORM
316 cancelButton:$CLOSE \
317 navigationType:EXCLUSIVE_TAB_GROUP \
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
326 XtRealizeWidget $TOPLEVEL