When the user creates a new data file, the appearance and behavior of the file's icon in File Manager varies depending on the type of data file the user has created. This ability to create custom appearance and behavior for files and directories is provided by the desktop's data typing mechanism.
A data type is a construct that is defined within the desktop database. For example, here is the definition of the XWD data type. The definition is in the configuration file /usr/dt/appconfig/types/language/xclients.dt:
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 }
Every data type definition has two parts:
DATA_ATTRIBUTES—describes the appearance and behavior of the data type.
DATA_CRITERIA—specifies the rules (naming or content) for categorizing a file as belonging to that data type.
The DATA_ATTRIBUTES_NAME field connects the criteria to the attributes.
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.
Consider the XWD data type. The user creates an XWD-type file by giving the file one of two file-name suffixes (extensions): .xwd or.wd. The desktop uses the file name as the criteria for designating a file as that type.
The XWD data type supplies each file of that data type with:
A unique icon image that helps users recognize the data files.
On Item help that tells you about the data type.
A customized Selected menu in File Manager containing the actions Open and Print. The Open action for XWD files runs the Xwud action.
The Selected menu in File Manager is active only when a file or directory is selected. The commands at the bottom of the Selected menu depend on the data type. For example, if an XWD file is selected, the Selected menu includes the items Open and Print.
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.
The Open action usually runs the application with which the data file is associated. For example, opening an XWD file runs the Xwud action, which in turn runs the xwud X client to display the screen image. In other words, for the XWD data type, the Open action is synonymous with the Xwud action. Likewise, opening a file of data type TEXTFILE runs the Text Editor, and opening a BM (bitmap) or PM (pixmap) file runs Icon Editor.
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.
Data-type restrictions on an 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.
Here is the definition of the action that maps the Open action to the Xwud action for the XWD data type. It is located in the database configuration file /usr/dt/appconfig/types/C/xclients.dt.
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.
The data type's double-click behavior is defined by the first entry in the ACTIONS field. For example, for the XWD data type, the double-click behavior is to run the Open action, which in turn runs the Xwud action.
When the user drops a data file on an action icon, the system runs the action using that data file as the argument for the action (see How Actions Use Data Files as Arguments).
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 provides these ways to print a data file:
Using the Print command, if available, in the File Manager Selected menu.
Dropping a data file on a desktop printer drop zone (the Front Panel Printer control or a printer icon in Print Manager).
In addition to desktop printing, many applications provide a way to print from within the application.
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% }