关于使用这些步骤来创建应用程序包的详细示例,请参阅"创建注册包的示例"。
修改应用程序中任何设置字体和颜色的资源。否则, 桌面的动态字体和颜色可能会工作不正常。
创建应用程序根位置。
在应用程序的根下创建目录结构。
创建应用程序的动作和数据类型。
将帮助文件放置在相应的目录中。
创建应用程序的图标
创建应用程序的应用程序组。
请参阅"第 7 步:创建应用程序组"。
用dtappintegrate 注册应用程序。
关于修改应用程序资源的示例,请参阅"创建注册包的示例"的第 1 步。
桌面提供设置和操作界面字体和窗口颜色的机制。为了使应用程序正确地使用该机制,必须修改应用程序的app-defaults文件。
本节适用于使用 OSF/Motif 1.2(TM)(或更高版本)创建的应用程序。"式样管理器"无法为用更低版本的 OSF/Motif 编写的应用程序设置界面字体。
如果使用 OSF/Motif 1.2(TM)(或更高版本)创建的应用程序没有指定自己的界面字体,桌面"式样管理器"就会为其设置界面字体。
"式样管理器"提供两种字体:
系统字体-适用于标签、菜单和按钮等系统区
用户字体-适用于文本字段等可编辑区
每种字体有 7 种大小,在字体对话框中用数字 1 到 7 标记。"式样管理器"的字体通过在/usr/dt/app-defaults/language/Dtstyle 中设置的资源连接到实际字体。
如果应用程序要使用"式样管理器"的字体,应该删除界面用以指定字体的任何应用程序资源。桌面会自动设置适当的应用程序资源:
FontList-设置为系统字体
XmText*FontList-设置为用户字体
XmTextField*FontList-设置为用户字体
"式样管理器"可以动态地更改应用程序的颜色,但应用程序必须是 OSF/Motif 1.1 或 1.2 的客户程序。用其它工具包编写的客户程序不能动态更改颜色,而只能在客户程序重新起动时才更改颜色。
使用桌面提供的动态颜色的最简单方法是删除所有用于背景色和前景色的应用程序颜色资源。
关于为应用程序创建桌面应用程序根目录的示例,请参阅"创建注册包的示例"的第 2 步。
应用程序的注册包文件都被集中到一个目录下,它被称为应用程序根目录,或 app_root。桌面配置使用的 app_root 目录可以和应用程序的安装目录 app_root 是同一个目录,也可以是其它 目录。
例如,假设应用程序安装在/usr/BTE目录下,这个目录同时也可以作为桌面配置文件的app_root目录。但是,如果要集成一个已有的非桌面智能型应用程序,则需要另外创建桌面app_root目录。这样可以防止在更新应用程序时覆盖所创建的配置文件。
例如,系统管理员可以创建/etc/desktop_approots/BTE,作为桌面的app_root目录。
关于创建应用程序注册包目录的示例,请参阅"创建注册包的示例"的第 3 步。
注册包是桌面为应用程序提供图形界面而需要的所有配置文件的集合。
桌面配置文件包括:
动作和数据类型定义文件
图标的图象文件
应用程序组目录及其内容
可选:帮助数据文件和前面板配置文件
注册包集中在名为应用程序根目录或app_root 的顶层目录下。
app_root/dt/appconfig 目录下的配置区主要类别显示于表 5-1。
表 5-1 配置区的主要类别
子目录 |
内容 |
---|---|
类型 |
动作和数据类型定义文件 |
帮助 |
桌面帮助文件 |
图标 |
应用程序的动作和数据类型所使用的位图和象素图图象文件 |
应用程序管理器 |
创建应用程序组的目录和内容 |
每个主要类别都有与语言相关文件的子目录。缺省语言的文件放置在C目录中。
创建下列目录。如果要提供与语言相关的配置文件,需要为每种语言创建单独的目录。如果只要提供一种语言,请把文件放置在C目录中。
app_root/dt/appconfig/types/language
app_root/dt/appconfig/help/language
app_root/dt/appconfig/icons/language
app_root/dt/appconfig/appmanager/language/appgroup_name,其中appgroup_name是应用程序组的名称。
例如,图形 5-5显示应用程序管理器。它包含名 为"Media_Tools"的应用程序组。
dtappintegrate工具只对类型、帮助、图标和应用程序管理器目录下的桌面配置文件进行操作。应用程序的二进制可执行文件,app-defaults 和信息种类文件,都单独进行管理。
关于创建应用程序动作和数据类型的示例,请参阅"创建注册包的示例"的第 4 步。
动作和数据类型为应用程序提供用户界面。
动作为起动应用程序的命令提供用户界面
数据类型提供用户定制的应用程序数据文件的外观和特性
典型的应用程序需要下列动作和数据类型定义:
打开应用程序的动作。
应用程序数据文件的数据类型。如果要创建数据类型,同样也要创建:
应用程序数据文件的"打开"动作
应用程序数据文件的"打印"动作
应用程序组的数据类型(请参阅"为应用程序组配置专用图标")。
关于桌面中动作和数据类型的使用方法的介绍,请参阅第 10 章,动作与数据类型的介绍 。
动作和数据类型在配置文件中得到定义。命名包含动作和数据类型定义的文件的唯一要求是要使其带有.dt后缀。按照惯例,可以将文件命名为action_name .dt 或 application_name.dt。
将包含动作和数据类型的文件放置在应用程序根目录下的 app_root /dt/appconfig/types/ language 目录中。缺省的 language是C。
可以采用两种方法为应用程序创建动作和数据类型:
使用创建动作工具。
创建动作工具提供易于使用的界面,它具有供输入用的文本区。当然,该工具有一定的限制。
手动创建定义。
虽然这需要了解创建定义的语法,但它可提供更全面的功能。
下列过程采用"创建动作"实用程序为应用程序创建动作和数据类型。
关于"创建动作"的进一步信息,请使用它的联机帮助或参阅第 11 章,用创建动作命令来创建动作和数据类型。
打开 Desktop_Apps 应用程序组,双击"创建动作"。
使用"创建动作"为应用程序及其数据类型创建动作和数据类型定义。
由"创建动作"创建的配置文件会写入HomeDirectory/.dt/type/action_name.dt。 其动作文件(与动作同名的可执行文件)放置在起始目录中。
用起始目录中创建的动作文件测试动作。
将动作定义文件HomeDirectory/.dt/type/action_name.dt 复制到app_root/dt/appconfig/types/language 目录中。
创建应用程序组目录之后(请参阅"第 7 步:创建应用程序组"),把动作文 件HomeDirectory/action_name 复制到 app_root /dt/appconfig/appmanager/ language /appgroup_name 目录下。
为应用程序创建包含动作和数据类型定义的配置文件。
动作和数据类型定义文件的命名必须遵循命名惯例name.dt。
可以将动作和数据类型的所有定义放置在一个文件中,也可以分别放置在多个文件内。每个文件使用的文件名都要使系统管理员能方便地将其与应用程序联系起来。
动作和数据类型名称必须是单词(没有内嵌的空格)。可以使用下划线字符。按照惯例,动作或数据类型名的第一个字符要大写。不要用已有动作名称或文件名称, 要用能使高级用户和系统管理员方便地将其与应用程序联系起来的文件名。
如果想让应用程序的图标所标记的名称与动作名不同,在动作定义中包含LABEL字段。
关于创建动作和数据类型进一步信息,请参阅:
关于注册包中加入帮助文件的示例,请参阅"创建注册包的示例"的第 5 步。
如果应用程序包含桌面帮助卷(用桌面的帮助开发工具包创建的帮助卷),帮助卷的主文件 (*.sdl) 应该放在app_root/appconfig/help/language目录中。
帮助文件使用的图形通常放置在graphics子目录中。所有图形必须放置在与创建帮助卷时产生的主帮助卷文件 (*.sdl) 相对的同一个目录中。
如果应用程序没有帮助卷,可以用帮助开发工具包来自行创建一个。
当桌面帮助部分集成时,帮助卷可以从帮助管理器的顶层访问。但是,无法从应用程序窗口访问帮助卷。另外,也可以提供从应用程序组访问帮助卷的动作。下面的示例动作显示帮助主文件MyApp.sdl中的帮助卷:
ACTION OpenMyAppHelp { LABEL MyAppHelp ARG_COUNT 0 TYPE COMMAND WINDOW_TYPE NO_STDIO EXEC_STRING /usr/dt/bin/dthelpview -helpVolume MyApp DESCRIPTION Displays help for the MyApp application. }
关于创建应用程序图标的示例,请参阅"创建注册包的示例"的 第 6 步。
桌面只为动作、数据类型和应用程序组提供缺省图标。但是,您可能需要为应用程序创建专用图标。
图标放置在app_root/dt/appconfig/icons/language 目录中。
应用程序在桌面上使用下列图标图象:
应用程序组图标。这是在应用程序管理器顶层中代表目录的图标。它在应用程序组的数据类型定义中的ICON字段引用。(请参阅"第 7 步:创建应用程序组"。)
图标有两种大小:小图标和中图标。
为支持彩色(8位或8位以上)和单色(小于8位)显示,可能需要同时提供象素图和位图两个版本的图标。
大小 |
象素维数 |
位图名 |
象素图名 |
---|---|---|---|
小 |
16 乘 16 |
basename.t.bm |
basename.t.pm |
中 |
32 乘 32 |
basename.m.bm |
basename.m.pm |
大 |
48 乘 48 |
basename.l.bm |
basename.l.pm |
如果未提供位图文件,桌面会将象素图的颜色定义映射到黑白两色。但是这种映射可能不会产生所期望的效果。
关于图标的进一步信息,请参阅"图标图像文件"。
关于创建应用程序组的示例,请参阅"创建注册包的示例"的第 7 步。
应用程序的动作和数据类型定义一经创建后,还必须创建可以产生用户实际所见对象的 配置文件-应用程序组及其内容。
应用程序组是出现在应用程序管理器顶层的目录(请参阅图形 5-1)。
创建应用程序组分为三步:
在注册包中创建应用程序组目录。
可选:为应用程序组配置专用图标。这与创建应用程序组的数据类型定义有关。
创建应用程序组的内容。
为创建应用程序组,需要在appmanager下的注册包中创建目录,如图形 5-7所示。
图形 5-7中的 <appgroup_name>就是应用程序组的名称。
应用程序组名可以是任何合法的文件(目录)名。最好使用能描述应用程序功能的名称。
虽然桌面可以为应用程序组提供缺省图标。 但是,您可能需要自己定义图标。
如果想为应用程序组提供专用图标,必须 创建:
应用程序管理器顶层目录的数据 类型。
数据类型的打开和打印动作。
例如,假设想创建名为 Media_Tools 的应用程序组。可以用下列放置在app_root/dt/appconfig/types/language/name.dt 文件中的数据类型定义 为应用程序组指定专用图标。
DATA_ATTRIBUTES Media_ToolsAppgroup { ACTIONS OpenInPlace,OpenNewView ICON MediaTools DESCRIPTION Double-click to open the Media_Tools \ application group }
DATA_CRITERIA Media_ToolsAppgroupCriteria1 { DATA_ATTRIBUTES_NAME Media_ToolsAppgroup MODE d PATH_PATTERN */appmanager/*/Media_Tools }
上述定义的属性段指定所用的图标;标准段则规定任何名为Media_Tools的目录(即是appmanager 下的子目录)所定义的数据类型。
图形 5-9显示了应用程序组名和数据类型定义之间的关系。数据类型定义中的PATH_PATTERN字段将专用图标与应用程序组相连接。
ACTION Open { ARG_TYPE Media_ToolsAppGroup TYPE MAP MAP_ACTION OpenAppGroup }
ACTION Print { ARG_TYPE Media_ToolsAppGroup TYPE MAP MAP_ACTION PrintAppGroup }
OpenAppGroup 和 PrintAppGroup 动作是定义在/usr/dt/appconfig/ types/language/dtappman.dt 中的内置动作。
应用程序组中最重要的一项是起动应用程序的图标(动作图标)。如果应用程序组包括一组应用程序,则通常每个应用程序都有动作图标。
除一个或多个动作图标外,应用程序组还可以包括:
一个或多个"自述"文件
一个或多个样本数据文件
模板
图标,用户可双击它来查看帮助信息
手册页
专门的"前面板"控制
应用程序组可以包含子目录。
应用程序组应该包含起动应用程序的图标。如果应用程序组提供一组应用程序,则每个程序都 应该有图标。这些图标称作应用程序图标或动作图标,因为它们代表所蕴含的动作。
动作图标是通过创建与它将运行的动作同名的可执行文件来创建的:
app_root/dt/appconfig/appmanager/appgroup_name/action_name
这个文件被称为动作文件,因为它的目的是 创建所蕴含的动作的可视表象。
例如,如果已经创建了运行 BestTextEditor 应用程序的,名为 BestTextEditor 的动作,同时也会创建名为 BestTextEditor 的 可执行程序。在"文件管理器"和应用程序管理器中,动作文件就会使用动作定义中规定的图标图象。
图形 5-10说明动作定义、动作文件和"应用程序管理 器"窗口实际入口之间的关系。
桌面提供"自述"数据类型供应用程序的"自述"文件使用。请从下列命名惯例中选用一种:
README
readme
README.*
Read.*.Me
read.*.me
READ.*.ME
绝大多数情况下,不必提供"前面板"的控制定义;用户可以在子面板的"安装图标"控制上放置动作图标,将应用程序添加到"前面板"。
如果想使用户可自行安装与动作图标特性不同的控制,可能需要创建包含应用程序控制定义的前面板配置文件,其中-例如,如果该控制需要监视文件,并且在被监视文件 变化时更改它的外观。
"前面板"配置文件放置在app_root/dt/appconfig/types/language 目录中。命名惯例是name.fp.
提供包含控制定义的配置文件后,用户可以在子面板的"安装图标"控制上放置*.fp文件, 将控制添加到子面板。
例如,下面的定义可以放置在应用程序组的"前面板"配置文件中。如果用户将这个文件放置在子面板的"安装图标"控制上,子面板上会产生控制来 运行 BestTextEditor 应用程序的单一执行实例。如果 BestTextEditor 已在运行,该窗口会跳到当前工作区的窗口堆叠的顶部。
CONTROL BestTextEditorControl { TYPE icon ICON BTEFPanel PUSH_RECALL True CLIENT_NAME BTEd PUSH_ACTION BTEditor DROP_ACTION BTEditor HELP_STRING Starts the BestTextEditor application. }
关于创建"前面板"配置文件的附加信息,请参阅:
dtfpfile(4) 手册页
关于注册应用程序的示例,请参阅"创建注册包的示例"的第 8 步。
在应用程序的根目录下一经创建注册包后, 即可开始实际的应用程序注册。
应用程序的注册在注册包和位于桌面 搜索路径内的目录之间建立链接(请参阅"dtappintegrate如何集成应用程序")。
如果应用程序是桌面智能型的,dtappintegrate 一般作为安装过程的最后一步自动执行。如果它 没有自动执行,或者创建的配置文件是集成非桌面智能型的应用程序,可以手动运行dtappintegrate。
以超级用户登录。
运行下列命令:
/usr/dt/bin/dtappintegrate -sapp_root
其中app_root是桌面应用程序的根目录。关于进一步信息,请参阅 dtappintegrate(1) 手册页。
打开 Desktop_Tools 应用程序组,双击"重新装入应用程序"。
确认应用程序注册正确:
dtappintegrate -sapp_root [-ttarget_path] [-llanguage ] [-u]
-sapp_root |
必要参数,指定已安装应用程序的应用程序根目录。 |
-ttarget_path |
可选参数,缺省为系统设置/etc/dt/appconfig。指定桌面配置文件链接的位置,注意该位置必须位于应用程序的搜索路径中。 |
-llanguage |
可选参数,缺省设置为所有语言。指定所要集成的指定语言的桌面配置文件。 |
-u |
可选参数,解除应用程序的集成,删除集成时建立的所有链接。 |
dtappintegrate的功能是在已安装的文件和桌面查找配置文件的位置之间建立链接。
dtappintegrate在注册包内的动作和数据类型定义文件和沿着动作数据库搜索路径的系统目录之间创建符号链接。该过程创建的链接从
app_root/dt/appconfig/types/language/*.dt
到
/etc/dt/appconfig/types/language/*.dt
dtappintegrate在注册包内的帮助文件和沿着帮助搜索路径的系统目录之间创建符号链接。该过程建立的链接从
app_root/dt/appconfig/help/language/help_file.sdl
到
/etc/dt/appconfig/help/language/help_file.sdl
dtappintegrate在注册包内的图标文件和沿着图标搜索路径的系统目录之间创建符号链接。该过程建立的链接从
app_root/dt/appconfig/icons/language/icon_files
到
/etc/dt/appconfig/icons/language/icon_files
为把应用程序组放置到应用程序管理器的顶层,dtappintegrate 在注册包内的 应用程序组目录和沿着应用程序搜索路径的 系统目录之间创建符号链接。该过程建立的链接从目录
app_root/dt/appconfig/appmanager/language/appgroup_name
到
/etc/dt/appconfig/appmanager/language/appgroup_name