有两种创建数据类型定义的方法:
使用"创建动作"工具。使用"创建动作"的内容见于第 11 章,用创建动作命令来创建动作和数据类型
通过手动来创建数据类型定义
手动创建数据类型需要对数据库文件进行编辑。
本章描述了如何手动创建数据类型定义。
关于数据类型的介绍,请参阅第 10 章,动作与数据类型的介绍
关于数据类型定义的参考信息,请参阅 dtddsfile(4) 手册页
用手动创建数据类型可以使你利用所有内置在数据类型定义语法中的功能
基于位置(路径)的数据分类
指定与数据类型有关的, 而不是与"打开"和"打印"有关的动作的能力
相同数据类型的多重名称、模式或内容标准 -例如,基于名为*.abc或*.def的文件的数据类型
基于链接的数据分类
数据类型定义包括两个分离的数据库定义:
必须至少有一个DATA_CRITERIA 定义在每个DATA_ATTRIBUTES 定义中;而DATA_ATTRIBUTES 定义可以有 多个DATA_CRITERIA 与其相关联。
例如,可以为 PostScript 文件创建属性定义,此定义描述了 PostScript 文件在"文件管理器"中的外观和性能。然后,可以为 PostScript 数据类型创建两个分离的标准 -一个基于文件名,而另一个基于文件内容。
关于进一步信息,请参阅"定义数据类型的数据标准"。
本节描述如何创建数据类型的配置文件。
对包含数据类型定义的配置文件的要求是:
文件必须使用命名惯例名称.dt
文件必须位于数据库搜索路径中。缺省的搜索路径是:
个人数据类型-HomeDirectory/.dt/types
系统范围数据类型-/etc/dt/appconfig/types/language
内置数据类型-/usr/dt/appconfig/types/language。 不应当使用此目录。
关于修改数据库搜索路径的信息,请参阅"设置搜索路径的值"。
打开现有的数据库文件或创建一个新的。
关于进一步信息,请参阅前一节,"数据类型的配置文件"。
为数据类型定义数据属性,使用下列语法:
DATA_ATTRIBUTESdata_type_name
{
ICON image_name
DESCRIPTION string
attribute_field
attribute_field
...
}
其中:
data_type_name-给定此数据类型的唯一名称。
image_name-图标文件的文件名或路径。对于文件请使 用基本名称。例如,对于图标文件myimage.m.pm和myimage.t.pm,请使用myimage。
attribute_field-定义数据类型的外观和特性的字段。
string-字符串。其内容将是数据类型的 项目帮助。
请参阅"创建个人动作和数据类型的示例"。
定义数据类型的数据标准,使用下列语法:
DATA_CRITERIA criteria_name
{
DATA_ATTRIBUTES_NAME data_type_name
criteria_field
criteria_field
...
}
其中:
criteria_name-此标准定义的唯一名称
data_type_name-在DATA_ATTRIBUTES定义中所使用的名称
criteria_field-用于定义标准的字段, 该标准用于将文件指定为该数据类型
请参阅"定义数据类型的数据标准"。
保存数据库文件。
为数据类型创建图标。
关于进一步信息,请参阅"指定用于数据类型的图标图象"。
如有必要,创建在属性定义的ACTIONS 字段中 列出的动作。
双击 Desktop_Tools 应用程序组中的"重新装入动作",以便重新装入数据库。
假设系统中包含名为xgif的应用程序,它是用来 显示 GIF 图片的。通常通过执行下列命令来运行该程序:
xgif文件名
需要以几种方式来显示 GIF 图片:
通过双击 GIF 数据文件
通过选择数据文件,并在"选定"菜单中选择应用程序
打开一个新文件HomeDirectory/.dt/types/GifViewer.dt,以便用于编辑。
键入数据类型定义:
DATA_ATTRIBUTES Gif
{
DESCRIPTION Gif image file.
ICON GifIcon
ACTIONS View
DATA_CRITERIA Gif_Criteria
}
DATA_ATTRIBUTES_NAME Gif
NAME_PATTERN *.gif
}
键入 GifViewer 动作的动作定义:
ACTION GifViewer
{
EXEC_STRING xgif% (File)Arg_1"Gif file to view:"
WINDOW_TYPE NO_STDIO
DESCRIPTION Double-click or drop a file to \
start the Gif viewer.
}
因为定义不包含ICON字段,所以动作将使用 系统的缺省图标。
键入下面的映射动作,将 GifViewer 动作连接到在数据类型定义中列出的"查看"动作。使用ARG_TYPE字段来将查看动作限定在 Gif 类型的文件。
ACTION View
{
ARG_TYPE Gif
TYPE MAP
MAP_ACTION GifViewer
}
保存文件。
双击在 Desktop_Tools 应用程序组中的"重新装入动作",以重新从数据库中读取。
DATA_ATTRIBUTES的定义定义了数据类型的外观和特性。它指定了数据类型的名称,并提供了指定下列各项的能力:
文件管理器图标(ICON字段)
"选定"菜单(ACTIONS字段)的双击性能和内容
使用ICON字段来指定用于"文件管理器"的图标。如果 未指定图标图象,"文件管理器"只显示一个标签。
基本文件名是包含图标图象的文件名称,减去文件名用以表示大小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。
表 13-1列出将要创建的图标的大小以及相应文件名。
|
象素大小 |
位图名称 |
象素图名称 |
|---|---|---|
|
32 乘 32 |
名称.m.bm |
名称.m.pm |
|
16 乘 16 |
名称.t.bm |
名称.t.pm |
数据类型与动作有两种关联方法:
使用动作定义的ARG_TYPE字段,可以将动作限定在指定的数据类型。
例如,下列数据类型定义为特殊的"自述"文件创建了一种数据类型,而这些文件由系统管理员创建,使用的命名惯例是*.rm。
DATA_ATTRIBUTES SysReadmeFile
{
ICON SysReadMe
ACTIONS Open,Respond
}
DATA_CRITERIA SysReadmeFileCriteria
{
NAME_PATTERN *.rm
DATA_ATTRIBUTES_NAME SysReadmeFile
}
在下面为文件定义了特殊的"响应"动作。它在"文本编辑器"中打开文件的一个 可写副本。当保存文件并退出"文本编辑器"后,文件被寄给系统管理员(邮寄地址为sysadmin@utd)。
ACTION Respond
{
ARG_TYPE SysReadmeFile
EXEC_STRING /bin/sh -c 'cp%Arg _1% $HOME/readme.temp;\
chmod +w $HOME/readme.temp; \
dtpad $HOME/readme.temp; \
cat $HOME/readme.temp | \
/usr/bin/mailx sysadmin@utd; \
rm $HOME/readme.temp'
WINDOW_TYPE NO_STDIO
}
如果文件是不可见数据类型,就决不会出现在"文件管理器"中。
在 DATA_ATTRIBUTES 定义中使用PROPERTIES 字段 来指定此类要隐藏的对象:
PROPERTIES invisible
表 13-2显示主要由应用程序程序程序员使用的DATA_ATTRIBUTES 字段。它们指定了在用户执行 各种桌面动作时,文件所表现出的特性。
关于进一步信息,请参阅《公共桌面环境程序员指南》,这是开发者环境文档的一部分。
表 13-2 DATA_ATTRIBUTES字段和描述|
字段 |
描述 |
|---|---|
|
用于类似目录这样的容器。指定当文件被移到该数据类型的容器中时,所要执行的动作。 |
|
|
用于类似目录这样的容器。指定当文件被复制该数据类型的容器中时,所要执行的动作。 |
|
|
指定当文件被链接到该数据类型的文件时,所要执行的动作。 |
|
|
指定该数据类型的文件含有可在文本框 中显示的文本。 |
|
|
指定相应的 ToolTalk 媒介类型。 |
|
|
指定相应的 MIME 类型。 |
|
|
指定相应的 X400 类型。 |
DATA_CRITERIA定义定义了将文件或 目录指定给对象类型所采用的标准。
可使用在表 13-3中显示的标准,来进行对象分类。
表 13-3 DATA_CRITERIA 标准和描述|
标准 |
说明 |
|---|---|
|
文件名 | |
|
文件位置 | |
|
文件内容 | |
|
文件模式 | |
|
分类是以对象所链接的文件为基础的。 |
对于一种数据类型,可以使用多个数据类型标准。但不应在同一数据类型中使用NAME_PATTERN和PATH_PATTERN 标准。
使用NAME_PATTERN字段来指定命名要求。 字段值可以包含下列通配符:
?-匹配任何单个字符
[cc...]-匹配任何字符 (c) ,这些字符被括在括号中
[c-c]-匹配任何字符,这些字符的范围 为c到c
下列数据类型定义创建了基于文件名的数据类型。文件名必须以QS开头,并以.doc结尾。
DATA_ATTRIBUTES QS_Doc
{
DESCRIPTION This file contains a document for the QS \
project.
ICON Word_Doc
ACTIONS Open
}
DATA_CRITERIA QS_Doc_Criteria
{
NAME_PATTERN QS*.doc
DATA_ATTRIBUTES_NAME QS_Doc
}
下列定义为名为Demo_n 的目录创建数据类型,其中n为 1 到 9。
DATA_ATTRIBUTES Demo_directory
{
DESCRIPTION This is a directory. Double-click to open it.
ICON Demo
ACTIONS OpenInPlace,OpenNewView
}
DATA_CRITERIA Demo_directory_criteria
{
NAME_PATTERN Demo_[0-9]
MODE d
DATA_ATTRIBUTES_NAME Demo_directory
}
使用PATH_PATTERN字段来指定路径。 可以使用与NAME_PATTERN相同的通配符。
例如,下列数据类型使用了基于路径的标准。
DATA_ATTRIBUTES Project_Graphics
{
DESCRIPTION Graphics file for the QS project. Double-click the \
icon to see the graphic.
ICON QSgraphics
}
DATA_CRITERIA Project_Graphics_Criteria
{
DATA_ATTRIBUTES_NAME Project_Graphics
PATH_PATTERN */projects/QS/graphics/*
要创建同时基于文件名和位置两者的数据类型,请将名称包括在PATH_PATTERN的值中。不可在同一标准定义中 同时使用NAME_PATTERN和PATH_PATTERN。
下面定义的 QS_Source_Files 数据类型适用于所有名为appn.c的文件,其中n= 1 到 9, 这些文件位于*/projects/QS的子目录中。
DATA_ATTRIBUTES QS_Source_Files
{
...
}
DATA_CRITERIA QS_Source_Files_Criteria
{
PATH_PATTERN */projects/QS/*/app[1-9].c
DATA_ATTRIBUTES_NAME QS_Source_Files
}
下列数据类型适用于所有在目录/doc/project1 中的,名为chnn.xxx 的文件,其中n为 0 到 9,并且xxx为任何三个字符的文件名后缀。
DATA_ATTRIBUTES ChapterFiles
{
DESCRIPTION Chapter file for the project document.
ICON chapter
ACTIONS Edit,Print
}
DATA_CRITERIA Chapter_Criteria
{
PATH_PATTERN /doc/project1/ch[0-9][0-9].???
DATA_ATTRIBUTES_NAME ChapterFiles
}
模式标准通常与基于名称、基于位置或基于内容的数据分类组合使用。从而可以将数据类型限定 在文件或目录上,或指定所需的读、写和执行许可。
MODE字段可包括逻辑运算符 (表 13-4) 和字符 (表 13-5)。
表 13-4 MODE 字段逻辑运算符和描述|
运算符 |
说明 |
|---|---|
|
! | |
|
& | |
|
| |
表 13-5 MODE 字段字符和描述
|
字符 |
说明 |
|---|---|
|
该数据类型只适用于文件 |
|
|
该数据类型只适用于目录 |
|
|
r |
该文件对于任何用户都是可读的 |
|
该文件对于任何用户都是可写的 |
|
|
该文件对于任何用户都是可执行的 |
|
|
该文件是链接 |
某一具体模式的缺省状态是与模式无关。
下列模式字段对数据类型有如下限定:
f&!w-只读文件
!w-只读文件和目录
f&x-可执行文件
f&r&x-既可写又可执行的文件
x|!w-可执行或只读文件
下列数据类型定义为只读、不可执行文件创建了数据类型,这些文件的文件名符合命名惯例*.doc。这假定已为数据类型定义了"查看"动作。
DATA_ATTRIBUTES ReadOnlyDocument
{
ICON read_only
DESCRIPTION This document is not writable. Double- \
clicking runs your editor with a \
read-only copy of the file.
ACTIONS View
}
DATA_CRITERIA ReadOnlyDocument_Criteria
{
NAME_PATTERN *.doc
MODE !d&!x&!w
DATA_ATTRIBUTES_NAME ReadOnlyDocument
}
使用CONTENT字段来指定基于文件内容的数据分类。基于内容的数据分类可与 基于名称或基于位置的数据分类组合使用。
分类可基于文件的字符串或数字内容。文件的第一字节的编号为 0 。
对于文件的数字内容,请使用语法:
CONTENTstarting_bytebytenumber CONTENTstarting_byteshortnumber CONTENTstarting_bytelongnumber
对于目录的内容,请使用语法:
CONTENT 0 filename "file_name"
使用标准 C 的八进制(前导o)和十六进制(前导oX)数字的记数法。
使用基于内容的数据分类将导致系统性能减慢。只要有可能,就换用基于名称和位置的分类。
例如,下列数据类型,Writable_Wingz,适用于所有具有写许可的文件, 这些文件在文件的开始处含有字符串WNGZ。
DATA_ATTRIBUTES Writable_Wingz
{
...
DATA_CRITERIA Writable_Wingz_Criteria
{
CONTENT 0 string WNGZ
MODE w&!d
DATA_ATTRIBUTES_NAME Writable_Wingz
}
可用一些独立的标准来创建数据类型-就是说,如果文件符合标准中的任一个(或两者),就为其 指定数据类型。
为数据类型创建DATA_ATTRIBUTES 定义。
使用DATA_ATTRIBUTES_NAME字段来将每个标准连接到 相同的DATA_ATTRIBUTES定义。
例如,下列定义创建了 Mif 数据类型。分类是基于名称或内容的。
DATA_ATTRIBUTES Mif
{
ICON Frame
ACTION_LIST Open,Print
}
DATA_CRITERIA Mif_Name_Criteria
{
DATA_ATTRIBUTES_NAM Mif
NAME_PATTERN *.mif
}
DATA_CRITERIA Mif_Content_Criteria
{
DATA_ATTRIBUTES_NAME Mif
CONTENT 1 string MIFFile
}
数据类型的搜索路径包含与语言相关的位置。桌面使用 LANG 的值来确定搜索数据类型定义 的位置。
本地化的数据类型定义必须放置在动作搜索路径上的与语言相关的正确目录中。
缺省的搜索路径为:
个人动作:HomeDirectory/.dt/types
系统范围动作:/etc/dt/appconfig/types/language
内置动作:/usr/dt/appconfig/types/language