Solaris 公用桌面环境: 高级用户和系统管理员指南

第 10 章 动作与数据类型的介绍

动作数据类型是用于将应用程序集成进桌面的强大组成部分。它们提供了为启动应用程序和操作其数据文件而创建用户接口的一种方法。

本章介绍了动作和数据类型的概念。它描述了:

创建动作和数据类型的过程和规则在该手册 的三个章节中进行介绍。

动作的介绍

动作是所写的指令,用于使桌面任务自动化,如运行应用程序和打开数据文件。动作与应用程序宏或编程函数十分相似。每个动作都具有用于运行该动作的名称。

一旦定义了动作,就可以用该动作来对桌面用户接口进行适配,从而使任务更易于完成。桌面提供了将用户接口组件,例如图标、"前面板"控制和菜单项,附加到动作的能力。

例如,"应用程序管理器"中的 Desktop_Tools 应用程序组包含了启动各种实用程序的图标。

图形 10-1 Desktop_Tools 应用程序组中的动作图标

Graphic

双击其中的每个图标都运行一个动作。例如,当用户双击标记为 Xwd 显示的图标时,该动作定义的下面一部分将被运行。该动作被定义在配置文件 /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:"%
 	 ...  
  }

当用户双击图标时,运行动作中的 EXEC_STRING 命令。

"前面板"也使用动作。例如,下面是"个人应用程序"子面板中标记为"终端"的控制的一部分定义。 该控制被定义在配置文件 /usr/dt/appconfig/types/language/dtwm.fp 中:

CONTROL Term  
  {  	
   ICON		Fpterm  	
   LABEL		Terminal  
	  PUSH_ACTION		Dtterm  	
   ...  
   }

PUSH_ACTION 字段指定了当用户单击控制时所运行的 动作-此处,动作的名称是 "Dtterm"。

动作的另一常见用法是在菜单中。数据文件通常在"文件管理器"的"选定"的菜单中具有动作。例如,XWD 文件(文件名以.xwd.wd结尾的文件)具有"打开"动作, 该动作在运行 Xwud 动作时显示屏幕图像。

图形 10-2 数据类型 XWD

Graphic

文件的"打开"动作在"选定"菜单中的动作是在 XWD 文件的数据类型定义里被指定的。该定义位于配置文件 /usr/dt/appconfig/types/language/xclients.dt中。

DATA_ATTRIBUTES XWD  
  {  	
   ACTIONS		Open,Print  	
   ICON		Dtxwd  
	  ...
  }

XWD 数据类型,以及与其相关联的"打开"和"打印"动作,在 "数据类型如何将数据文件连接到动作"中有解释。

动作如何创建应用程序的图标

考虑在 Desktop_Tools 应用程序组中的"Xwd 显示"图标。双击此图标运行 X 客户程序 xwud。但是,此图标并不直接表示实际的 xwud 可执行文件 /usr/bin/X11/xwud

标记为"Xwd 显示"的图标出现在应用程序组中,这是因为有一个文件在名为 Xwud (请参阅 图形 10-3)的目录中。此文件表示一个蕴含的动作,其名称与文件相同-Xwud。在其动作 定义中,动作的名称是在关键字 ACTION 之后的名称:

ACTION Xwud  
  {  	
   LABEL		Xwd Display  	
   TYPE		COMMAND  
   WINDOW_TYPE		NO_STDIO  	
   EXEC_STRING		/usr/bin/X11/xwud -noclick -in \
				%(File)Arg_1" 要显示的文件Xwd:"%
 	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.
  }  

此文件被称作动作文件,这是因为它表示一个动作。 当文件是可执行文件且与动作具有相同名称时就是动作文件。其在"应用程序管理器"(或"文件管理器")中的图标被称作动作图标,或应用程序图标,因为双击它可以启动应用程序。

图形 10-3 应用程序(动作)图标代表动作文件

Graphic

当"应用程序管理器"检测到可执行文件时,它在动作数据库中查找看是否有任何动作,其名称与文件的名称匹配。如果找到匹配的, 那么"应用程序管理器"就知道 此文件是个动作文件。

