有关使用这些步骤来创建应用程序软件包的详细实例,请参阅创建注册软件包的实例。
修改应用程序中任何设置字体和颜色的资源。否则, 桌面的动态字体和颜色将不能正常工作。
请参阅 第 1 步:修改字体和颜色资源。
创建应用程序根位置。
请参阅 第 2 步:创建桌面应用程序根。
在应用程序的根下创建目录结构。
请参阅第 3 步:创建注册软件包目录。
创建应用程序的操作和数据类型。
将帮助文件放置在相应的目录中。
创建应用程序的图标
请参阅 第 6 步:创建应用程序的图标。
创建应用程序的应用程序组。
请参阅 第 7 步:创建“应用程序组”。
用dtappintegrate 注册应用程序。
有关修改应用程序资源的实例,请参阅创建注册软件包的实例。
桌面提供设置和操作界面字体和窗口颜色的机制。为了使应用程序正确地使用该机制,必须修改应用程序的 app-defaults 文件。
本节适用于使用 OSF/Motif 1.2™ (或更高版本) 创建的应用程序。“式样管理器”无法为用更低版本的 OSF/Motif 编写的应用程序设置界面字体。
如果使用 OSF/Motif 1.2™ (或更高版本) 创建的应用程序没有指定应用程序特定的界面字体,桌面“式样管理器”就会为它设置界面字体。
“式样管理器”提供两种字体:
系统字体—适用于标号、菜单和按钮等系统区
用户字体—适用于文本字段等可编辑区
每种字体的大小都有 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 配置区的主要类
子目录 |
内容 |
---|---|
types |
操作和数据类型定义文件 |
help |
桌面帮助文件 |
icons |
应用程序的操作和数据类型所使用的位图和像素图图像文件 |
appmanager |
创建应用程序组的目录和内容 |
每个主要类别都有与语言相关文件的子目录。缺省语言的文件放置在 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”的 appgroup_name 。
dtappintegrate 工具只对类型、帮助、图标和应用程序管理器目录下的桌面配置文件进行操作。应用程序的二进制可执行文件、app-defaults 和信息种类文件,都单独进行管理。
有关创建应用程序操作和数据类型的实例,请参阅创建注册软件包的实例的第四步。
操作和数据类型为应用程序提供用户界面。
操作为启动应用程序的命令提供用户界面
数据类型提供用户定制的应用程序数据文件的外观和特性
典型的应用程序需要下面的操作和数据类型定义:
打开应用程序的操作。
应用程序数据文件的数据类型。如果要创建数据类型,同样也要创建:
应用程序数据文件的“打开”操作
应用程序数据文件的“打印”操作
应用程序组的数据类型 (请参阅为应用程序组配置专用图标)。
有关桌面中操作和数据类型的使用方法的介绍,请参阅第 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目录中。
帮助文件使用的图形通常放置在一个图形子目录中。 所有图形必须始终放在创建帮助卷时所建的与主帮助卷 (*.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 字段引用。
如果应用程序支持多种数据类型,则应为每种文件类型提供不同的图标。
提供两种尺寸:小图标和中图标。
应用程序组图标。 这是在应用程序管理器顶层中代表目录的图标。它在应用程序组的数据类型定义中的 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 中定义的内置操作。
应用程序组中最重要的一项是启动应用程序的图标 (操作图标)。如果应用程序组包括一组应用程序,则通常每个应用程序都有操作图标。
除一个或多个操作图标外,应用程序组还可以包括:
一个或多个 README 文件
一个或多个样本数据文件
模板
图标,用户可双击它来查看帮助信息
手册页
专门的“前面板”控制
应用程序组可以包含子目录。
应用程序组应该包含启动应用程序的图标。如果应用程序组提供一组应用程序,则每个程序都应该有图标。这些图标称作应用程序图标或操作图标,因为它们代表所蕴含的操作。
操作图标是通过创建与它将运行的操作同名的可执行文件来创建的:
app_root /dt/appconfig/appmanager/appgroup_name/ action_name
这个文件被称为操作文件,因为它的目的是创建所蕴含的操作的视觉表示形式。
例如,如果已经创建了运行 BestTextEditor 应用程序的,名为 BestTextEditor 的操作,则应该创建名为 BestTextEditor 的可执行文件。在“文件管理器”和应用程序管理器中,操作文件会使用操作定义中指定的图标图像。
图形 5–10 说明操作定义、操作文件和“应用程序管理 器”窗口实际入口之间的关系。
桌面提供 README 数据类型供应用程序的 README 文件使用。请使用下列命名惯例之一:
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 -s app_root
其中 app_root 是桌面应用程序的根目录。有关详细信息,请参阅 dtappintegrate(1) 手册页。
打开 Desktop_Tools 应用程序组,双击“重新装入应用程序”。
确认应用程序注册正确:
dtappintegrate -s app_root [-ttarget_path ] [-llanguage ] [-u]
-s app_root |
必要参数,指定已安装应用程序的所在的应用程序根目录。 |
-t target_path |
可选参数,缺省为系统位置 /etc/dt/appconfig。指定桌面配置文件链接的位置。指定桌面配置文件链接到哪个位置。必须使用位于应用程序的查找路径中的某个位置。 |
-l language |
可选参数,缺省设置为所有语言。指定集成哪一个与语言相关的桌面配置文件。 |
-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/types/language/*.dt
到
/etc/dt/appconfig/types/language/*.dt 的链接来完成的。
为把应用程序组放到应用程序管理器的顶层,dtappintegrate 在注册软件包内的应用程序组目录和应用程序查找路径中的全系统目录之间创建符号链接。这是通过创建从目录
app_root /dt/appconfig/appmanager/language/appgroup_name
到
/etc/dt/appconfig/appmanager/language/appgroup_name 的链接来完成的。