cdesktopenv/cde/programs/dtksh/examples/crMovesText1.src

328 lines
11 KiB
Plaintext

XCOMM! CDE_INSTALLATION_TOP/bin/dtksh
XCOMM $XConsortium: crMovesText1.src /main/3 1996/04/23 20:19:33 drk $
XCOMM #########################################################################
XCOMM (c) Copyright 1993, 1994 Hewlett-Packard Company
XCOMM (c) Copyright 1993, 1994 International Business Machines Corp.
XCOMM (c) Copyright 1993, 1994 Sun Microsystems, Inc.
XCOMM (c) Copyright 1993, 1994 Unix System Labs, Inc., a subsidiary of
XCOMM Novell, Inc.
XCOMM #########################################################################
XCOMM
XCOMM This advanced shell script demonstrates the code necessary for forcing
XCOMM the Return key to move the focus to the next text field in a dialog,
XCOMM instead of causing the default pushbutton to be activated. When the
XCOMM focus has moved to the last text field, then the Return key will activate
XCOMM the default pushbutton.
XCOMM
XCOMM This function modifies the text field indicated by $1, so that when
XCOMM the text field receives the focus, it clears the default button; when
XCOMM it loses the focus, it will reenable the default button. It also adds
XCOMM some translations for catching the Return key, so that it can force
XCOMM the focus to the next text widget, which is indicated by $2
SetCrControls()
{
XtAddCallback $1 focusCallback "ClearDftButton"
XtAddCallback $1 losingFocusCallback "SetDftButton $OK"
XtOverrideTranslations $1 \
"Ctrl<Key>Return:ksh_eval(\"XmProcessTraversal $2 TRAVERSE_CURRENT\")
<Key>Return:ksh_eval(\"XmProcessTraversal $2 TRAVERSE_CURRENT\")"
}
XCOMM FocusOut Callback: reenables the default button
SetDftButton()
{
XtSetValues $FORM defaultButton:$OK
}
XCOMM FocusIn Callback: disables the default button
ClearDftButton()
{
XtSetValues $FORM defaultButton:NULL
}
XCOMM If the 'Ok' button is activated, but the 'Name' field is empty, then
XCOMM this function will display an error dialog.
EmptyNameError()
{
XmCreateErrorDialog ERROR_DIALOG $TOPLEVEL noName \
okLabelString:Ok \
messageString:"You must supply a name...."
XmMessageBoxGetChild CANCEL_BTN $ERROR_DIALOG DIALOG_CANCEL_BUTTON
XmMessageBoxGetChild HELP_BTN $ERROR_DIALOG DIALOG_HELP_BUTTON
XtUnmanageChildren $CANCEL_BTN $HELP_BTN
XtSetValues $(XtParent "-" $ERROR_DIALOG) title:foo
XtManageChildren $ERROR_DIALOG
}
XCOMM Pushbutton Callback: attached to the 'Cancel' pushbutton
QuitCB()
{
exit 0
}
XCOMM Pushbutton Callback: attached to the default pushbutton. It extracts the
XCOMM fields within the dialog, and does some validation.
CheckActionValues()
{
XtGetValues $LARGEICON value:LARGEICON_VALUE
XtGetValues $SMALLICON value:SMALLICON_VALUE
XtGetValues $DESCRIPTION value:DESCRIPTION_VALUE
XtGetValues $COMMANDLINE value:COMMANDLINE_VALUE
XtGetValues $PROMPT value:PROMPT_VALUE
XtGetValues $COMMANDTYPE menuHistory:COMMANDTYPE_WIDGET
XmTextGetString NAME_VALUE $NAME
if [ "$NAME_VALUE" = "" ]
then
EmptyNameError
else
echo "Name: "$NAME_VALUE
echo "Large Icon: "$LARGEICON_VALUE
echo "Small Icon: "$SMALLICON_VALUE
echo "Description: "$DESCRIPTION_VALUE
echo "Command Line: "$COMMANDLINE_VALUE
echo "Prompt: "$PROMPT_VALUE
echo "Command Type: "$COMMANDTYPE_WIDGET
fi
}
XCOMM ###################### Create the Main UI ###############################
XtInitialize TOPLEVEL createAction CreateAction "$0" "$@"
XtCreateManagedWidget FORM form XmForm $TOPLEVEL
XtCreateManagedWidget NAMELABEL nameLabel XmLabel $FORM \
topAttachment:ATTACH_FORM \
topOffset:20 \
leftAttachment:ATTACH_FORM \
leftOffset:20 \
labelString:"Name:"
XtCreateManagedWidget NAME name XmText $FORM \
topAttachment:ATTACH_OPPOSITE_WIDGET \
topWidget:$NAMELABEL \
topOffset:-7 \
leftAttachment:ATTACH_WIDGET \
leftWidget:$NAMELABEL \
leftOffset:10 \
rightAttachment:ATTACH_FORM \
rightOffset:10 \
navigationType:EXCLUSIVE_TAB_GROUP
XtCreateManagedWidget COMMANDLINELABEL commandLineLabel XmLabel $FORM \
topAttachment:ATTACH_WIDGET \
topWidget:$NAMELABEL \
topOffset:20 \
leftAttachment:ATTACH_FORM \
leftOffset:20 \
labelString:"Command Line:"
XtCreateManagedWidget COMMANDLINE commandLine XmText $FORM \
topAttachment:ATTACH_WIDGET \
topWidget:$COMMANDLINELABEL \
topOffset:5 \
leftAttachment:ATTACH_FORM \
leftOffset:40 \
rightAttachment:ATTACH_FORM \
rightOffset:10 \
navigationType:EXCLUSIVE_TAB_GROUP
XmCreatePulldownMenu PANE $FORM pane
XtCreateManagedWidget XWIN xwin XmPushButton $PANE \
labelString:"X Windows"
XtCreateManagedWidget NOOUT noOut XmPushButton $PANE \
labelString:"No Output"
XtCreateManagedWidget TERM term XmPushButton $PANE \
labelString:"Terminal"
XtCreateManagedWidget TERMCLOSE termClose XmPushButton $PANE \
labelString:"Terminal [auto-close]"
XmCreateOptionMenu COMMANDTYPE $FORM commandType \
topAttachment:ATTACH_WIDGET \
topWidget:$COMMANDLINE \
topOffset:20 \
leftAttachment:ATTACH_FORM \
leftOffset:20 \
rightAttachment:ATTACH_FORM \
rightOffset:10 \
labelString:"Window Type:" \
menuHistory:$TERM \
subMenuId:$PANE \
navigationType:EXCLUSIVE_TAB_GROUP
XtSetValues $COMMANDTYPE spacing:35
XtManageChildren $COMMANDTYPE
XtCreateManagedWidget OPTLABEL optLabel XmLabel $FORM \
topAttachment:ATTACH_WIDGET \
topWidget:$COMMANDTYPE \
topOffset:30 \
leftAttachment:ATTACH_FORM \
leftOffset:100 \
labelString:"Optional Fields"
XtCreateManagedWidget SEP1 sep1 XmSeparator $FORM \
topAttachment:ATTACH_OPPOSITE_WIDGET \
topWidget:$OPTLABEL \
topOffset:10 \
rightAttachment:ATTACH_WIDGET \
rightWidget:$OPTLABEL \
rightOffset:5 \
leftAttachment:ATTACH_FORM \
orientation:HORIZONTAL \
separatorType:SHADOW_ETCHED_OUT
XtCreateManagedWidget SEP2 sep2 XmSeparator $FORM \
topAttachment:ATTACH_OPPOSITE_WIDGET \
topWidget:$OPTLABEL \
topOffset:10 \
leftAttachment:ATTACH_WIDGET \
leftWidget:$OPTLABEL \
leftOffset:5 \
rightAttachment:ATTACH_FORM \
orientation:HORIZONTAL \
separatorType:SHADOW_ETCHED_OUT
XtCreateManagedWidget PROMPTLABEL promptLabel XmLabel $FORM \
topAttachment:ATTACH_WIDGET \
topWidget:$OPTLABEL \
topOffset:20 \
leftAttachment:ATTACH_FORM \
leftOffset:20 \
labelString:"Filename Prompt:"
XtCreateManagedWidget PROMPT prompt XmText $FORM \
topAttachment:ATTACH_WIDGET \
topWidget:$PROMPTLABEL \
topOffset:5 \
leftAttachment:ATTACH_FORM \
leftOffset:40 \
rightAttachment:ATTACH_FORM \
rightOffset:10 \
navigationType:EXCLUSIVE_TAB_GROUP
XtCreateManagedWidget LARGEICONLABEL largeIconLabel XmLabel $FORM \
topAttachment:ATTACH_WIDGET \
topWidget:$PROMPT \
topOffset:30 \
leftAttachment:ATTACH_FORM \
leftOffset:20 \
labelString:"Large Icon:"
XtCreateManagedWidget LARGEICON largeIcon XmText $FORM \
topAttachment:ATTACH_OPPOSITE_WIDGET \
topWidget:$LARGEICONLABEL \
topOffset:-7 \
leftAttachment:ATTACH_WIDGET \
leftWidget:$LARGEICONLABEL \
leftOffset:20 \
rightAttachment:ATTACH_FORM \
rightOffset:10 \
navigationType:EXCLUSIVE_TAB_GROUP
XtCreateManagedWidget SMALLICONLABEL smallIconLabel XmLabel $FORM \
topAttachment:ATTACH_WIDGET \
topWidget:$LARGEICONLABEL \
topOffset:20 \
leftAttachment:ATTACH_FORM \
leftOffset:20 \
labelString:"Small Icon:"
XtCreateManagedWidget SMALLICON smallIcon XmText $FORM \
topAttachment:ATTACH_OPPOSITE_WIDGET \
topWidget:$SMALLICONLABEL \
topOffset:-7 \
leftAttachment:ATTACH_OPPOSITE_WIDGET \
leftWidget:$LARGEICON \
rightAttachment:ATTACH_FORM \
rightOffset:10 \
navigationType:EXCLUSIVE_TAB_GROUP
XtCreateManagedWidget DESCRIPTIONLABEL descriptionLabel XmLabel $FORM \
topAttachment:ATTACH_WIDGET \
topWidget:$SMALLICONLABEL \
topOffset:20 \
leftAttachment:ATTACH_FORM \
leftOffset:20 \
labelString:"Description:"
XmCreateScrolledText DESCRIPTION $FORM description \
topAttachment:ATTACH_WIDGET \
topWidget:$DESCRIPTIONLABEL \
topOffset:5 \
leftAttachment:ATTACH_FORM \
leftOffset:40 \
rightAttachment:ATTACH_FORM \
rightOffset:10 \
editMode:MULTI_LINE_EDIT \
rows:4 \
navigationType:EXCLUSIVE_TAB_GROUP
XtManageChildren $DESCRIPTION
XtCreateManagedWidget SEP sep XmSeparator $FORM \
topAttachment:ATTACH_WIDGET \
topWidget:$DESCRIPTION \
topOffset:20 \
rightAttachment:ATTACH_FORM \
leftAttachment:ATTACH_FORM
XtCreateManagedWidget OK ok XmPushButton $FORM \
labelString:Apply \
leftAttachment:ATTACH_POSITION \
leftPosition:10 \
rightAttachment:ATTACH_POSITION \
rightPosition:30 \
topAttachment:ATTACH_WIDGET \
topWidget:$SEP \
topOffset:20 \
bottomOffset:10 \
bottomAttachment:ATTACH_FORM
XtAddCallback $OK activateCallback CheckActionValues
XtCreateManagedWidget CLOSE close XmPushButton $FORM \
labelString:Close \
leftAttachment:ATTACH_POSITION \
leftPosition:40 \
rightAttachment:ATTACH_POSITION \
rightPosition:60 \
topAttachment:ATTACH_WIDGET \
topWidget:$SEP \
topOffset:20 \
bottomOffset:10 \
bottomAttachment:ATTACH_FORM
XtAddCallback $CLOSE activateCallback QuitCB
XtCreateManagedWidget HELP help XmPushButton $FORM \
labelString:Help \
leftAttachment:ATTACH_POSITION \
leftPosition:70 \
rightAttachment:ATTACH_POSITION \
rightPosition:90 \
topAttachment:ATTACH_WIDGET \
topWidget:$SEP \
topOffset:20 \
bottomOffset:10 \
bottomAttachment:ATTACH_FORM
XtSetValues $FORM \
defaultButton:$OK \
cancelButton:$CLOSE \
navigationType:EXCLUSIVE_TAB_GROUP \
initialFocus:$NAME
XCOMM Set up proper behavior for the Return key
SetCrControls $NAME $COMMANDLINE
SetCrControls $COMMANDLINE $PROMPT
SetCrControls $PROMPT $LARGEICON
SetCrControls $LARGEICON $SMALLICON
XtRealizeWidget $TOPLEVEL
XtMainLoop