动作文件的内容是不相关的;动作文件通常包含对其桌面功能加以描述的注释。


注意:

动作文件动作定义文件是不相同的。动作文件是一个与动作具有相同名称的文件。它用于在"文件管理器" 或"应用程序管理器"中创建应用程序图标动作定义文件是 以 name.dt 命名的文件,它包含了动作的定义。


一旦桌面确定文件是动作文件,所蕴含的动作的定义就被用来定义动作文件的外观和性能。

图形 10-4 由动作定义中的 ICON 字段所指定的图标图象

Graphic

Xwud 动作被称作命令动作,因为其定义中包含了要 执行的命令 (EXEC_STRING)。在动作定义中的 TYPE 字段 定义动作的类型。

最初,"Xwd 显示"图标出现在 Desktop_Tools 应用程序组中。 但是,在任何具有写许可的目录中创建该动作图标的附加副本。 只要 Xwud 动作定义是数据库的一部分, 任何创建的名为 Xwud 的可执行文件都将成为表示该动作的动作文件,而且其在"文件管理器"或"应用程序管理器"中的图标 也可以用来运行该动作。

动作如何将数据文件作为参数使用

命令的参数(通常是一个文件)是命令执行的 对象。可以编辑动作来接受文件参数。

例如, Xwud 动作的 EXEC_STRING 字段指定了需要的 文件参数:

EXEC_STRING		/usr/bin/X11/xwud -noclick -in \  
			%(File)Arg_1" 要显示的 Xwd 文件:"%

术语 Arg 代表词语 argument. 。语法 Arg_1 是指第一个参数,(File) 是指动作把 参数当文件来处理。

提供文件参数的最简单的办法是将 数据文件放置到应用程序的图标上。桌面确定所放置的文件 的路径,并且将它替换到命令行中,代替 % symbols 之间的文本。 (%(File)Arg_1"要显示的 Xwd 文件:"%)。这样,所执行的命令为:

/usr/bin/X11/xwud -noclick -in file_path

当用户双击应用程序图标时,桌面从 EXEC_STRING 判断需要的文件参数,并且显示对话框,提示用户输入文件名或路径。如果是 Xwud 动作,其提示为:

要显示的 Xwd 文件:

用户提供的文件名和路径会被作为文件参数使用。

动作的附加用途

除启动应用程序之外,在整个桌面范围内,动作还用于创建以下功能:

数据类型的介绍

当用户创建了新的数据文件,在"文件管理器"中,文件图标的外观与性能随用户创建的数据文件类型的不同而不同。这种为文件和目录创建定制的外观和性能的能力由桌面数据分类机制提供。

什么是数据类型?

数据类型是在桌面数据库内部定义的结构。例如,下面是 XWD 数据类型的定义。该定义在配置文件 /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
  }

每个数据类型定义均有两部分:

DATA_ATTRIBUTES-描述数据类型的外观和 性能。

DATA_CRITERIA-指定将文件归类至所属数据类型 的规则(命名或内容)。

DATA_ATTRIBUTES_NAME 字段将标准连接至属性。

一个 DATA_ATTRIBUTE可以有多个 DATA_CRITERIA。例如,XWD 数据类型具有两个标准来指定两个不同的命名 标准 (NAME_PATTERN)-名称以 .xwd 或以 .wd 结尾。

数据类型如何将数据文件连接到动作

考虑 XWD 数据类型。用户通过赋给文件两个文件名 后缀(扩展名):.xwd.wd中的一个来 创建 XWD 类型的文件。桌面使用文件名作为将文件标识为某种类型的标准

XWD 数据类型通过下列方法为此数据类型的每个文件提供:

从"选定"菜单运行动作

"文件管理器"中的"选定"菜单,只有当文件或目录被选定时才是活动的。"选定"菜单底部的命令取决于数据类型。例如,如果选中 XWD 文件,则"选定"菜单包括"打开"和"打印"项。

数据类型定义中的 ACTIONS 字段指定了被添加到 数据类型"选定"菜单底部的命令。

