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 代表词语变量。 语法 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_CRITERIA 可以有多个 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 操作是同义的。同样,打开数据类型 TEXTFILE 数据类型文件将运行“文本编辑器”, 而打开 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
  }

此定义应用于数据类型为 (ARG_TYPE) BM (位图文件) 的文件。该定义将“打开”操作映射到运行“图标编辑器”的 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%
  }