This chapter introduces the concepts of actions and data types. It describes:
You can use Create Action to create actions and data types for most applications without having to learn the syntax rules for their definitions.
It is necessary to create actions and data types manually when you want to use advanced features not supported by Create Action.
Once you define an action, it can be used to adapt the desktop user interface so that tasks are easier to do. The desktop provides the ability to attach user interface components such as icons, Front Panel controls, and menu items to actions
Figure 8-1 Uses for actions
For example, the Desktop_Tools application group in Application Manager contains icons that start various utilities.
Figure 8-2 Action icons in the Desktop_Tools application group
Each of these icons runs an action when the icon is double-clicked. For example, here's a portion of the definition of the action that runs when the user double-clicks the icon labeled Xwd Display. The action is defined in the configuration file /usr/dt/appconfig/types/ language /xclients.dt :
ACTION Xwud
{
LABEL Xwd Display
TYPE COMMAND
EXEC_STRING /usr/bin/X11/xwud -noclick -in \
%(File)Arg_1"Xwd File To Display:"%
...
}
The command in the action's EXEC_STRING is run when the user double-clicks the icon.The Front Panel also uses actions. For example, here's a portion of the definition of the control labeled Terminal in the Personal Applications subpanel. The control is defined in the configuration file /usr/dt/appconfig/types/ language /dtwm.fp :
CONTROL Term
{
ICON Fpterm
LABEL Terminal
PUSH_ACTION Dtterm
...
}
The PUSH_ACTION field specifies the action to run when the user clicks the control--in this case, an action named Dtterm.Another common use for actions is in menus. Data files usually have actions in their Selected menu in File Manager. For example, XWD files (files with names ending in .xwd or.wd ) have an Open action that displays the screen image by running the Xwud action.
Figure 8-3 Open action for files of data type XWD
The actions in the Selected menu are specified in the data type definition for XWD files. The definition is located in the configuration file /usr/dt/appconfig/types/ language /xclients.dt.
The XWD data type, and its associated Open and Print actions, are explained in "How Data Types Connect Data Files to Actions".DATA_ATTRIBUTES XWD { ACTIONS Open,Print ICON Dtxwd ...
}
The icon labeled Xwd Display appears in the application group because there is a file in that directory named Xwud (see Figure 8-4 ). This file represents an underlying action with the same name--Xwud. In the action definition, the action name is the name following the ACTION keyword:
ACTION Xwud
{
LABEL Xwd Display
TYPE COMMAND
WINDOW_TYPE NO_STDIO
EXEC_STRING /usr/bin/X11/xwud -noclick -in \
%(File)Arg_1"Xwd File To Display:"%
DESCRIPTION The Xwd Display (Xwud) XwdDisplay action \
displays an xwd file that was created using the \
Xwd Capture (Xwd) action. It uses \
the xwud command.
}
The file is called an
action file
because it represents an action. A file is an action file when it is an executable file with the same name as an action. Its icon in Application Manager (or File Manager) is called an
action icon
, or
application icon
, because double-clicking it starts an application.Figure 8-4 Application (action) icon representing an action file
When Application Manager detects an executable file, it looks through the actions database to see if there are any actions whose names match the file name. If a match is found, Application Manager knows that the file is an action file.
Once the desktop determines that a file is an action file, the underlying action definition is used to define the appearance and behavior of the action file.
In contrast, the icon labeled Compress File uses a different icon image because its underlying action definition contains an ICON field:
For example:
ACTION Compress
LABEL Compress File
ICON Dtcmprs
...
}
The Xwud action is called a command action because its definition contains the command (EXEC_STRING ) to be run. The TYPE field in the action definition defines the action type.
Initially, the Xwd Display icon appears in the Desktop_Tools application group. However, you can create additional copies of the action icon in any directory for which you have write permission. As long as the Xwud action definition is part of the database, any executable file you create named Xwud will be an action file representing that action, and its icon in File Manager or Application Manager can be used to run the action.
For example, the EXEC_STRING of the Xwud action specifies that a file argument is required:
EXEC_STRING /usr/bin/X11/xwud -noclick -in \
%(File)Arg_1"Xwd File To Display:"%
The term Arg
stands for the word argument.
The syntax
Arg_1
means the first argument, and (File)
means that the action treats that argument as a file.
The easiest way for the user to provide a file argument is to drop a data file on the application icon. The desktop determines the path of the dropped file and substitutes it into the command line in place of the text between the
%
symbols (%(File)Arg_1"Xwd File To Display:"%
). Thus, the command that gets executed is:
/usr/bin/X11/xwud -noclick -in file_path
When the user double-clicks the application icon, the desktop determines from the
EXEC_STRING
that a file argument is required, and displays a dialog box prompting the user to enter a file name or path. In the case of the Xwud action, the prompt is:
Xwd File To Display:
The file name or path supplied by the user is used as the file argument.
The definition for a Front Panel control includes fields that specify the action that runs when the user clicks the control or drops a file on it. For more information, see "Defining Front Panel Controls" .
The syntax for the Window and Workspace menu definitions allows you to specify the action to be run by a menu item. For more information, see "Workspace Manager Menus" and the dtwmrc(4) man page.
An application can be designed to send and receive information using a special type of action called ToolTalk message (TT_MSG ). TT_MSG actions are described in the developer environment documentation for the desktop.
Every data type definition has two parts:DATA_ATTRIBUTES XWD { ACTIONS Open,Print ICON Dtxwd NAME_TEMPLATE %s.xwd MIME_TYPE application/octet-stream SUNV3_TYPE xwd-file DESCRIPTION This file contains a graphics image in the XWD \ format. These files are typically created by \ taking snapshots of windows using the XwdCapture \ action. Its data type is named XWD. XWD files \ have names ending with `.xwd' or `.wd'. }
DATA_CRITERIA XWD1 { DATA_ATTRIBUTES_NAME XWD MODE f NAME_PATTERN *.xwd } DATA_CRITERIA XWD2 { DATA_ATTRIBUTES_NAME XWD MODE f NAME_PATTERN *.wd }
There can be multiple DATA_CRITERIA for a DATA_ATTRIBUTE . For example, the XWD data type has two criteria to specify two different naming criteria (NAME_PATTERN )--names ending with .xwd or .wd .
The XWD data type supplies each file of that data type with:
The ACTIONS field in the data type definition specifies the commands added to the bottom of the data type's Selected menu.
DATA_ATTRIBUTES XWD
{
ACTIONS Open,Print
...
}
The contents of the Selected menu depends on the data type. However, many different data types provide an Open action--that is, when you select a file of that particular data type in File Manager and display the Selected menu, you see an Open command.
Figure 8-6 The Selected menu for an XWD file
The ability to create a variety of Open actions that do different things uses two features of action definitions:
Action mapping lets you create an action that runs another action, rather than directly running a command. For example, you can create an Open action that maps to (runs) the Xwud action.
Action definitions can include an ARG_TYPE field that limits the action to certain data types. For example, you can specify that the Open action that maps to the Xwud action applies only to files of data type XWD.
ACTION Open
{
LABEL Open
ARG_TYPE XWD
TYPE MAP
MAP_ACTION Xwud
}
The TYPE
field specifies that this is a map action; the MAP_ACTION
field specifies this action runs the Xwud action. The ARG_TYPE
field specifies that this action applies only to files whose data type is XWD.Compare the previous definition of the Open action to the next definition, which appears in the database file /usr/dt/appconfig/types/C/dt.dt:
ACTION Open
{
LABEL Open
ARG_TYPE BM
TYPE MAP
MAP_ACTION Dticon
}
This definition applies to files of data type (ARG_TYPE) BM (bitmap files). The definition maps the Open action to the Dticon action, which runs Icon Editor.For example, when an XWD data file is dropped on the Xwd Display icon, the Xwud action is run using the data file argument. This runs the xwud X client with that data file.
Desktop printing uses actions named Print. Print, like Open, is an action name that is used for many different types of data. Therefore, Print actions use action mapping and the ARG_TYPE field to customize printing for each data type.
For example, here is the Print action for the XWD data type. The definition is located in /usr/dt/appconfig/types/language/xclients.dt:
ACTION Print
{
LABEL Print
ARG_TYPE XWD
TYPE MAP
MAP_ACTION NoPrint
}
This Print action, specific to XWD files, is mapped to a NoPrint action. NoPrint is a special action defined in /usr/dt/appconfig/types/
language
/dt.dt
. The NoPrint action displays a dialog box telling the user that this data type cannot be printed.
Compare the XWD Print action with the following Print action for PCL files:
ACTION Print
{
LABEL Print
ARG_TYPE PCL
TYPE MAP
MAP_ACTION PrintRaw
}
The PrintRaw action, defined in the configuration file /usr/dt/appconfig/types/language/print.dt, contains the command line for printing the PCL files.
ACTION PrintRaw
{
TYPE COMMAND
WINDOW_TYPE NO_STDIO
EXEC_STRING /usr/dt/bin/dtlp -w %(File)Arg_1%
}