DATA_ATTRIBUTES XWD { ACTIONS Open,Print ...

"选定"菜单的内容取决于数据类型。但是,许多不同的数据类型都提供"打开"动作-就是说,当在 "文件管理器"中选择特定数据类型的文件并显示"选定"菜单时,可见到"打开"命令。

图形 10-5 XWD 文件的"选定"菜单

Graphic

"打开"动作通常运行与数据文件相关联的应用程序。例如,打开 XWD 文件将运行 Xwud 动作,该动作随后运行 xwud X 客户程序来显示屏幕图象。也就是说,对于 XWD 数据类型,"打开"动作与 Xwud 动作是同义的。同样,打开"文本文件"数据类型的文件将运行"文本编辑器", 而打开 BM(位图)或 PM(象素图)文件将运行"图标编辑器"。

创建各种完成不同功能的"打开"动作的能力使用了动作定义的两个特性:

下面的动作定义将 XWD 数据类型的"打开"动作映射成 Xwud 动作。 该动作定义位于数据库配置文件 /usr/dt/appconfig/types/C/xclients.dt中。

ACTION Open  
  {  	
   LABEL		Open  	
   ARG_TYPE		XWD
   TYPE		MAP
   MAP_ACTION		Xwud
  }

TYPE 字段指定这是个映射动作;MAP_ACTION 字段指定该动作执行 Xwud 动作。ARG_TYPE 字段指定该动作只适用于 数据类型为 XWD 的文件。

比较"打开"动作的前一个定义与下一个定义,下一个定义出现在数据库 文件 /usr/dt/appconfig/types/C/dt.dt中。

ACTION Open
  {  	
   LABEL		Open
   ARG_TYPE		BM  	
   TYPE		MAP  
   MAP_ACTION		Dticon
  }

此定义适用于 BM(位图文件)数据类型 (ARG_TYPE) 的文件。该定义将"打开"动作映射为运行"图标编辑器"的 Dticon 动作。

定义数据类型的双击性能

数据类型的双击性能由 ACTIONS 字段的第一项来定义。 例如,对于 XWD 数据类型,双击性能 将运行"打开"动作,该动作随后运行 Xwud 动作。

将数据文件放置到动作图标上

当用户将数据文件放置到动作图标上时,系统使用此数据文件作为动作的 参数来运行该动作(请参阅 "动作如何将数据文件作为参数使用")。

例如,如果将 XWD 数据文件放置到"Xwd 显示"图标上,则在运行 Xwud 动作时,使用了数据文件参数。此动作以该数据文件来运行 xwud X 客户程序。

为数据类型创建桌面打印

桌面打印提供下列方法来打印数据文件:

除桌面打印外,许多应用程序还提供一种从应用程序内部打印的方法。

桌面打印使用名为"打印"的动作。"打印"和"打开"一样,是用于许多不同数据类型的动作名。因此,"打印"动作使用 动作映射和 ARG_TYPE 字段为每种数据类型进行 打印配置。

例如,下面是 XWD 数据类型的"打印"动作。该定义位于 /usr/dt/appconfig/types/language/xclients.dt中:

ACTION Print  
  {
   LABEL		Print
   ARG_TYPE		XWD
   TYPE		MAP  	
   MAP_ACTION		NoPrint
  }

此"打印"动作专用于 XWD 文件,且被映射成 NoPrint 动作。 NoPrint 是在 /usr/dt/appconfig/types/language/dt.dt中定义的专用动作。NoPrint 动作显示对话框,告知用户该数据类型无法被打印。

将 XWD "打印"动作与下面的 PCL 文件的"打印"动作比较:

ACTION Print 
  {  	
   LABEL		Print  	
   ARG_TYPE			PCL
   TYPE		MAP	
   MAP_ACTION		PrintRaw
  }

/usr/dt/appconfig/types/language/print.dt中 定义的 PrintRaw 动作包含打印 PCL 文件的命令行。

ACTION PrintRaw  
  {  	
   TYPE		COMMAND
   WINDOW_TYPE		NO_STDIO  
   EXEC_STRING		/usr/dt/bin/dtlp -w% (File)Arg_1%
  }