本节介绍如何为动作定义创建配置文件。
包含动作定义的配置文件必须满足下列要求:
文件名必须遵循命名惯例名称.dt
文件必须位于数据库(动作和数据类型)的搜索路径内。缺省的搜索路径为:
个人动作-HomeDirectory/.dt/types
系统范围动作-/etc/dt/appconfig/types/language
内置动作-/usr/dt/appconfig/types/language。你 不应使用该目录。
关于更改动作/数据类型搜索路径的信息,请参阅"设置搜索路径的值"。
打开现有的数据库文件或创建新文件。
请参阅上一节"动作的配置文件"。
使用如下语法创建动作的定义:
ACTIONaction_name { TYPE action_type action_field ... }
其中:
action_name-运行动作所用的名称。
action_type-COMMAND(缺省值)、MAP 或 TT_MSG
action_field-该类 动作所需或任选的字段之一。所有字段都由关键字和值组成。
本章讨论多种动作字段。关于动作字段的进一步信息,请参阅dtactionfile(4) 的手册页。
保存文件。
如果动作图标需要专用图像,请自己为动作创建图标。图标的缺省位置为:
个人图标:HomeDirectory/.dt/icons
系统范围图标:/etc/dt/appconfig/icons/language。缺省的语言是 C。
关于进一步信息,请参阅"指定"动作所用的图标图像""。
在 Desktop_Tools 应用程序组中双击"重新装入动作"。
为动作创建动作文件。该文件在"文件管理器"或"应用程序管理器"中创建代表动作的图标。(如果 动作被写成启动应用程序,则该图标被称为应用程序图标。)
要创建动作文件,需要创建与action_name同 名的可执行文件。该文件可位于任何具有可写许可的目录内。可创建任意多个动作文件。
下列步骤在远程系统 AppServerA上创建了启动传真应用程序的个人动作。启动传真应用程序的命令 是:
/usr/fax/bin/faxcompose [filename]
创建HomeDirectory/.dt/types/Fax.dt 文件。
在文件内写入下列动作定义:
ACTION FaxComposer { TYPE COMMAND ICON fax WINDOW_TYPE NO_STDIO EXEC_STRING /usr/fax/bin/faxcompose -c%Arg_1% EXEC_HOST AppServerA DESCRIPTION Runs the fax composer }
其中WINDOW_TYPE和EXEC_STRING 描述 了动作的特性。
WINDOW_TYPE-NO_STDIO 关键字指定该动作不一定非在终端仿真程序窗口中运行不可。
请参阅"为动作指定窗口支持"。
EXEC_STRING-语法%Arg _1%接受放置的文件。如果双击动作图标,将打开空的传真创作器窗口。
保存文件。
用"图标编辑器"在HomeDirectory/.dt/icons 目录 中创建下列图标图像文件:
fax.m.pm, 大小为 32 乘 32 象素
fax.t.pm, 大小为 16 乘 16 象素
在 Desktop_Tools 应用程序组中双击"重新装入动作"。
在具有可写许可的目录中创建名为FaxComposer 的可执行文件(例如, 起始目录)。
假设绝大部分传真文件用"文本编辑器"创建,而且属于数据类型 TEXTFILE (文件名为 *.txt)。
下列步骤在数据类型的"选定"菜单中加入"传真"目录项。
打开在上例中创建的HomeDirectory/.dt/types/Fax.dt 文件。
在文件中加入下列映射动作的定义:
ACTION Fax { ARG_TYPE TEXTFILE TYPE MAP MAP_ACTION FaxComposer }
保存文件。
将 TEXTFILE 的数据属性定义从/usr/dt/appconfig/types/language/dtpad.dt 复制到新的文件HomeDirectory/.dt/types/textfile.dt。在ACTIONS字段中加入"传真"动作。
DATA_ATTRIBUTES TEXTFILE { ACTIONS Open,Print,Fax ICON Dtpenpd ... }
保存文件。
打开应用程序管理器,在 Desktop_Tools 应用程序组中双击"重新装入动作"。
为使新的或经过编辑的动作定义有效, 桌面必须重新读取数据库。
打开 Desktop_Tools 应用程序组,双击"重新装入动作"。
或者,执行下列命令:
dtaction ReloadActions
ReloadActions 是图标的标签为"重新装入动作"的动作的名称。
当用户进行下列操作时,动作数据库也会被重新读取:
登录
重新启动工作区管理器
在"创建动作"窗口的"文件"菜单内选择"保存"来保存动作
动作文件是在"文件管理器"或"应用程序管理器"中 提供动作的可视表象的文件。
由于动作文件的图标代表动作,因此有时也被称为动作图标。如果其所蕴含的动作启动 应用程序,则动作文件图标也被称为应用程序图标。
双击动作图标来运行动作。动作图标同时也可能是放置区。
例如,动作的定义如下:
ACTIONMyFavoriteApp { EXEC_STRING Mfa -file%Arg _1% DESCRIPTION Runs MyFavoriteApp ICON Mfapp }
此时,动作文件是名为MyFavoriteApp的可执行文件。 在"文件管理器"和"应用程序管理器"中,MyFavoriteApp 文件使用的图标图像名为Mfapp.size.type。双击MyFavoriteApp 的图标,此时会运行动作的执行字符串,并且图标的"项目"帮助就是DESCRIPTION字段所包含的内容("运行MyFavoriteApp")。
如果动作定义中包含LABEL字段,"文件管理器"和"应用程序 管理器"中动作文件的标签将不与文件名 (action_name) 相同,而是上述字段中定义的标签。例如,如果动作定义中包含下列定义:
ACTIONMyFavoriteApp { LABEL Favorite Application ... }
此时动作图标的标记为"喜爱的应用程序"。
用ICON字段来指定"文件管理器"和 "应用程序管理器"中所使用的图标是为动作创建的动作图标。
如果未指定图标,系统将使用缺省的动作图标的图像文件/usr/dt/appconfig/icons/language/Dtactn.*。
*actionIcon:icon_file_name
其中icon_file_name可以是基本名称或绝对路径。
基本文件名
基本文件名是包含图标图像的全文件名减去有关图标大小(m 和t)和图标类型(bm和pm)的后缀。例如,如果全文件名为GameIcon.m.pm 和GameIcon.t.pm,则基本文件名 为GameIcon。
如果采用基本文件名,图标文件必须放置在位于图标搜索路径的目录内:
个人图标:HomeDirectory/.dt/icons
系统范围图标:/etc/dt/appconfig/icons/language
图标文件的绝对路径,包含全文件名
只有在图标文件不在图标搜索路径内时才使用绝对路径。例如,图标文件GameIcon.m.pm放置在图标搜索路径外的/doc/projects 目录 中,此时ICON字段的值应该是/doc/projects/GameIcon.m.pm。
表 12-1列出了所需创建图标的大小和相应的文件名。
象素大小 |
位图名 |
象素图名 |
---|---|---|
48 乘 48 |
名称.l.bm |
名称.l.pm |
32 乘 32 |
名称.m.bm |
名称.m.pm |
16 乘 16 |
名称.t.bm |
名称.t.pm |
可修改系统内任何可用的动作,包括 内置动作。
修改内置动作数据库时必须小心,因为内置动作是为配合桌面应用程序工作而设计的。
找到需要修改的动作定义。
动作定义的缺省位置是:
如果必要的话,将动作定义的文本复制到下列目录中新的或现有的文件中:
系统范围定义:/etc/dt/appconfig/types/language
个人定义:HomeDirectory/.dt/types
由于不应在/usr/dt/appconfig/types/language 目录中编辑文件,所以必须复制内置动作的定义。
编辑动作的定义。
编辑完毕后请保存文件。
在 Desktop_Tools 应用程序组中双击"重新装入动作"。
当用户调用动作时,系统在数据库中搜索匹配的动作名。如果存在多个动作,系统则利用 优先级规则来决定使用哪个动作。
如果没有其它优先级可用,将使用基于定义位置的优先级。下表按从高到低的 优先级排列:
个人动作 (HomeDirectory/.dt/types)
系统范围的本地动作 (/etc/dt/appconfig/types/language)
系统范围的远程动作 (hostname:/etc/dt/appconfig/types/language)。只搜索在应用程序搜索路径内的远程主 机。
内置动作 (/usr/dt/appconfig/types/language)
在给定的目录内,*.dt文件按字母顺序读取。
受ARG_CLASS、ARG_TYPE、ARG_MODE或ARG_COUNT限定的动作的优先级比没有此类限定的动作高。(上述四种字段的缺省值是*。)
当应用了多个限定时,从高到低的优先顺序是:
ARG_CLASS
ARG_TYPE
ARG_MODE
ARG_COUNT
其中当多个ARG_COUNT限定存在时,从高到低的优先顺序是:
特定整数值n
<n
>n
*
例如,考虑下列动作定义:
ACTION EditGraphics # EditGraphics-1 { ARG_TYPE XWD ... }
ACTION EditGraphics # EditGraphics-2 { ARG_COUNT 0 ... }
ACTION EditGraphics # EditGraphics-3 { ARG_TYPE * ... }
由于没有提供参数,ARG_COUNT0具有优先级,所以双击 EditGraphics 动作图标时会启动 EditGraphics-2; 相反,在提供 XWD 文件参数后使用的是 EditGraphics-1,因为它指定了 XWDARG_TYPE;对于所有其它文件的参数,则使用 EditGraphics-3。