/usr/dt/share/man/cat1/dtksh.1(/usr/dt/share/man/cat1/dtksh.1)
dtksh(1) USER COMMANDS dtksh(1)
NAME
dtksh - shell command language interpreter with access to
many X, Xt, Xm and TED functions
SYNOPSIS
dtksh [-abCefimnuvx] [-o option] [+abCefmnuvx] [+o option]
[command_file [argument...]]
dtksh [-abCefimnuvx] [-o option] [+abCefmnuvx] [+o option]
command_string [command_name [argument...]]
dtksh -s [-abCefimnuvx] [-o option] [+abeCefmnuvx]
[+o option] [argument...]]
DESCRIPTION
The dtksh utility is a version of the KornShell extended to
support:
o Access to many X, Xt and Motif facilities from within
a shell script
o Fully localized shell scripts
o Access to the TED application help system
o Customization of script-based GUI attributes (such as
font and colors) using the TED customization tool
o Response to session-management Save state directives
o Response to window-management Close directives
o Access to most of the TED Desktop Services Message Set
o Access to many of the CDE Data Typing API functions
o Access to the CDE Action API functions
OPTIONS
See sh(1).
OPERANDS
See sh(1).
RESOURCES
The dtksh interpreter has no relevant resources outside of
those that affect the various widgets that can be instan-
tiated from within a dtksh script. Refer to the manual page
of the relevant widget for information on the resources that
apply to that widget.
Unix System LaboratoLast change: 1 August 1995 1
dtksh(1) USER COMMANDS dtksh(1)
STDIN
See sh(1).
INPUT FILES
See sh(1).
ENVIRONMENT VARIABLES
The following information describes the environment vari-
ables that dtksh uses that are in addition to those docu-
mented in the manual page for the sh command language inter-
preter.
Immediate Return Value (-)
Many of the category 3 commands (as described in the Return
Values From Built-in Commands section) return a single value
using an environment variable specified as the first argu-
ment to the command (in the synopses for these special com-
mands, the first argument has the name variable). If this
return value is immediately used in an expression, the spe-
cial environment variable ``-'' can be used in place of a
variable name. When dtksh encounters ``-'' as the name of
the environment variable in which the return value is to be
returned, it returns the result as the value of the command.
This allows the shell script to embed the command call in
another command call. (This feature works only for commands
that return a single value; the value is the first argument
and the argument has the name variable). For example:
XtDisplay DISPLAY $FORM
XSync $DISPLAY true
can be replaced by the equivalent:
XSync $(XtDisplay "-" $FORM) true
The reference to $DISPLAY is replaced with the value
returned by the call to XtDisplay. This capability is
available for all category 3 commands except those that
create a widget, those that return more than a single value
and those whose first argument is not named variable. Com-
mands that do not accept ``-'' as the environment variable
name include: XtInitialize, XtCreateApplicationShell,
XtCreatePopupShell, XtCreateManagedWidget and
XtCreateWidget; all commands of the form:
XmCreate...()
and most commands of the form:
tt_...()
Unix System LaboratoLast change: 1 August 1995 2
dtksh(1) USER COMMANDS dtksh(1)
Variables Set By XtInitialize
The XtInitialize command sets the following variables:
DTKSH_APPNAME
DTKSH_ARGV
DTKSH_TOPLEVEL
Callback Context Variables
An application registers a callback with a widget to specify
which condition it is interested in, and what action should
occur when that condition occurs. The action can be any
arbitrary dtksh command line. For example:
XtAddCallback $WIDGET activateCallback "ActivateProc"
XtAddCallback $WIDGET activateCallback "XtSetSensitive $BUTTON false"
A callback needs to be passed some context so it can deter-
mine what condition led to its call. For a C procedure,
this information is typically passed in a call_data struc-
ture. For example, a Scale widget invoking a valueChanged-
Callback passes in call_data an instance of the following
structure:
typedef struct {
int reason;
XEvent *event;
int value;
} XmScaleCallbackStruct;
The C application's callback does something like:
if (scaleCallData->reason == XmCR_VALUE_CHANGED) {
eventType = scaleCallData->event->type;
display = scaleCallData->event->xany.display;
}
Similarly in dtksh, when a callback is invoked, the follow-
ing special environment variables are set up before the
callback command executes:
CB_WIDGET
Set to the widget handle for the widget invoking
the callback.
CB_CALL_DATA
Set to the address of the call_data structure
passed by the widget to the callback, but its use-
fulness lies in the nested sub-variables associated
with it.
The CB_CALL_DATA environment variable represents a pointer
to a structure; access to its fields uses a syntax similar
Unix System LaboratoLast change: 1 August 1995 3
dtksh(1) USER COMMANDS dtksh(1)
to the C code. Nested environment variables are defined,
named the same as the fields of the structure (but folded to
all upper case), and use a dot to indicate containment of an
element in a structure. Thus, the preceding C code, to
access the call_data provided by the Scale widget,
translates to:
if [${CB_CALL_DATA.REASON} = "CR_VALUE_CHANGED"]; then
eventType=${CB_CALL_DATA.EVENT.TYPE}
display=${CB_CALL_DATA.EVENT.XANY.DISPLAY}
fi
The same is true of the event structure within the call_data
structure.
For most callback structures, the shell script is able to
reference any of the fields defined for the particular call-
back structure, using the technique previously described in
this manual page. In most cases, the shell script is not
able to alter the values of the fields within these struc-
tures. The exception to this is the XmTextVerifyCallback-
Struct, available during the losingFocusCallback, the
modifyVerifyCallback and the motionVerifyCallback for the
text widget. The dtksh utility supports the modification of
certain fields within this structure, to the extent that it
is supported by Motif. The following fields within the
callback structure can be modified:
CB_CALL_DATA.DOIT
CB_CALL_DATA.STARTPOS
CB_CALL_DATA.ENDPOS
CB_CALL_DATA.TEXT.PTR
CB_CALL_DATA.TEXT.LENGTH
CB_CALL_DATA.TEXT.FORMAT
An example of how these fields can be modified:
CB_CALL_DATA.DOIT="false"
CB_CALL_DATA.TEXT.PTR="*"
CB_CALL_DATA.TEXT.LENGTH=1
Event Handler Context Variables
As with callbacks, an application registers event handlers
with a widget to specify what action should occur when one
of the specified events occurs. Again, the action can be
any arbitrary dtksh command line. For example:
XtAddEventHandler $W "Button2MotionMask" false "ActivateProc"
XtAddEventHandler $W "ButtonPressMask|ButtonReleaseMask" \
false "echo action"
Unix System LaboratoLast change: 1 August 1995 4
dtksh(1) USER COMMANDS dtksh(1)
Just as with callbacks, two environment variables are
defined to provide context to the event handler:
EH_WIDGET
Set to the widget handle for the widget for which
the event handler is registered.
EH_EVENT
Set to the address of the XEvent that triggered the
event handler.
Access to the fields within the XEvent structure is the same
as for the CB_CALL_DATA environment variable previously
described in this manual page. For example:
if [${EH_EVENT.TYPE} = "ButtonPress"]; then
echo X = ${EH_EVENT.XBUTTON.X}
echo Y = ${EH_EVENT.XBUTTON.Y}
elif [${EH_EVENT.TYPE} = "KeyPress"]; then
echo X = ${EH_EVENT.XKEY.X}
echo Y = ${EH_EVENT.XKEY.Y}
fi
Translation Context Variables
Xt provides for event translations to be registered for a
widget; their context is provided in the same way as with
event handlers. The two variables defined for translation
commands are:
TRANSLATION_WIDGET
Set to the widget handle for the widget for which
the translation is registered.
TRANSLATION_EVENT
Set to the address of the XEvent that triggered the
translation.
Dot-notation provides access to the fields of the event:
echo Event type = ${TRANSLATION_EVENT.TYPE}
echo Display = ${TRANSLATION_EVENT.XANY.DISPLAY}
Workspace Callback Context Variables
An application can register a callback function that is
invoked any time the user changes to a new workspace. When
the callback is invoked, the following two special environ-
ment variables are set, and can be accessed by the shell
callback code:
CB_WIDGET
Set to the widget handle for the widget invoking
the callback.
Unix System LaboratoLast change: 1 August 1995 5
dtksh(1) USER COMMANDS dtksh(1)
CB_CALL_DATA
Set to the X atom that uniquely identifies the new
workspace. This can be converted to its string
representation using the XmGetAtomName command.
Accessing Event Subfields
The XEvent structure has many different configurations based
on the event's type. The dtksh utility provides access only
to the most frequently used XEvents. Any of the other stan-
dard XEvents are accessed using the event type XANY, fol-
lowed by any of the subfields defined by the XANY event
structure, which includes the following subfields:
${TRANSLATION_EVENT.XANY.TYPE}
${TRANSLATION_EVENT.XANY.SERIAL}
${TRANSLATION_EVENT.XANY.SEND_EVENT}
${TRANSLATION_EVENT.XANY.DISPLAY}
${TRANSLATION_EVENT.XANY.WINDOW}
The dtksh utility supports full access to all of the event
fields for the following event types:
XANY
XBUTTON
XEXPOSE
XNOEXPOSE
XGRAPHICSEXPOSE
XKEY
XMOTION
The following examples show how the subfields for the previ-
ously listed event types are accessed:
${TRANSLATION_EVENT.XBUTTON.X}
$(CB_CALL_DATA.EVENT.XKEY.STATE}
${EH_EVENT.XGRAPHICSEXPOSE.WIDTH}
Input Context Variables
Xt provides the XtAddInput(3X) facility that allows an
application to register interest in activity on a particular
file descriptor. This generally includes data available for
reading, the file descriptor being ready for writing, and
exceptions on the file descriptor. If programming in C, the
application provides a handler function that is invoked when
the activity occurs. When reading data from the file
descriptor, it is up to the handler to read the data from
the input source and handle character escaping and line con-
tinuations.
The dtksh utility also supports the XtAddInput(3X) facility,
but has limited its functionality to reading data, and has
taken the reading function a step further to make it easier
Unix System LaboratoLast change: 1 August 1995 6
dtksh(1) USER COMMANDS dtksh(1)
for shell programmers to use. By default, when a shell
script registers interest in a file descriptor, dtksh
invokes the shell script's input handler only when a com-
plete line of text has been received. A complete line of
text is defined to be a line terminated either by an unes-
caped <newline> character, or by end-of-file. The input
handler is also called if no data is available and end-of-
file is reached. This gives the handler the opportunity to
use XtRemoveInput(3X) to remove the input source, and to
close the file descriptor.
The advantage of this default behavior is that input
handlers do not need to do escape processing or handle line
continuations. The disadvantage is that it assumes that all
of the input is line-oriented and contains no binary infor-
mation. If the input source does contain binary informa-
tion, or if the input handler wants to read the data from
the input source directly, dtksh also supports a raw input
mode. In raw mode, dtksh does not read any of the data from
the input source. Any time dtksh is notified that input is
available on the input source, it invokes the shell script's
input handler. It then becomes the handler's responsibility
to read the incoming data, to perform any required buffering
and escape processing, and to detect when end-of-file is
reached (so that the input source can be removed and the
file descriptor closed).
Whether the input handler is configured to operate in the
default mode or in raw mode, dtksh sets up several environ-
ment variables before calling the shell script's input
handler. These environment variables provide the input
handler with everything needed to handle the incoming data:
INPUT_LINE
If operating in the default mode, this variable
contains the next complete line of input available
from the input source. If INPUT_EOF is set to
True, there is no data in this buffer. If operat-
ing in raw mode, this environment variable always
contains an empty string.
INPUT_EOF
If operating in the default mode, this variable is
set to False any time INPUT_LINE contains data, and
is set to True when end-of-file is reached. When
end-of-file is reached, the input handler for the
shell script should unregister the input source and
close the file descriptor. If operating in raw
mode, INPUT_EOF is always set to False.
INPUT_SOURCE
Indicates the file descriptor for which input is
Unix System LaboratoLast change: 1 August 1995 7
dtksh(1) USER COMMANDS dtksh(1)
available. If operating in raw mode, this file
descriptor is used to obtain the pending input.
The file descriptor is also used to close the input
source when it is no longer needed.
INPUT_ID
Indicates the ID returned by XtAddInput when the
input source was originally registered. This
information is needed in order to remove the input
source using XtRemoveInput.
ASYNCHRONOUS EVENTS
Default.
STDOUT
See sh(1).
STDERR
See sh(1).
OUTPUT FILES
None.
EXTENDED DESCRIPTION
The capabilities described here are extensions to those of
the sh command language interpreter. See sh(1). The fol-
lowing subsections give a synopsis of each of the built-in
commands added by dtksh to sh. In general, argument order-
ing and types are the same as for corresponding C pro-
cedures, with exceptions noted. For more detail on the
functionality and arguments of a command, see the standard
documentation for the corresponding X11, Xt, Motif or Desk-
top Services procedure.
In definitions listed in this document, arguments named
variable, variable2, variable3 and so on, indicate that the
shell script must supply the name of an environment vari-
able, into which some value is returned.
All of the Xt commands used to create a new widget require
that the widget class for the new widget be specified. The
widget (or gadget) class name is the standard class name
provided by Motif. For example, the class name for a Motif
pushbutton widget is XmPushButton, while the class name for
the Motif label gadget is XmLabelGadget. Commands that use
their exit status to return a Boolean value (which can be
used directly as part of an if statement) are noted as such.
Arguments enclosed within [] are optional.
Dtksh Built-in Xlib Commands
XBell display volume
Unix System LaboratoLast change: 1 August 1995 8
dtksh(1) USER COMMANDS dtksh(1)
XClearArea display drawable [optional GC arguments] x y
width height exposures
XClearWindow display drawable
XCopyArea display src dest srcX srcY width height destX
destY [optional GC arguments]
XDefineCursor display window cursor
XDrawArc display drawable [optional GC arguments] x y width
height angle1 angle2
XDrawLine display drawable [optional GC arguments] x1 y1 x2
y2
XDrawLines display drawable [-coordinateMode] [optional GC
arguments] x1 y1 x2 y2 [x3 y3 ...]
The coordinateMode operand is either CoordModeOrigin or
CoordModePrevious.
XDrawPoint display drawable [optional GC arguments] x y
XDrawPoints display drawable [-coordinateMode] [optional GC
arguments] x1 y1 [x2 y2 x3 y3 ...]
The coordinateMode operand is either CoordModeOrigin or
CoordModePrevious.
XDrawRectangle display drawable [optional GC arguments] x y
width height
XDrawSegments display drawable [optional GC arguments] x1 y1
x2 y2 [x3 y3 x4 y4 ...]
XDrawString display drawable [optional GC arguments] x y
string
XDrawImageString display drawable [optional GC arguments] x
y string
XFillArc display drawable [optional GC arguments] x y width
height angle1 angle2
XFillPolygon display drawable [-shape] [-coordinateMode]
[optional GC arguments] x1 y1 x2 y2 ...
The shape operand is one of Complex, Convex or Nonconvex,
and where coordinateMode is either CoordModeOrigin or
CoordModePrevious.
Unix System LaboratoLast change: 1 August 1995 9
dtksh(1) USER COMMANDS dtksh(1)
XFillRectangle display drawable [optional GC arguments] x y
width height
XFlush display
XHeightOfScreen variable screen
XRaiseWindow display window
XRootWindowOfScreen variable screen
XSync display discard
The discard operand is either True or False.
XTextWidth variable fontName string
The XTextWidth command differs from the C procedure; it
takes the name of a font instead of a pointer to a font
structure.
XUndefineCursor display window
XWidthOfScreen variable screen
Built-in XtIntrinsic Commands
XtAddCallback widgetHandle callbackName dtksh-command
The callbackName operand is one of the standard Motif or
Xt callback names, with the Xt or Xm prefix omitted; for
example, activateCallback.
XtAddEventHandler widgetHandle eventMask nonMaskableFlag
dtksh-command
The eventMask operand is of the form mask|mask|mask and
the mask component is any of the standard set of XEvent
masks; for example, ButtonPressMask, where nonMaska-
bleFlag is either True or False.
XtAddInput variable [-r] fileDescriptor dtksh-command
The XtAddInput command registers the indicated file
descriptor with the X Toolkit as an alternative input
source (that is, for reading). The input handler for the
shell script is responsible for unregistering the input
source when it is no longer needed, and also to close the
file descriptor. If the -r option is specified (raw
mode), dtksh does not automatically read any of the data
available from the input source; it is up to the speci-
fied dtksh command to read all data. If the -r option is
not specified, the specified dtksh command is invoked
Unix System LaboratoLast change: 1 August 1995 10
dtksh(1) USER COMMANDS dtksh(1)
only when a full line has been read (that is, a line ter-
minated by either an unescaped <newline> character, or
end-of-file) and when end-of-file is reached. The raw
mode is useful for handlers expecting to process non-
textual data, or for handlers not wanting dtksh to
automatically read in a line of data. When end-of-file
is detected, it is the responsibility of the input
handler for the shell script to use XtRemoveInput to
remove the input source, and to close the file descrip-
tor, if necessary. In all cases, several environment
variables are set up for the handler to use. These
include the following:
INPUT_LINE
Empty if raw mode; otherwise, contains
next line to be processed.
INPUT_EOF
Set to True if end-of-file reached; other-
wise, set to False.
INPUT_SOURCE
File descriptor associated with this input
source.
INPUT_ID
ID associated with this input handler;
returned by XtAddInput.
XtAddTimeout variable interval dtksh-command
XtAddWorkProc variable dtksh-command
In dtksh, the dtksh-command is typically a dtksh function
name. Like regular work procedures, this function is
expected to return a value indicating whether the work
procedure wants to be called again, or whether it has
completed its work and can be automatically unregistered.
If the dtksh function returns zero, the work procedure
remains registered; any other value causes the work pro-
cedure to be automatically unregistered.
XtAugmentTranslations widgetHandle translations
XtCreateApplicationShell variable applicationName
widgetClass [resource:value ...]
XtCallCallbacks widgetHandle callbackName
The callbackName operand is one of the standard Motif or
Xt callback names, with the Xt or Xm prefix omitted; for
example, activateCallback.
Unix System LaboratoLast change: 1 August 1995 11
dtksh(1) USER COMMANDS dtksh(1)
XtClass variable widgetHandle
The command returns the name of the widget class associ-
ated with the passed-in widget handle.
XtCreateManagedWidget variable widgetName widgetClass
parentWidgetHandle [resource:value ...]
XtCreatePopupShell variable widgetName widgetClass
parentWidgetHandle [resource:value ...]
XtCreateWidget variable widgetName widgetClass
parentWidgetHandle [resource:value ...]
XtDestroyWidget widgetHandle [widgetHandle ...]
XtDisplay variable widgetHandle
XtDisplayOfObject variable widgetHandle
XtGetValues widgetHandle resource:variable1
[resource:variable2 ...]
XtHasCallbacks variable widgetHandle callbackName
The callbackName operand is one of the standard Motif or
Xt callback names, with the Xt or Xm prefix omitted: for
example, activateCallback variable is set to one of the
strings CallbackNoList, CallbackHasNone or CallbackHas-
Some.
XtInitialize variable shellName applicationClassName appli-
cationName arguments
Similar to a typical Motif-based program, the arguments
argument is used to reference any command-line arguments
that might have been specified by the shell script user;
these are typically referred using the shell syntax of
$@. The applicationName argument is listed because $@
does not include $0. The applicationName and arguments
are used to build the argument list passed to the XtIni-
tialize command. Upon completion, the environment vari-
able DTKSH_ARGV is set to the argument list as returned
by the XtInitialize command; the DTKSH_TOPLEVEL environ-
ment variable is set to the widget handle of the widget
created by XtInitialize, and the DTKSH_APPNAME environ-
ment variable is set to the value of the applicationName
argument. The command returns a value that can be used
in a conditional.
XtIsManaged widgetHandle
Unix System LaboratoLast change: 1 August 1995 12
dtksh(1) USER COMMANDS dtksh(1)
The command returns a value that can be used in a condi-
tional.
XtIsSubclass widgetHandle widgetClass
The widgetClass operand is the name of a widget class.
The command returns a value that can be used in a condi-
tional.
XtNameToWidget variable referenceWidget name
XtIsRealized widgetHandle
The command returns a value that can be used in a condi-
tional.
XtIsSensitive widgetHandle
The command returns a value that can be used in a condi-
tional.
XtIsShell widgetHandle
The command returns a value that can be used in a condi-
tional.
XtLastTimestampProcessed variable display
XtMainLoop
XtManageChild widgetHandle
XtManageChildren widgetHandle [widgetHandle ...]
XtMapWidget widgetHandle
XtOverrideTranslations widgetHandle translations
XtParent variable widgetHandle
XtPopdown widgetHandle
XtPopup widgetHandle grabType
The grabType operand is one of the strings GrabNone,
GrabNonexclusive or GrabExclusive.
XtRealizeWidget widgetHandle
XtRemoveAllCallbacks widgetHandle callbackName
Unix System LaboratoLast change: 1 August 1995 13
dtksh(1) USER COMMANDS dtksh(1)
The callbackName operand is one of the standard Motif or
Xt callback names, with the Xt or Xm prefix omitted; for
example, activateCallback.
XtRemoveCallback widgetHandle callbackName dtksh-command
The callbackName operand is one of the standard Motif or
Xt callback names, with the Xt or Xm prefix omitted; for
example, activateCallback. As with traditional Xt call-
backs, when a callback is removed, the same dtksh command
string must be specified as was specified when the call-
back was originally registered.
XtRemoveEventHandler widgetHandle eventMask nonMaskableFlag
dtksh-command
The eventMask operand is of the form mask|mask|mask and
the mask component is any of the standard set of XEvent
masks; for example, ButtonPressMask, where nonMaska-
bleFlag is either True or False. As with traditional Xt
event handlers, when an event handler is removed, the
same eventMask, nonMaskableFlag setting and dtksh command
string must be specified as was specified when the event
handler was originally registered.
XtRemoveInput inputId
The inputId operand is the handle returned in the speci-
fied environment variable when the alternative input
source was registered using the XtAddInput command.
XtRemoveTimeOut timeoutId
The timeoutId operand is the handle returned in the
specified environment variable when the timeout was
registered using the XtAddTimeOut command.
XtRemoveWorkProc workprocId
The workprocId operand is the handle returned in the
specified environment variable when the work procedure
was registered using the XtAddWorkProc command.
XtScreen variable widgetHandle
XtSetSensitive widgetHandle state
The state operand is either True or False.
XtSetValues widgetHandle resource:value [resource:value ...]
Unix System LaboratoLast change: 1 August 1995 14
dtksh(1) USER COMMANDS dtksh(1)
XtUninstallTranslations widgetHandle
XtUnmanageChild widgetHandle
XtUnmanageChildren widgetHandle [widgetHandle ...]
XtUnmapWidget widgetHandle
XtUnrealizeWidget widgetHandle
XtWindow variable widgetHandle
Built-in Motif Commands
XmAddWMProtocolCallback widgetHandle protocolAtom dtksh-
command
The protocolAtom operand is typically obtained using the
XmInternAtom command.
XmAddWMProtocols widgetHandle protocolAtom [protocolA-
tom ...]
The protocolAtom operand is typically obtained using the
XmInternAtom command.
XmCommandAppendValue widgetHandle string XmCommandError
widgetHandle errorString
XmCommandGetChild variable widgetHandle childType
The childType operand is one of the strings:
DIALOG_COMMAND_TEXT
DIALOG_PROMPT_LABEL
DIALOG_HISTORY_LIST
DIALOG_WORK_AREA
XmCommandSetValue widgetHandle commandString
XmCreateArrowButton variable parentWidgetHandle name
[resource:value ...]
XmCreateArrowButtonGadget variable parentWidgetHandle name
[resource:value ...]
XmCreateBulletinBoard variable parentWidgetHandle name
[resource:value ...]
XmCreateBulletinBoardDialog variable parentWidgetHandle name
[resource:value ...]
Unix System LaboratoLast change: 1 August 1995 15
dtksh(1) USER COMMANDS dtksh(1)
XmCreateCascadeButton variable parentWidgetHandle name
[resource:value ...]
XmCreateCascadeButtonGadget variable parentWidgetHandle name
[resource:value ...]
XmCreateCommand variable parentWidgetHandle name
[resource:value ...]
XmCreateDialogShell variable parentWidgetHandle name
[resource:value ...]
XmCreateDrawingArea variable parentWidgetHandle name
[resource:value ...]
XmCreateDrawnButton variable parentWidgetHandle name
[resource:value ...]
XmCreateErrorDialog variable parentWidgetHandle name
[resource:value ...]
XmCreateFileSelectionBox variable parentWidgetHandle name
[resource:value ...]
XmCreateFileSelectionDialog variable parentWidgetHandle name
[resource:value ...]
XmCreateForm variable parentWidgetHandle name
[resource:value ...]
XmCreateFormDialog variable parentWidgetHandle name
[resource:value ...]
XmCreateFrame variable parentWidgetHandle name
[resource:value ...]
XmCreateInformationDialog variable parentWidgetHandle name
[resource:value ...]
XmCreateLabel variable parentWidgetHandle name
[resource:value ...]
XmCreateLabelGadget variable parentWidgetHandle name
[resource:value ...]
XmCreateList variable parentWidgetHandle name
[resource:value ...]
XmCreateMainWindow variable parentWidgetHandle name
[resource:value ...]
Unix System LaboratoLast change: 1 August 1995 16
dtksh(1) USER COMMANDS dtksh(1)
XmCreateMenuBar variable parentWidgetHandle name
[resource:value ...]
XmCreateMenuShell variable parentWidgetHandle name
[resource:value ...]
XmCreateMessageBox variable parentWidgetHandle name
[resource:value ...]
XmCreateMessageDialog variable parentWidgetHandle name
[resource:value ...]
XmCreateOptionMenu variable parentWidgetHandle name
[resource:value ...]
XmCreatePanedWindow variable parentWidgetHandle name
[resource:value ...]
XmCreatePopupMenu variable parentWidgetHandle name
[resource:value ...]
XmCreatePromptDialog variable parentWidgetHandle name
[resource:value ...]
XmCreatePulldownMenu variable parentWidgetHandle name
[resource:value ...]
XmCreatePushButton variable parentWidgetHandle name
[resource:value ...]
XmCreatePushButtonGadget variable parentWidgetHandle name
[resource:value ...]
XmCreateQuestionDialog variable parentWidgetHandle name
[resource:value ...]
XmCreateRadioBox variable parentWidgetHandle name
[resource:value ...]
XmCreateRowColumn variable parentWidgetHandle name
[resource:value ...]
XmCreateScale variable parentWidgetHandle name
[resource:value ...]
XmCreateScrollBar variable parentWidgetHandle name
[resource:value ...]
XmCreateScrolledList variable parentWidgetHandle name
[resource:value ...]
Unix System LaboratoLast change: 1 August 1995 17
dtksh(1) USER COMMANDS dtksh(1)
XmCreateScrolledText variable parentWidgetHandle name
[resource:value ...]
XmCreateScrolledWindow variable parentWidgetHandle name
[resource:value ...]
XmCreateSelectionBox variable parentWidgetHandle name
[resource:value ...]
XmCreateSelectionDialog variable parentWidgetHandle name
[resource:value ...]
XmCreateSeparator variable parentWidgetHandle name
[resource:value ...]
XmCreateSeparatorGadget variable parentWidgetHandle name
[resource:value ...]
XmCreateText variable parentWidgetHandle name
[resource:value ...]
XmCreateTextField variable parentWidgetHandle name
[resource:value ...]
XmCreateToggleButton variable parentWidgetHandle name
[resource:value ...]
XmCreateToggleButtonGadget variable parentWidgetHandle name
[resource:value ...]
XmCreateWarningDialog variable parentWidgetHandle name
[resource:value ...]
XmCreateWorkArea variable parentWidgetHandle name
[resource:value ...]
XmCreateWorkingDialog variable parentWidgetHandle name
[resource:value ...]
XmFileSelectionDoSearch widgetHandle directoryMask
XmFileSelectionBoxGetChild variable widgetHandle childType
The childType operand is one of the strings:
DIALOG_APPLY_BUTTON
DIALOG_CANCEL_BUTTON
DIALOG_DEFAULT_BUTTON
DIALOG_DIR_LIST
DIALOG_DIR_LIST_LABEL
DIALOG_FILTER_LABEL
DIALOG_FILTER_TEXT
Unix System LaboratoLast change: 1 August 1995 18
dtksh(1) USER COMMANDS dtksh(1)
DIALOG_HELP_BUTTON
DIALOG_LIST
DIALOG_LIST_LABEL
DIALOG_OK_BUTTON
DIALOG_SEPARATOR
DIALOG_SELECTION_LABEL
DIALOG_TEXT
DIALOG_WORK_AREA
XmGetAtomName variable display atom
XmGetColors widgetHandle background variable variable2 vari-
able3 variable4
The XmGetColors command differs from the C procedure in
that it takes a widgetHandle instead of a screen pointer
and a colormap.
XmGetFocusWidget variable widgetHandle
XmGetPostedFromWidget variable widgetHandle
XmGetTabGroup variable widgetHandle
XmGetTearOffControl variable widgetHandle
XmGetVisibility variable widgetHandle
XmInternAtom variable display atomString onlyIfExistsFlag
The onlyIfExistsFlag operand can be set to either True or
False.
XmIsTraversable widgetHandle
The command returns a value that can be used in a condi-
tional.
XmListAddItem widgetHandle position itemString
The ordering of the arguments to the XmListAddItem com-
mand differs from the corresponding C function.
XmListAddItems widgetHandle position itemString [item-
String ...]
The ordering of the arguments to the XmListAddItems com-
mand differs from the corresponding C function.
XmListAddItemsUnselected widgetHandle position itemString
[itemString ...]
Unix System LaboratoLast change: 1 August 1995 19
dtksh(1) USER COMMANDS dtksh(1)
The ordering of the arguments to the XmListAddItemsUn-
selected command differs from the corresponding C func-
tion.
XmListAddItemUnselected widgetHandle position itemString
The ordering of the arguments to the XmListAddItemUn-
selected command differs from the corresponding C func-
tion.
XmListDeleteAllItems widgetHandle
XmListDeleteItem widgetHandle itemString
XmListDeleteItems widgetHandle itemString [itemString ...]
XmListDeleteItemsPos widgetHandle itemCount position
XmListDeletePos widgetHandle position
XmListDeletePositions widgetHandle position [position ...]
XmListDeselectAllItems widgetHandle
XmListDeselectItem widgetHandle itemString
XmListDeselectPos widgetHandle position
XmListGetSelectedPos variable widgetHandle
The command returns in variable a comma-separated list of
indices. The command returns a value that can be used in
a conditional.
XmListGetKbdItemPos variable widgetHandle
XmListGetMatchPos variable widgetHandle itemString
The command returns in variable a comma-separated list of
indices. The command returns a value that can be used in
a conditional.
XmListItemExists widgetHandle itemString
The command returns a value that can be used in a condi-
tional.
XmListItemPos variable widgetHandle itemString
XmListPosSelected widgetHandle position
Unix System LaboratoLast change: 1 August 1995 20
dtksh(1) USER COMMANDS dtksh(1)
The command returns a value that can be used in a condi-
tional.
XmListPosToBounds widgetHandle position variable variable2
variable3 variable4
The command returns a value that can be used in a condi-
tional.
XmListReplaceItemsPos widgetHandle position itemString
[itemString ...]
The ordering of the arguments to the XmListReplaceItem-
sPos command differs from the corresponding C function.
XmListReplaceItemsPosUnselected widgetHandle position item-
String [itemString ...]
The ordering of the arguments to the XmListReplaceItem-
sPosUnselected command differs from the corresponding C
function.
XmListSelectItem widgetHandle itemString notifyFlag
The notifyFlag operand can be set to either True or
False.
XmListSelectPos widgetHandle position notifyFlag
The notifyFlag operand can be set to either True or
False.
XmListSetAddMode widgetHandle state
The state operand can be set to either True or False.
XmListSetBottomItem widgetHandle itemString
XmListSetBottomPos widgetHandle position
XmListSetHorizPos widgetHandle position
XmListSetItem widgetHandle itemString
XmListSetKbdItemPos widgetHandle position
The command returns a value that can be used in a condi-
tional.
XmListSetPos widgetHandle position
Unix System LaboratoLast change: 1 August 1995 21
dtksh(1) USER COMMANDS dtksh(1)
XmListUpdateSelectedList widgetHandle
XmMainWindowSep1 variable widgetHandle
XmMainWindowSep2 variable widgetHandle
XmMainWindowSep3 variable widgetHandle
XmMainWindowSetAreas widgetHandle menuWidgetHandle com-
mandWidgetHandle horizontalScrollbarWidgetHandle vertical-
ScrollbarWidgetHandle workRegionWidgetHandle
XmMenuPosition widgetHandle eventHandle
The eventHandle operand refers to an XEvent that has typ-
ically been obtained by accessing the CB_CALL_DATA.EVENT,
EH_EVENT or TRANSLATION_EVENT environment variables.
XmMessageBoxGetChild variable widgetHandle childType
The childType operand is one of the strings:
DIALOG_CANCEL_BUTTON
DIALOG_DEFAULT_BUTTON
DIALOG_HELP_BUTTON
DIALOG_MESSAGE_LABEL
DIALOG_OK_BUTTON
DIALOG_SEPARATOR
DIALOG_SYMBOL_LABEL
XmOptionButtonGadget variable widgetHandle
XmOptionLabelGadget variable widgetHandle
XmProcessTraversal widgetHandle direction
The direction operand is one of the strings:
TRAVERSE_CURRENT
TRAVERSE_DOWN
TRAVERSE_HOME
TRAVERSE_LEFT
TRAVERSE_NEXT
TRAVERSE_NEXT_TAB_GROUP
TRAVERSE_PREV
TRAVERSE_PREV_TAB_GROUP
TRAVERSE_RIGHT
TRAVERSE_UP
The command returns a value that can be used in a condi-
tional.
Unix System LaboratoLast change: 1 August 1995 22
dtksh(1) USER COMMANDS dtksh(1)
XmRemoveWMProtocolCallback widgetHandle protocolAtom dtksh-
command
The protocolAtom operand is typically obtained using the
XmInternAtom command. As with traditional WM callbacks,
when a callback is removed, the same dtksh command string
must be specified as was specified when the callback was
originally registered.
XmRemoveWMProtocols widgetHandle protocolAtom [protocolA-
tom ...]
The protocolAtom operand is typically obtained using the
XmInternAtom command.
XmScaleGetValue widgetHandle variable
XmScaleSetValue widgetHandle value
XmScrollBarGetValues widgetHandle variable variable2 vari-
able3 variable4
XmScrollBarSetValues widgetHandle value sliderSize increment
pageIncrement notifyFlag
The notifyFlag operand can be set to either True or
False.
XmScrollVisible widgetHandle widgetHandle leftRightMargin
topBottomMargin
XmSelectionBoxGetChild variable widgetHandle childType
The childType operand is one of the strings:
DIALOG_CANCEL_BUTTON
DIALOG_DEFAULT_BUTTON
DIALOG_HELP_BUTTON
DIALOG_APPLY_BUTTON
DIALOG_LIST
DIALOG_LIST_LABEL
DIALOG_OK_BUTTON
DIALOG_SELECTION_LABEL
DIALOG_SEPARATOR
DIALOG_TEXT
DIALOG_WORK_AREA
XmTextClearSelection widgetHandle time
The time operand is typically either obtained from within
an XEvent, or from a call to the XtLastTimestampProcessed
command.
Unix System LaboratoLast change: 1 August 1995 23
dtksh(1) USER COMMANDS dtksh(1)
XmTextCopy widgetHandle time
The time operand is typically either obtained from within
an XEvent, or from a call to the XtLastTimestampProcessed
command. The command returns a value that can be used in
a conditional.
XmTextCut widgetHandle time
The time operand is typically either obtained from within
an XEvent, or from a call to the XtLastTimestampProcessed
command. The command returns a value that can be used in
a conditional.
XmTextDisableRedisplay widgetHandle
XmTextEnableDisplay widgetHandle
XmTextFindString widgetHandle startPosition string direction
variable
The direction operand is one of the strings TEXT_FORWARD
or TEXT_BACKWARD. The command returns a value that can
be used in a conditional.
XmTextGetBaseline variable widgetHandle
XmTextGetEditable widgetHandle
The command returns a value that can be used in a condi-
tional.
XmTextGetInsertionPosition variable widgetHandle
XmTextGetLastPosition variable widgetHandle
XmTextGetMaxLength variable widgetHandle
XmTextGetSelection variable widgetHandle
XmTextGetSelectionPosition widgetHandle variable variable2
The command returns a value that can be used in a condi-
tional.
XmTextGetString variable widgetHandle
XmTextGetTopCharacter variable widgetHandle
XmTextInsert widgetHandle position string
Unix System LaboratoLast change: 1 August 1995 24
dtksh(1) USER COMMANDS dtksh(1)
XmTextPaste widgetHandle
The command returns a value that can be used in a condi-
tional.
XmTextPosToXY widgetHandle position variable variable2
The command returns a value that can be used in a condi-
tional.
XmTextRemove widgetHandle
The command returns a value that can be used in a condi-
tional.
XmTextReplace widgetHandle fromPosition toPosition string
XmTextScroll widgetHandle lines
XmTextSetAddMode widgetHandle state
The state operand can be set to either True or False.
XmTextSetEditable widgetHandle editableFlag
The editableFlag operand can be set to either True or
False.
XmTextSetHighlight widgetHandle leftPosition rightPosition
mode
The mode operand is one of the strings:
HIGHLIGHT_NORMAL
HIGHLIGHT_SELECTED
HIGHLIGHT_SECONDARY_SELECTED
XmTextSetInsertionPosition widgetHandle position
XmTextSetMaxLength widgetHandle maxLength
XmTextSetSelection widgetHandle firstPosition lastPosition
time
The time operand is typically either obtained from within
an XEvent, or from a call to the XtLastTimestampProcessed
command.
XmTextSetString widgetHandle string
XmTextSetTopCharacter widgetHandle topCharacterPosition
Unix System LaboratoLast change: 1 August 1995 25
dtksh(1) USER COMMANDS dtksh(1)
XmTextShowPosition widgetHandle position
XmTextXYToPos variable widgetHandle x y
XmTextFieldClearSelection widgetHandle time
The time operand is typically either obtained from within
an XEvent, or from a call to the XtLastTimestampProcessed
command.
XmTextFieldGetBaseline variable widgetHandle
XmTextFieldGetEditable widgetHandle
The command returns a value that can be used in a condi-
tional.
XmTextFieldGetInsertionPosition variable widgetHandle
XmTextFieldGetLastPosition variable widgetHandle
XmTextFieldGetMaxLength variable widgetHandle
XmTextFieldGetSelection variable widgetHandle
XmTextFieldGetSelectionPosition widgetHandle variable vari-
able2
The command returns a value that can be used in a condi-
tional.
XmTextFieldGetString variable widgetHandle
XmTextFieldInsert widgetHandle position string
XmTextFieldPosToXY widgetHandle position variable variable2
The command returns a value that can be used in a condi-
tional.
XmTextFieldRemove widgetHandle
The command returns a value that can be used in a condi-
tional.
XmTextFieldReplace widgetHandle fromPosition toPosition
string
XmTextFieldSetEditable widgetHandle editableFlag
The editableFlag operand can be set to either True or
False.
Unix System LaboratoLast change: 1 August 1995 26
dtksh(1) USER COMMANDS dtksh(1)
XmTextFieldSetHighlight widgetHandle leftPosition rightPosi-
tion mode
The mode operand is one of the strings:
HIGHLIGHT_NORMAL
HIGHLIGHT_SELECTED
HIGHLIGHT_SECONDARY_SELECTED
XmTextFieldSetInsertionPosition widgetHandle position
XmTextFieldSetMaxLength widgetHandle maxLength
XmTextFieldSetSelection widgetHandle firstPosition lastPosi-
tion time
The time operand is typically either obtained from within
an XEvent, or from a call to the XtLastTimestampProcessed
command.
XmTextFieldSetString widgetHandle string
XmTextFieldShowPosition widgetHandle position
XmTextFieldXYToPos variable widgetHandle x y
XmTextFieldCopy widgetHandle time
The time operand is typically either obtained from within
an XEvent, or from a call to the XtLastTimestampProcessed
command. The command returns a value that can be used in
a conditional.
XmTextFieldCut widgetHandle time
The time operand is typically either obtained from within
an XEvent or from a call to the XtLastTimestampProcessed
command. The command returns a value that can be used in
a conditional.
XmTextFieldPaste widgetHandle
The command returns a value that can be used in a condi-
tional.
XmTextFieldSetAddMode widgetHandle state
The state operand can be set to either True or False.
XmToggleButtonGadgetGetState widgetHandle
Unix System LaboratoLast change: 1 August 1995 27
dtksh(1) USER COMMANDS dtksh(1)
The command returns a value that can be used in a condi-
tional.
XmToggleButtonGadgetSetState widgetHandle state notifyFlag
The state operand can be set to either True or False.
The notifyFlag operand can be set to either True or
False.
XmToggleButtonGetState widgetHandle
The command returns a value that can be used in a condi-
tional.
XmToggleButtonSetState widgetHandle state notifyFlag
The state operand can be set to either True or False.
The notifyFlag operand can be set to either True or
False.
XmUpdateDisplay widgetHandle
Built-in TED Application Help Commands
DtCreateHelpQuickDialog variable parentWidgetHandle name
[resource:value ...]
DtCreateHelpDialog variable parentWidgetHandle name
[resource:value ...]
DtHelpQuickDialogGetChild variable widgetHandle childType
The childType operand is one of the strings:
HELP_QUICK_OK_BUTTON
HELP_QUICK_PRINT_BUTTON
HELP_QUICK_HELP_BUTTON
HELP_QUICK_SEPARATOR
HELP_QUICK_MORE_BUTTON
HELP_QUICK_BACK_BUTTON
DtHelpReturnSelectedWidgetId variable widgetHandle variable2
The variable operand is set to one of the strings:
HELP_SELECT_VALID
HELP_SELECT_INVALID
HELP_SELECT_ABORT
HELP_SELECT_ERROR
and variable2 is set to the widgetHandle for the selected
widget.
Unix System LaboratoLast change: 1 August 1995 28
dtksh(1) USER COMMANDS dtksh(1)
DtHelpSetCatalogName catalogName
Built-in Localization Commands
catopen variable catalogName
Opens the indicated message catalog, and returns the
catalog ID in the environment variable specified by vari-
able. If a shell script needs to close the file descrip-
tor associated with a message catalog, the catalog ID
must be closed using the catclose command.
catgets variable catalogId setNumber messageNumber default-
MessageString
Attempts to extract the requested message string from the
message catalog associated with the catalogId argument.
If the message string cannot be located, the default mes-
sage string is returned. In either case, the returned
message string is placed into the environment variable
indicated by variable.
catclose catalogId
Closes the message catalog associated with the indicated
catalogId.
Built-in Session Management Commands
DtSessionRestorePath widgetHandle variable sessionFile
Given the filename for the session file (excluding any
path information), this command returns the full pathname
for the session file in the environment variable indi-
cated by variable. The command returns a value that can
be used in a conditional, indicating whether the command
succeeded.
DtSessionSavePath widgetHandle variable variable2
The full pathname for the session file is returned in
environment variable indicated by variable. The filename
portion of the session file (excluding any path informa-
tion) is returned in the environment variable indicated
by variable2. The command returns a value that can be
used in a conditional, indicating whether the command
succeeded.
DtShellIsIconified widgetHandle
The command returns a value that can be used in a condi-
tional.
Unix System LaboratoLast change: 1 August 1995 29
dtksh(1) USER COMMANDS dtksh(1)
DtSetStartupCommand widgetHandle commandString
Part of the session management process is telling the
session manager how to restart the application the next
time the user reopens the session. This command passes
along the specified command string to the session
manager. The widget handle should refer to an applica-
tion shell.
DtSetIconifyHint widgetHandle iconifyHint
The iconifyHint operand can be set to either True or
False. This command sets the initial iconified state for
a shell window. This command only works if the window
associated with the widget has not yet been realized.
Built-in Workspace Management Commands
DtWsmAddCurrentWorkspaceCallback variable widgetHandle
dtksh-command
This command evaluates the specified dtksh command when-
ever the user changes workspaces. The handle associated
with this callback is returned in the environment vari-
able indicated by variable. The widget indicated by
widgetHandle should be a shell widget.
DtWsmRemoveWorkspaceCallback callback-handle
The callback-handle must be a handle that was returned by
DtWsmAddCurrentWorkspaceCallback.
DtWsmGetCurrentWorkspace display rootWindow variable
This command returns the X atom representing the user's
current workspace in the environment variable indicated
by variable. The XmGetAtomName command maps the X atom
into its string representation.
DtWsmSetCurrentWorkspace widgetHandle workspaceNameAtom
This command changes the user's current workspace to the
workspace indicated by workspaceNameAtom. The command
returns a value that can be used in a conditional, indi-
cating whether the command succeeded.
DtWsmGetWorkspaceList display rootWindow variable
This command returns in variable a string of comma-
separated X atoms, representing the current set of
workspaces defined for the user. The command returns a
value that can be used in a conditional, indicating
whether the command succeeded.
Unix System LaboratoLast change: 1 August 1995 30
dtksh(1) USER COMMANDS dtksh(1)
DtWsmGetWorkspacesOccupied display window variable
This command returns a string of comma-separated X atoms,
representing the current set of workspaces occupied by
the indicated shell window in the environment variable
indicated by variable. The command returns a value that
can be used in a conditional, indicating whether the com-
mand succeeded.
DtWsmSetWorkspacesOccupied display window workspaceList
This command moves the indicated shell window to the set
of workspaces indicated by the string workspaceList,
which must be a comma-separated list of X atoms.
DtWsmAddWorkspaceFunctions display window
DtWsmRemoveWorkspaceFunctions display window
DtWsmOccupyAllWorkspaces display window
DtWsmGetCurrentBackdropWindows display rootWindow variable
This command returns in variable a string of comma-
separated window IDs representing the set of root back-
drop windows.
Built-in Action Commands
The set of commands in this section provides the programmer
with the tools for loading the action databases, querying
information about actions defined in the databases, and
requesting that an action be initiated.
DtDbLoad
This command reads in the action and data types data-
bases. It must be called before any of the other Action
or Data Typing Commands. The shell script should also
use the DtDbReloadNotify command so that the shell script
can be notified if new databases must be loaded.
DtDbReloadNotify dtksh-command
The specified dtksh command is executed when the notifi-
cation is received. Typically, the dtksh command
includes a call to the DtDbLoad command.
DtActionExists actionName
The command returns a value that can be used in a condi-
tional.
Unix System LaboratoLast change: 1 August 1995 31
dtksh(1) USER COMMANDS dtksh(1)
DtActionLabel variable actionName
If the action does not exist, then an empty string is
returned.
DtActionDescription variable actionName
This command returns an empty string if the action is not
defined, or if the DESCRIPTION attribute is not speci-
fied.
DtActionInvoke widgetHandle actionName termOpts execHost
contextDir useIndicator dtksh-command [FILE fileName] ...
The [FILE fileName] couplets can be used to specify file
arguments to be used by DtActionInvoke when invoking the
specified action. The dtksh-command argument is not sup-
ported in TED, and should be specified as a null ("")
value.
Built-in Data Typing Commands
DtDtsLoadDataTypes
This command should be invoked before any of the other
data typing commands.
DtDtsFileToDataType variable filePath
This command returns the name of the data type associated
with the file indicated by the filePath argument in the
variable argument. The variable argument is set to an
empty string if the file cannot be typed.
DtDtsFileToAttributeValue variable filePath attrName
This command returns the string representing the value of
the specified attribute for the data type associated with
the indicated file in the variable argument. If the
attribute is not defined, or if the file cannot be typed,
the variable argument is set to an empty string.
DtDtsFileToAttributeList variable filePath
This command returns the space-separated list of attri-
bute names defined for the data type associated with the
indicated file in the variable argument. A shell script
queries the individual values for the attributes using
the DtDtsFileToAttributeValue command. The variable
argument is set to an empty string if the file cannot be
typed. This command differs from the corresponding C
function in that it only returns the names of the defined
attributes and not their values.
Unix System LaboratoLast change: 1 August 1995 32
dtksh(1) USER COMMANDS dtksh(1)
DtDtsDataTypeToAttributeValue variable dataType attrName
optName
This command returns the string representing the value of
the specified attribute for the indicated data type in
variable. If the attribute is not defined, or if the
indicated data type does not exist, the variable argument
is set to an empty string.
DtDtsDataTypeToAttributeList variable dataType optName
This command returns the space-separated list of attri-
bute names defined for the indicated data type in vari-
able. A shell script queries the individual values for
the attributes using the DtDtsDataTypeToAttributeValue
command. The variable argument is set to an empty string
if the data type is not defined. This command differs
from the corresponding C function in that it only returns
the names of the defined attributes, and not their
values.
DtDtsFindAttribute variable name value
This command returns a space-separated list of data type
names whose attribute, indicated by the name argument,
has the value indicated by the value argument. If an
error occurs, the variable argument is set to an empty
string.
DtDtsDataTypeNames variable
This command returns a space-separated list representing
all of the data types currently defined in the data types
database. If an error occurs, the variable argument is
set to an empty string.
DtDtsSetDataType variable filePath dataType override
The variable argument is set to the resultant saved data
type for the directory.
DtDtsDataTypeIsAction dataType
The command returns a value that can be used in a condi-
tional.
Built-in TED Desktop Services Message Set Commands
The following set of commands implement a subset of the
Desktop Services Message Set, allowing shell script partici-
pation in the Desktop Services protocol. Many of the Tool-
Talk commands differ slightly from their associated C pro-
gramming call. For ToolTalk commands that typically return
Unix System LaboratoLast change: 1 August 1995 33
dtksh(1) USER COMMANDS dtksh(1)
a pointer, a C application can validate that pointer by cal-
ling the tt_ptr_error() function; this C function call
returns a Tt_status value, which indicates whether the
pointer was valid, and if not, why it was not. In dtksh,
all of the Desktop Services Message Set Commands that return
a pointer also return the associated Tt_status value for the
pointer automatically; this saves the shell script from
needing to make an additional call to check the validity of
the original pointer. In the case of a pointer error occur-
ring, dtksh returns an empty string for the pointer value,
and sets the Tt_status code accordingly. The Tt_status
value is returned in the status argument. The Tt_status
value is a string representing the error, and can assume any
of the values shown in the manual page for <Tt/tt_c.h>.
Some of the commands take a message scope as an argument.
For these commands, the scope argument can be set to a
string representing any of the constants documented for
tt_message_scope(1), and in the manual pages for the indivi-
dual ToolTalk functions.
tt_file_netfile variable status file name
tt_netfile_file variable status netfile name
tt_host_file_netfile variable status host file name
tt_host_netfile_file variable status host netfile name
ttdt_open variable status variable2 toolname vendor version
sendStarted
This command returns in the variable argument the procId
associated with the connection. It returns the file
descriptor associated with the connection in variable2;
this file descriptor can be used in registering an alter-
native Xt input handler via the XtAddInput command. The
sendStarted argument is True or False. Any procIds
returned by ttdt_open contain embedded spaces. To
prevent dtksh from interpreting the procId as multiple
arguments (versus a single argument with embedded
spaces), references to the environment variable contain-
ing the procId must be within double quotes, as shown:
ttdt_close STATUS "$PROC_ID" "" True
tttk_Xt_input_handler procId source id
In order for the ToolTalk messages to be received and
processed, the shell script must register an Xt input
handler for the file descriptor returned by the call to
ttdt_open. The Xt input handler is registered using the
Unix System LaboratoLast change: 1 August 1995 34
dtksh(1) USER COMMANDS dtksh(1)
XtAddInput command, and the handler must be registered as
a raw input handler. The input handler that the shell
script registers should invoke tttk_Xt_input_handler to
get the message received and processed. The following
code block demonstrates how this is done:
ttdt_open PROC_ID STATUS FID "Tool" "HP" "1.0" True
XtAddInput INPUT_ID -r $FID "ProcessTTInput \"$PROC_ID\""
ProcessTTInput()
{
tttk_Xt_input_handler $1 $INPUT_SOURCE $INPUT_ID
}
Refer to the description of the XtAddInput command
for more details about alternative Xt input
handlers. This command can be specified as an
alternative Xt input handler, using the XtAddInput
command. The procId value should be that which was
returned by the ttdt_open command. When register-
ing tttk_Xt_input_handler as an alternative Xt
input handler, it must be registered as a raw
handler to prevent dtksh from automatically break-
ing up the input into lines. This can be done as
follows:
XtAddInput returnId -r $tt_fd \
"tttk_Xt_input_handler \"$procId\""
The \" characters before and after the reference to
the procId environment variable are necessary to
protect the embedded spaces in the procId environ-
ment variable.
ttdt_close status procId newProcId sendStopped
This command closes the indicated communications connec-
tion, and optionally sends a Stopped notice, if the
sendStopped argument is set to True. Because the procId
returned by the call to ttdt_open contains embedded
spaces, it must be enclosed within double quotes, as
shown:
ttdt_close STATUS "$PROC_ID" "$NEW_PROC_ID" False
ttdt_session_join variable status sessId shellWidgetHandle
join
This command joins the session indicated by the sessId
argument. If the sessId argument does not specify a
value (that is, it is an empty string), then the default
session is joined. If the shellWidgetHandle argument
specifies a widget handle (that is, it is not an empty
Unix System LaboratoLast change: 1 August 1995 35
dtksh(1) USER COMMANDS dtksh(1)
string), then it should refer to a mappedWhenManaged
applicationShellWidget. The join argument is True or
False. This command returns an opaque pattern handle in
the variable argument; this handle can be destroyed using
the ttdt_session_quit command when it is no longer
needed.
ttdt_session_quit status sessId sessPatterns quit
This command destroys the message patterns specified by
the sessPatterns argument, and, if the quit argument is
set to True, it quits the session indicated by the sessId
argument, or it quits the default session if sessId is
empty.
ttdt_file_join variable status pathName scope join dtksh-
command
An opaque pattern handle is returned in the variable
argument; this should be destroyed by calling
ttdt_file_quit when there is no interest in monitoring
messages for the indicated file. The requested dtksh-
command is evaluated any time a message is received for
the indicated file. When this dtksh-command is
evaluated, the following environment variables are
defined, and provide additional information about the
received message:
DT_TT_MSG
The opaque handle for the incoming mes-
sage.
DT_TT_OP
The string representing the operation to
be performed; that is, TTDT_DELETED,
TTDT_MODIFIED, TTDT_REVERTED, TTDT_MOVED
or TTDT_SAVED.
DT_TT_PATHNAME
The pathname for the file to which this
message pertains.
DT_TT_SAME_EUID_EGID
Set to True if the message was sent by an
application operating with the same effec-
tive user ID and effective group ID as
this process.
DT_TT_SAME_PROCID
Set to True if the message was sent by an
application with the same procId (as
returned by ttdt_open).
Unix System LaboratoLast change: 1 August 1995 36
dtksh(1) USER COMMANDS dtksh(1)
When the callback completes, it must indicate
whether the passed-in message was consumed
(replied-to, failed or rejected). If the callback
returns the message (as passed in the DT_TT_MSG
environment variable), it is assumed that the mes-
sage was not consumed. If the message was con-
sumed, the callback should return zero, or one of
the values returned by the tt_error_pointer com-
mand. The callback can return its value in the
following fashion:
return $DT_TT_MSG (or) return 0
ttdt_file_quit status patterns quit
This command destroys the message patterns specified by
the patterns argument, and also unregisters interest in
the pathname that was passed to the ttdt_file_join com-
mand if quit is set to True; the patterns argument should
be the value returned by a call to the ttdt_file_join
command.
ttdt_file_event status op patterns send
This command creates, and optionally sends, a ToolTalk
notice announcing an event pertaining to a file. The
file is indicated by the pathname passed to the
ttdt_file_join command when patterns was created. The op
argument indicates what should be announced for the indi-
cated file, and can be set to TTDT_MODIFIED, TTDT_SAVED
or TTDT_REVERTED. If op is set to TTDT_MODIFIED, this
command registers to handle Get_Modified, Save and Revert
messages in the scope specified when the patterns was
created. If op is set to TTDT_SAVED or TTDT_REVERTED,
this command unregisters from handling Get_Modified, Save
and Revert messages for this file. If the send argument
is set to True, the indicated message is sent.
ttdt_Get_Modified pathName scope timeout
This commands sends a Get_Modified request in the indi-
cated scope, and waits for a reply, or for the specified
timeout (in milliseconds) to elapse. It returns a value
that can be used in a conditional. A value of True is
returned if an affirmative reply is received within the
specified timeout; otherwise, False is returned.
ttdt_Save status pathName scope timeout
This command sends a Save request in the indicated scope,
and waits for a reply, or for the indicated timeout (in
milliseconds) to elapse. A status of TT_OK is returned
Unix System LaboratoLast change: 1 August 1995 37
dtksh(1) USER COMMANDS dtksh(1)
if an affirmative reply is received before the timeout
elapses; otherwise, a Tt_status error value is returned.
ttdt_Revert status pathName scope timeout
This command sends a Revert request in the indicated
scope, and waits for a reply, or for the indicated
timeout (in milliseconds) to elapse. A status of TT_OK
is returned if an affirmative reply is received before
the timeout elapses; otherwise, a Tt_status error value
is returned.
The following commands are typically used by the callback
registered with the ttdt_file_join command. They serve as
the mechanism for consuming and destroying a message. A
message is consumed by either rejecting, failing or replying
to it. The tt_error_pointer is used by the callback to get
a return pointer for indicating an error condition.
tt_error_pointer variable ttStatus
This command returns a magic value, which is used by
ToolTalk to represent an invalid pointer. The magic
value returned depends on the ttStatus value passed in.
Any of the valid Tt_status values can be specified.
tttk_message_destroy status msg
This command destroys any patterns that may have been
stored on the message indicated by the msg argument, and
then it destroys the message.
tttk_message_reject status msg msgStatus msgStatusString
destroy
This command sets the status and the status string for
the indicated request message, and then rejects the mes-
sage. It then destroys the passed-in message if the des-
troy argument is set to True. This command is one way in
which the callback specified with the ttdt_file_join com-
mand consumes a message. After rejecting the message, it
is typically safe to destroy the message using
tttk_message_destroy.
tttk_message_fail status msg msgStatus msgStatusString des-
troy
This command sets the status and the status string for
the indicated request message, and then it fails the mes-
sage. It destroys the passed-in message if the destroy
argument is set to True. This command is one way in
which the callback specified with the ttdt_file_join
Unix System LaboratoLast change: 1 August 1995 38
dtksh(1) USER COMMANDS dtksh(1)
command consumes a message. After failing the message,
it is typically safe to destroy the message, using
tttk_message_destroy.
tt_message_reply status msg
This command informs the ToolTalk service that the shell
script has handled the message specified by the msg argu-
ment. After replying to a message, it is typically safe
to destroy the message using the tttk_message_destroy
command.
Listing Widget Information
The DtWidgetInfo command provides the shell programmer a
mechanism for obtaining information about the current set of
instantiated widgets and their resources; the information is
written to the standard output. This provides useful debug-
ging information by including:
o The list of instantiated widgets, including: the
name, class and parent of the widget; a handle for the
widget; the name of the environment variable supplied
when the widget was created; the state of the widget.
o The list of resources supported by a particular widget
class.
o The list of constraint resources supported by a par-
ticular widget class.
DtWidgetInfo is called by using any of the following syn-
taxes; all of the arguments are optional:
DtWidgetInfo [widgetHandle | widgetName]
If no arguments are supplied, information about all
existing widgets is written to standard output; the
information includes the name, the handle, the environ-
ment variable, the parent, the widget class and the
state. If arguments are supplied, they should be either
widget handles, or the names of existing widgets; in this
case, the information is written only for the requested
set of widgets.
DtWidgetInfo -r [widgetHandle | widgetClass]
If no arguments are supplied, the list of supported
resources is written to standard output for all available
widget classes. If arguments are supplied, they should
be either widget handles, or the widget class names; in
this case, the information is written only for the
requested set of widgets or widget classes.
Unix System LaboratoLast change: 1 August 1995 39
dtksh(1) USER COMMANDS dtksh(1)
DtWidgetInfo -R [widgetHandle | widgetClass]
If no arguments are supplied, the list of supported con-
straint resources, if any, is written to standard output
for all available widget classes. If arguments are sup-
plied, they should be either widget handles, or the
widget class names; in this case, the information is
written only for the requested set of widgets or widget
classes.
DtWidgetInfo -c [widgetClass]
If no arguments are supplied, the list of supported
widget class names is written to standard output. If
arguments are supplied, dtksh writes the widget class
name (if it is defined); otherwise, it writes an error
message to standard error.
DtWidgetInfo -h [widgetHandle]
If no arguments are supplied, the list of active widget
handles is written to standard output. If arguments are
supplied, they should represent widget handles, in which
case the name of the associated widget is written to
standard output.
Convenience Functions
The TED system includes a file of dtksh convenience func-
tions. This file is itself a shell script containing shell
functions that may be useful to a shell programmer. The
shell functions perform frequently used operations. These
include functions for quickly creating certain kinds of dia-
logs (help, error, warning and so on), and a function for
easily creating a collection of buttons and functions that
make it easier to configure the constraint resources for a
child of a form widget. It is not a requirement that shell
script writers use these convenience functions; they are
supplied to make it easier for developers to write shorter
and more readable shell scripts.
Before a shell script can access these functions, the shell
script must first include the file containing the conveni-
ence functions. The convenience functions are located in
the file /usr/dt/lib/dtksh/DtFuncs.dtsh, and are included in
a shell script using the following notation:
. /usr/dt/lib/dtksh/DtFuncs.dtsh
DtkshAddButtons
This convenience function adds one or more buttons of the
same kind into a composite widget. Most frequently, it is
used to add a collection of buttons into a menupane or
Unix System LaboratoLast change: 1 August 1995 40
dtksh(1) USER COMMANDS dtksh(1)
menubar.
DtkshAddButtons parent widgetClass label1 callback1 [label2
callback2 ...]
DtkshAddButtons [-w] parent widgetClass variable1 label1
callback1 [variable2 label2 callback2 ...]
The -w option indicates that the convenience function should
return the widget handle for each of the buttons it creates.
The widget handle is returned in the specified environment
variable. The widgetClass argument can be set to any one of
the following, and defaults to XmPushButtonGadget, if not
specified:
XmPushButton
XmPushButtonGadget
XmToggleButton
XmToggleButtonGadget
XmCascadeButton
XmCascadeButtonGadget
Examples:
DtkshAddButtons $MENU XmPushButtonGadget Open do_Open Save \
do_Save Quit exit
DtkshAddButtons -w $MENU XmPushButtonGadget B1 Open \
do_Open B2 Save do_Save
DtkshSetReturnKeyControls
This convenience function configures a text widget (within a
form widget), so the <carriage-return> key does not activate
the default button within the form. Instead, the
<carriage-return> key moves the focus to the next text
widget within the form. This is useful if a window, con-
taining a series of text widgets and the default button,
should not be activated until the user presses the
<carriage-return> key while the focus is in the last text
widget.
DtkshSetReturnKeyControls textWidget nextTextWidget
formWidget defaultButton
The textWidget argument specifies the widget to be config-
ured so it catches the <carriage-return> key, and forces the
focus to move to the next text widget (as indicated by the
nextTextWidget argument). The formWidget argument specifies
the form containing the default button, and must be the
parent of the two text widgets. The defaultButton argument
indicates which component to treat as the default button
within the form widget.
Unix System LaboratoLast change: 1 August 1995 41
dtksh(1) USER COMMANDS dtksh(1)
Examples:
DtkshSetReturnKeyControls $TEXT1 $TEXT2 $FORM $OK
DtkshSetReturnKeyControls $TEXT2 $TEXT3 $FORM $OK
DtkshUnder, DtkshOver, DtkshRightOf, DtkshLeftOf
These convenience functions simplify the specification of
certain classes of form constraints. They provide a con-
venient way of attaching a component to one edge of another
component. They are used when constructing the resource
list for a widget. This behavior is accomplished using the
ATTACH_WIDGET constraint.
DtkshUnder widgetId [offset]
DtkshOver widgetId [offset]
DtkshRightOf widgetId [offset]
DtkshLeftOf widgetId [offset]
The widgetId argument specifies the widget to which the
current component is to be attached. The offset value is
optional, and defaults to zero, if not specified.
Example:
XtCreateManagedWidget BUTTON4 button4 pushButton $FORM \
labelString:"Exit" $(DtkshUnder $BUTTON2) \
$(DtkshRightOf $BUTTON3)
DtkshFloatRight, DtkshFloatLeft, DtkshFloatTop, DtkshFloatBot-
tom
These convenience functions simplify the specification of
certain classes of form constraints. They provide a con-
venient way of positioning a component, independent of the
other components within the form. As the form grows or
shrinks, the component maintains its relative position
within the form. The component may still grow or shrink,
depending on the other form constraints specified for the
component. This behavior is accomplished using the
ATTACH_POSITION constraint.
DtkshFloatRight [position]
DtkshFloatLeft [position]
DtkshFloatTop [position]
DtkshFloatBottom [position]
Unix System LaboratoLast change: 1 August 1995 42
dtksh(1) USER COMMANDS dtksh(1)
The optional position argument specifies the relative posi-
tion to which the indicated edge of the component is posi-
tioned. A default position is used, if one is not speci-
fied.
Example:
XtCreateManagedWidgetBUTTON1 button1 pushButton \
$FORM labelString:"Ok" $(DtkshUnder $SEPARATOR) \
$(DtkshFloatLeft 10) $(DtkshFloatRight 40)
DtkshAnchorRight, DtkshAnchorLeft, DtkshAnchorTop, DtkshAnchor-
Bottom
These convenience functions simplify the specification of
certain classes of form constraints. They provide a con-
venient way of attaching a component to one of the edges of
a form widget in such a fashion that, as the form grows or
shrinks, the component's position does not change. However,
depending on the other form constraints set on this com-
ponent, the component may still grow or shrink in size.
This behavior is accomplished using the ATTACH_FORM con-
straint.
DtkshAnchorRight [offset]
DtkshAnchorLeft [offset]
DtkshAnchorTop [offset]
DtkshAnchorBottom [offset]
The optional offset argument specifies how far from the edge
of the form widget the component should be positioned. If
an offset is not specified, zero is used.
Example:
XtCreateManagedWidget BUTTON1 button1 pushButton \
$FORM labelString:"Ok" $(DtkshUnder $SEPARATOR) \
$(DtkshAnchorLeft 10) $(DtkshAnchorBottom 10)
DtkshSpanWidth, DtkshSpanHeight
These convenience functions simplify the specification of
certain classes of form constraints. They provide a con-
venient way of configuring a component such that it spans
either the full height or width of the form widget. This
behavior is accomplished by attaching two edges of the com-
ponent (top and bottom for DtkshSpanHeight, and left and
right for DtkshSpanWidth) to the form widget. The component
typically resizes whenever the form widget is resized. The
ATTACH_FORM constraint is used for all attachments.
Unix System LaboratoLast change: 1 August 1995 43
dtksh(1) USER COMMANDS dtksh(1)
DtkshSpanWidth [leftOffset rightOffset]
DtkshSpanHeight [topOffset bottomOffset]
The optional offset arguments specify how far from the edges
of the form widget the component should be positioned. If
an offset is not specified, zero is used.
Example:
XtCreateManagedWidget SEP sep separator $FORM $(DtkshSpanWidth 1 1)
DtkshDisplayInformationDialog, DtkshDisplayQuestionDialog,
DtkshDisplayWarningDialog, DtkshDisplayWorkingDialog,
DtkshDisplayErrorDialog
These convenience functions create a single instance of each
of the Motif feedback dialogs. If an instance of the
requested type of dialog already exists, it is reused. The
parent of the dialog is obtained from the environment vari-
able, TOPLEVEL, which should be set by the calling shell
script, and then should not be changed. The handle for the
requested dialog is returned in one of the following
environment variables:
DTKSH_ERROR_DIALOG_HANDLE
DTKSH_QUESTION_DIALOG_HANDLE
DTKSH_WORKING_DIALOG_HANDLE
DTKSH_WARNING_DIALOG_HANDLE
DTKSH_INFORMATION_DIALOG_HANDLE
When attaching callbacks to the dialog buttons, the applica-
tion should not destroy the dialog; it should simply
unmanage the dialog so that it can be used again later. If
it is necessary to destroy the dialog, the associated
environment variable should also be cleared, so the conveni-
ence function does not attempt to reuse the dialog.
DtkshDisplay*Dialog title message [okCallback closeCallback
\ helpCallback dialogStyle]
The Ok button is always managed, and by default unmanages
the dialog. The Cancel and Help buttons are only managed
when a callback is supplied for them. The dialogStyle argu-
ment accepts any of the standard resource settings supported
by the associated bulletin board resource.
Example:
DtkshDisplayErrorDialog "Read Error" "Unable to read the file" \
"OkCallback" "CancelCallback" "" DIALOG_PRIMARY_APPLICATION_MODAL
Unix System LaboratoLast change: 1 August 1995 44
dtksh(1) USER COMMANDS dtksh(1)
DtkshDisplayQuickHelpDialog, DtkshDisplayHelpDialog
These convenience functions create a single instance of each
of the help dialogs. If an instance of the requested type
of help dialog already exists, it is reused. The parent of
the dialog is obtained from the environment variable,
TOPLEVEL, which should be set by the calling shell script,
and then should not be changed. The handle for the
requested dialog is returned in one of the following
environment variables:
DTKSH_HELP_DIALOG_HANDLE
DTKSH_QUICK_HELP_DIALOG_HANDLE
If it is necessary to destroy a help dialog, the application
should also clear the associated environment variable, so
that the convenience function does not attempt to reuse the
dialog.
DtkshDisplay*HelpDialog title helpType helpInformation
[locationId]
The meaning of the arguments depends on the value specified
for the helpType argument. The meanings are explained in
the following table:
helpType helpInformation locationId
____________________________________________________________________
HELP_TYPE_DYNAMIC_STRING help string <not used>
HELP_TYPE_FILE help file name <not used>
HELP_TYPE_MAN_PAGE manual page name <not used>
HELP_TYPE_STRING help string <not used>
HELP_TYPE_TOPIC help volume name help topic location ID
____________________________________________________________________
Example:
DtkshDisplayHelpDialog "Help On Dtksh" HELP_TYPE_FILE "helpFileName"
Dtksh App-Defaults File
The dtksh app-defaults file, named dtksh, is in a location
based on the following path description:
/usr/dt/app-defaults/<LANG>
The only information contained in this app-defaults file is
the inclusion of the standard desktop base app-defaults
file. The contents of the dtksh app-defaults file is as
follows:
#include "Dt"
Non-String Values
The C bindings of the interfaces to X, Xt and Motif include
Unix System LaboratoLast change: 1 August 1995 45
dtksh(1) USER COMMANDS dtksh(1)
many non-string values defined in headers. For example, the
constraint values for a child of a form widget are declared,
such as XmATTACH_FORM, with an Xt or Xm prefix followed by a
descriptive name. Equivalent values are specified in dtksh
by omitting the prefix, just as in an app-defaults file.
For example: XmDIALOG_COMMAND_TEXT becomes
DIALOG_COMMAND_TEXT; XtATTACH_FORM becomes ATTACH_FORM.
A Boolean value can be specified as an argument to a dtksh
command using the words True or False; case is not signifi-
cant.
Return Values From Built-in Commands
Graphical commands in dtksh fall into one of four
categories, based on the definition of the corresponding C
function in a windowing library:
1. The function returns no values. Example:
XtMapWidget.
2. The function is void, but returns one or more values
through reference arguments. Example: XmGetColors.
3. The function returns a non-Boolean value. Example:
XtCreateManagedWidget.
4. The function returns a Boolean value. Example:
XtIsSensitive.
A category 1 command follows the calling sequence of its
corresponding C function exactly; the number and order of
arguments can be determined by looking at the standard docu-
mentation for the function. Example:
XtMapWidget $FORM
A category 2 command also generally follows the calling
sequence as its corresponding C function. Where a C caller
would pass in a pointer to a variable in which a value is
returned, the dtksh command returns a value in an environ-
ment variable. Example:
XmGetColors $FORM $BG FOREGROUND TOPSHADOW BOTTOMSHADOW SELECT
echo "Foreground color = " $FOREGROUND
A category 3 command differs slightly from its corresponding
C function. Where the C function returns its value as the
value of the procedure call, a dtksh command requires an
additional argument, which is always the first argument, and
is the name of an environment variable into which the return
value is placed. Example:
Unix System LaboratoLast change: 1 August 1995 46
dtksh(1) USER COMMANDS dtksh(1)
XmTextGetString TEXT_VALUE $TEXT_WIDGET
echo "The value of the text field is "$TEXT_VALUE
A category 4 command returns a Boolean value that can be
used in a conditional expression, just as with the
corresponding C function. If the C function also returns
values through reference variables (as in category 2), the
dtksh command also uses variable names for the corresponding
arguments. Example:
if XmIsTraversable $PUSH_BUTTON; then
echo "The pushbutton is traversable"
else
echo "The pushbutton is not traversable"
fi
Generally, the order and type of arguments passed to a com-
mand matches those passed to the corresponding C function,
except as noted for category 3 commands. Other exceptions
are described in the applicable command descriptions.
Widget Handles
Where a C function returns a widget handle, the correspond-
ing dtksh commands set an environment variable equal to the
widget handle. These are category 3 commands; they take as
one of their arguments the name of an environment variable
in which to return the widget handle. (This is an ASCII
string used by dtksh to access the actual widget pointer.)
For example, either of the following commands could be used
to create a new form widget; in both cases, the widget han-
dle for the new form widget is returned in the environment
variable FORM:
XtCreateManagedWidget FORM name XmForm $PARENT
XmCreateForm FORM $PARENT name
After either of the above commands, $FORM can be used to
reference the form widget. For instance, to create a label
widget within the form widget just created, the following
command could be used:
XmCreateLabel LABEL $FORM namelabelString:"Hi Mom" \
topAttachment:ATTACH_FORM leftAttachment:ATTACH_FORM
There is a special widget handle called NULL, provided for
cases where a shell script may need to specify a NULL
widget. For example, the following disables the defaultBut-
ton resource for a form widget:
XtSetValues $FORM defaultButton:NULL
Unix System LaboratoLast change: 1 August 1995 47
dtksh(1) USER COMMANDS dtksh(1)
Widget Resources
Some of the Xt and Motif commands allow the shell script to
pass in a variable number of arguments, representing
resource and value pairs. This is similar to the arglist
passed in to the corresponding Xt or Motif C function.
Examples of these commands include any of the commands used
to create a widget, and the XtSetValues command. In dtksh,
resources are specified by a string with the following syn-
tax: resource:value.
The name of the resource is given in the resource portion of
the string; it is constructed by taking the corresponding Xt
or Motif resource name and omitting the Xt or Xm prefix.
The value to be assigned to the resource is given in the
value portion of the string. The dtksh utility automati-
cally converts the value string to an appropriate internal
representation. For example:
XtSetValues $WIDGET height:100 width:200 resizePolicy:RESIZE_ANY
XmCreateLabel LABEL $PARENT myLabel labelString:"Close Dialog"
When widget resources are retrieved using XtGetValues, the
return value has the same syntax. For example:
XtGetValues $WIDGET height:HEIGHT resizePolicy:POLICY \
sensitive:SENSITIVE
echo $HEIGHT
echo $POLICY
echo $SENSITIVE
Certain types of resource values have special representa-
tion. These include string tables and bit masks. For
instance, the XmList widget allows a string table to be
specified both for the items and the selectedItems
resources. In dtksh, a string table is represented as a
comma-separated list of strings, which is compatible with
how Motif handles them from a resource file. When a
resource that returns a string table is queried using
XtGetValues(3X), the resulting value is again a comma-
separated set of strings. A resource that expects a bit
mask value to be passed in, expects the mask to be specified
as a string composed of the various mask values separated by
the ``|'' character. When a resource that returns a bit
mask is queried, the return value also is a string
representing the enabled bits, separated by the ``|'' char-
acter. For example, the following sets the mwmFunctions
resource for the VendorShell widget class:
XtSetValues mwmFunctions MWM_FUNC_ALL|MWM_FUNC_RESIZE
Unsupported Resources
The dtksh utility supports most of the resources provided by
Unix System LaboratoLast change: 1 August 1995 48
dtksh(1) USER COMMANDS dtksh(1)
Motif; however, there are certain resources that dtksh does
not support. The list of unsupported resources follows.
Several of these resources can be specified at widget crea-
tion time by using XtSetValues, but cannot be retrieved
using XtGetValues; these are indicated by the asterisk (*)
following the resource name.
All Widget And Gadget Classes:
Any font list resource (*)
Any pixmap resource (*)
Composite:
insertPosition
children
Core:
accelerators
translations (*)
colormap
XmText:
selectionArray
selectionArrayCount
ApplicationShell:
argv
WMShell:
iconWindow
windowGroup
Shell:
createPopupChildrenProc
XmSelectionBox:
textAccelerators
Manager, Primitive and Gadget Subclasses:
userData
XmFileSelectionBox:
dirSearchProc
fileSearchProc
qualifySearchDataProc
EXIT STATUS
See sh(1).
CONSEQUENCES OF ERRORS
See sh(1).
Unix System LaboratoLast change: 1 August 1995 49
dtksh(1) USER COMMANDS dtksh(1)
APPLICATION USAGE
Initializing The Toolkit Environment
Before any of the Xlib, Xt or Motif commands can be invoked,
the shell script must first initialize the Xt toolkit by
invoking the XtInitialize command, which returns an applica-
tion shell widget. XtInitialize, as with all of the com-
mands that return a widget handle, returns the widget handle
in the environment variable named in its first argument.
For example:
XtInitialize TOPLEVEL myShellName Dtksh $0$@
Shell script writers should invoke the XtInitialize command
as one of the first commands within a dtksh shell script.
This allows dtksh to locate its message catalog and the
correct app-defaults file. If a shell error occurs before
XtInitialize has been called, it is possible that unlocal-
ized error messages may be displayed. The dtksh utility
provides a default app-defaults file to use if the call to
XtInitialize specifies an application class name of Dtksh.
This app-defaults file loads in the standard set of desktop
application default values, so that these applications have
a consistent look with other desktop applications.
Responding to a Window Manager Close Notice
When the user selects the Close item on the window manager
menu for an application, the application is terminated
unless it has arranged to catch the Close notification.
Multiple windows managed by the application disappear, and
application data may be left in an undesirable state. To
avoid this, dtksh provides for catching and handling the
Close notification. The application must:
o Define a procedure to handle the Close notification
o Request notification when Close is selected and over-
ride the response, so the application is not shut down
The following code illustrates this processing:
# This is the `callback' invoked when the user selects
# the `Close' menu item
WMCallback()
{
echo "User has selected the Close menu item"
}
# Create the toplevel application shell
XtInitialize TOPLEVEL test Dtksh "$@"
XtDisplay DISPLAY $TOPLEVEL
# Request notification when the user selects the `Close'
# menu item
Unix System LaboratoLast change: 1 August 1995 50
dtksh(1) USER COMMANDS dtksh(1)
XmInternAtom DELETE_ATOM $DISPLAY "WM_DELETE_WINDOW" false
XmAddWMProtocolCallback $TOPLEVEL $DELETE_ATOM "WMCallback"
# Ask Motif to not automatically close down your
# application window
XtSetValues $TOPLEVEL deleteResponse:DO_NOTHING
Responding to a Session Management Save State Notice
Session management facilities allow applications to save
their current state when the user terminates the current
session, so that when the user later restarts the session,
an application returns to the state it was in. In dtksh
this is accomplished by setting up a handler analogously to
handling a Close notification. If no such handler is set
up, the application has to be restarted manually in the new
session, and does not retain any state. To set up a handler
to save state, the application must do the following:
o Define functions to save state at end-of-session, and
restore it on start-up.
o Register interest in the session management notifica-
tion.
o Register the function to save state.
o Determine if saved state should be restored at start-
up.
The following code illustrates this process:
#! /usr/dt/bin/dtksh
# Function invoked when the session is being ended by the user
SessionCallback()
{
# Get the name of the file into which we should save our
# session information
if DtSessionSavePath $TOPLEVEL PATH SAVEFILE; then
exec 9>$PATH
# Save off whether we are currently in an iconified state
if DtShellIsIconified $TOPLEVEL ; then
print -u9 `Iconified'
else
print -u9 `Deiconified'
fi
# Save off the list of workspaces we currently reside in
if DtWsmGetWorkspacesOccupied $(XtDisplay "-" $TOPLEVEL)
$(XtWindow "-" $TOPLEVEL)
CURRENT_WS_LIST ;
then
# Map the comma-separated list of atoms into
# their string representation
Unix System LaboratoLast change: 1 August 1995 51
dtksh(1) USER COMMANDS dtksh(1)
oldIFS=$IFS
IFS=","
for item in $CURRENT_WS_LIST;
do
XmGetAtomName NAME $(XtDisplay "-" $TOPLEVEL)
$item
print -u9 $NAME
done
IFS=$oldIFS
fi
exec 9<&-
# Let the session manager know how to invoke us when
# the session is restored
DtSetStartupCommand $TOPLEVEL
"/usr/dt/contrib/dtksh/SessionTest $SAVEFILE"
else
echo "DtSessionSavePath FAILED!!"
exit -3
fi
}
# Function invoked during a restore session; restores the
# application to its previous state
RestoreSession()
{
# Retrieve the path where our session file resides
if DtSessionRestorePath $TOPLEVEL PATH $1; then
exec 9<$PATH
read -u9 ICONIFY
# Extract and restore our iconified state
case $ICONIFY in
Iconified) DtSetIconifyHint $TOPLEVEL True;;
*) DtSetIconifyHint $TOPLEVEL False;
esac
# Extract the list of workspaces we belong in, convert
# them to atoms, and ask the workspace manager to relocate
# us to those workspaces
WS_LIST=""
while read -u9 NAME
do
XmInternAtom ATOM $(XtDisplay "-" $TOPLEVEL)
$NAME False
if [ ${#WS_LIST} -gt 0 ]; then
WS_LIST=$WS_LIST,$ATOM
else
WS_LIST=$ATOM
fi
done
DtWsmSetWorkspacesOccupied $(XtDisplay "-" $TOPLEVEL)
$(XtWindow "-" $TOPLEVEL) $WS_LIST
Unix System LaboratoLast change: 1 August 1995 52
dtksh(1) USER COMMANDS dtksh(1)
exec 9<&-
else
echo "DtSessionRestorePath FAILED!!"
exit -3
fi
}
################## Create the Main UI #######################
XtInitialize TOPLEVEL wmProtTest Dtksh "$@"
XtCreateManagedWidget DA da XmDrawingArea $TOPLEVEL
XtSetValues $DA height:200 width:200
XmInternAtom SAVE_SESSION_ATOM $(XtDisplay "-" $TOPLEVEL)
"WM_SAVE_YOURSELF" False
# If a command-line argument was supplied, then treat it as the
# name of the session file
if (( $# > 0))
then
# Restore to the state specified in the passed-in session file
XtSetValues $TOPLEVEL mappedWhenManaged:False
XtRealizeWidget $TOPLEVEL
XSync $(XtDisplay "-" $TOPLEVEL) False
RestoreSession $1
XtSetValues $TOPLEVEL mappedWhenManaged:True
XtPopup $TOPLEVEL GrabNone
else
# This is not a session restore, so come up in the default state
XtRealizeWidget $TOPLEVEL
XSync $(XtDisplay "-" $TOPLEVEL) False
fi
# Register the fact that we are interested in participating in
# session management
XmAddWMProtocols $TOPLEVEL $SAVE_SESSION_ATOM
XmAddWMProtocolCallback $TOPLEVEL $SAVE_SESSION_ATOM
SessionCallback
XtMainLoop
Cooperating with WorkSpace Management
The dtksh utility provides access to all of the major
workspace management functions of the desktop libraries,
including functions for:
o Querying and setting the set of workspaces with which
an application is associated.
o Querying the list of all workspaces.
o Querying and setting the current workspace.
o Requesting that an application be notified any time
the user changes to a different workspace.
Unix System LaboratoLast change: 1 August 1995 53
dtksh(1) USER COMMANDS dtksh(1)
From a user's perspective, workspaces are identified by a
set of names, but from the workspace manager's perspective,
workspaces are identified by X atoms. Whenever the shell
script asks for a list of workspace identifiers, a string of
X atoms is returned; if more than one X atom is present, the
list is comma-separated.
The workspace manager expects that the shell script uses the
same format when passing workspace identifiers back to it.
During a given session, it is safe for the shell script to
work with the X atoms since they remain constant over the
lifetime of the session. However, as was shown in the Ses-
sion Management shell script example, if the shell script is
going to save and restore workspace identifiers, the
workspace identifiers must be converted from their X atom
representation to a string before they are saved. Then,
when the session is restored, the shell script needs to
remap the names into X atoms before passing the information
on to the workspace manager. Mapping between X atoms and
strings and between strings and X atoms uses the following
two commands:
XmInternAtom ATOM $DISPLAY $WORKSPACE_NAME false
XmGetAtomName NAME $DISPLAY $ATOM
Creating Localized Shell Scripts
Scripts written for dtksh are internationalized, and then
localized, in a process very similar to C applications. All
strings that may be presented to the user are identified in
the script; a post-processor extracts the strings from the
script, and from them builds a catalog, which can then be
translated to any desired locale. When the script executes,
the current locale determines which message catalog is
searched for strings to display. When a string is to be
presented, it is identified by a message-set ID (correspond-
ing to the catalog), and a message number within the set;
these values determine what text the user sees. The follow-
ing code illustrates the process:
# Attempt to open our message catalog
catopen MSG_CAT_ID "myCatalog.cat"
# The localized button label is in set 1, and is message # 2
XtCreatePushButton OK $PARENT ok
labelString:$(catgets $MSG_CAT_ID 1 2 "OK")
# The localized button label is in set 1, and is message #3
XtCreatePushButton CANCEL $PARENT cancel
labelString:$(catgets $MSG_CAT_ID 1 3 "Cancel")
# Close the message catalog, when no longer needed
catclose $MSG_CAT_ID
Unix System LaboratoLast change: 1 August 1995 54
dtksh(1) USER COMMANDS dtksh(1)
The file descriptor returned by catopen must be closed using
catclose, and not using the sh exec command.
Using the dtksh Utility to Access X Drawing Functions
The commands of the dtksh utility include standard Xlib
drawing functions to draw lines, points, segments, rectan-
gles, arcs and polygons. In the standard C programming
environment, these functions take a graphics context, or GC
as an argument, in addition to the drawing data. In dtksh
drawing functions, a collection of GC options are specified
in the argument list to the command. By default, the draw-
ing commands create a GC that is used for that specific com-
mand and then discarded. If the script specifies the -gc
option, the name of the graphics context object can be
passed to the command; this GC is used in interpreting the
command, and the variable is updated with any modifications
to the GC performed by the command.
-gc GC
GC is the name of an environment variable that has
not yet been initialized, or which has been left
holding a graphic context by a previous drawing
command. If this option is specified, it must be
the first GC option specified.
-foreground color
Foreground color, which can be either the name of a
color or a pixel number.
-background color
Background color, which can be either the name of a
color or a pixel number.
-font font name
Name of the font to be used.
-line_width number
Line width to be used during drawing.
-function drawing function
Drawing function, which can be any of the follow-
ing: xor, or, clear, and, copy, noop, nor, nand,
set, invert, equiv, andReverse, orReverse or copy-
Inverted.
-line_style style
Line style, which can be any of the following:
LineSolid, LineDoubleDash or LineOnOffDash.
Setting Widget Translations:
The dtksh utility provides mechanisms for augmenting, over-
riding and removing widget translations, much as in the C
Unix System LaboratoLast change: 1 August 1995 55
dtksh(1) USER COMMANDS dtksh(1)
programming environment. In C, an application installs a
set of translation action procedures, which can then be
attached to specific sequences of events (translations are
composed of an event sequence and the associated action pro-
cedure). Translations within dtksh are handled in a similar
fashion, except only a single action procedure is available.
This action procedure, named ksh_eval, interprets any argu-
ments passed to it as dtksh commands, and evaluates them
when the translation is triggered. The following shell
script segment gives an example of how translations can be
used:
BtnDownProcedure()
{
echo "Button Down event occurred in button "$1
}
XtCreateManagedWidget BUTTON1 button1 XmPushButton $PARENT
labelString:"Button 1"
translations:'#augment
<EnterNotify>:ksh_eval("echo Button1 entered")
<Btn1Down>:ksh_eval("BtnDownProcedure 1")'
XtCreateManagedWidget BUTTON2 button2 XmPushButton $PARENT
labelString:"Button 2"
XtOverrideTranslations $BUTTON2
'#override
<Btn1Down>:ksh_eval("BtnDownProcedure 2")'
EXAMPLES
None.
SEE ALSO
sh(1).
Unix System LaboratoLast change: 1 August 1995 56
See also dtksh(1)
Man(1) output converted with
man2html