本节描述定义控制的一般步骤,以及如何创建各种类型的控制。
如果控制有一个 PUSH_ACTION 和/或 DROP_ACTION,则创建操作定义。这些是在用户单击控制或在其上拉放文件时运行的操作。
创建控制的图标图像文件。
有关图标大小、名称和位置的信息,请参见"图标图像文件"。
在下面的位置创建新的"前面板"配置文件:
系统范围:/etc/dt/appconfig/types/language /*.fp
个人:HomeDirectory /.dt/types/*.fp
在文件中添加控制定义。
保存文件。
从"工作区"菜单中选择"重启工作区管理器"。
使用下面的字段定义控制的性能:
TYPE:设置为图标
例如,下面这一控制将放置到"个人应用程序"子面板,它运行用户已获得的游戏:
CONTROL Ball { TYPE icon CONTAINER_NAME PersAppsSubpanel CONTAINER_TYPE SUBPANEL ICON ball PUSH_ACTION RunBallGame HELP_STRING "选择此控制以播放 Ball。" }
下面的控制将位于 switch (开关) 的左上角。它启动名为 CutDisp 的操作。
CONTROL StartCutDisp { TYPE icon CONTAINER_NAME Switch CONTAINER_TYPE SWITCH POSITION_HINTS first ICON cutdisp HELP_STRING "选择此控制以运行 cutdisp。" PUSH_ACTION CutDisp }
使用下面的字段定义控制的性能:
TYPE:设置为文件
PUSH_ACTION:设置为打开
必须有为文件的数据类型而定义的"打开"操作。
例如,下面的控制将位于"主面板"的最右边。它用数据文件 /users/ellen/PhoneList.txt 启动"文本编辑器"。*.txt 文件的"打开"操作是缺省的操作数据库的一部分。
CONTROL EditPhoneList { TYPE file FILE_NAME /users/ellen/PhoneList.txt CONTAINER_NAME Top CONTAINER_TYPE BOX POSITION_HINTS last ICON PhoneBook HELP_STRING "此控制显示 Ellen 的电话列表。" PUSH_ACTION Open }
当用户将一个文件拉放在控制上时,使用 DROP_ACTION 字段来指定运行的操作。操作必须能够接收文件变量。
常常,控制定义包括一个 PUSH_ACTION 字段和 DROP_ACTION 字段。对于按下和拉放操作可使用相同的操作。
例如,下面的位于"个人应用程序"子面板的控制运行 X 客户 xwud,它带有一个文件变量。
CONTROL Run_xwud { CONTAINER_NAME PerAppsSubpanel CONTAINER_TYPE SUBPANEL POSITION_HINTS 2 ICON XwudImage PUSH_ACTION RunXwud DROP_ACTION RunXwud }
使用下面的字段定义控制的性能:
例如,下面的控制寻找名为会议的文件的存在, 您希望使用匿名 ftp 将该文件传输到系统上。这个控制放置在"个人应用程序" 子面板的顶部。
CONTROL MonitorCalendar { TYPE file CONTAINER_NAME PersonalApps CONTAINER_TYPE SUBPANEL POSITION_HINTS first FILE_NAME /users/ftp/meetings MONITOR_TYPE file ICON meetingsno ALTERNATE_ICON meetingsyes }
单一实例控制检查由 PUSH_ACTION 启动的进程是否已在运行。如果该进程没有运行,则运行 PUSH_ACTION。如果该进程已在运行, 则将窗口移动到当前工作区窗口 stack (栈) 的顶部。
使用下面的字段定义控制的性能:
PUSH_RECALL:设置为真。
CLIENT_NAME 的值必须与应用程序的顶级窗口上 WM_CLASS 特性中的第一个字符串 (res_name) 相匹配。有关详细信息,请参见 xprop(1) 手册页。
PUSH_ACTION:描述用户单击控制时所运行的操作。
例如,下面的控制运行应用程序的单一实例,其操作名为 MyEditor。
CONTROL MyEditor { TYPE icon CONTAINER_NAME Top CONTAINER_TYPE BOX POSITION_HINTS 15 PUSH_RECALL True CLIENT_NAME BestEditor PUSH_ACTION StartMyEditor ICON MyEd }
客户机窗口控制是嵌入"前面板"中的应用程序窗口。例如,通过创建 xload 客户机窗口控制,可将系统负荷监测器放置在"前面板"中。
定义控制。
使用下面的字段定义控制的性能:
TYPE:设置为客户机。
CLIENT_NAME 的值必须与应用程序顶层窗口上的 WM_CLASS 特性中的第一个字符串 (res_name) 相匹配。有关详细信息,请参见 xprop(1) 手册页。
从"工作区"菜单中选择"重启工作区管理器"。
从终端仿真器的命令行启动客户机。
例如,下面的控制显示了 30 乘 20 像素的负荷监测器。
CONTROL LoadMeter { TYPE client CONTAINER_NAME Top CONTAINER_TYPE BOX CLIENT_NAME xload CLIENT_GEOMETRY 30x20 }
如果未在会话之间保存和恢复客户机,您可能想配置控制,以便当用户单击它时启动客户机。例如,可以通过向定义添加下面的行,来配置"负荷监测器"控制,以便启动 xload:
PUSH_ACTION StartXload
并创建操作:
ACTION StartXload { WINDOW_TYPE NO_STDIO EXEC_STRING /usr/contrib/bin/X11/xload }
可附加动画序列,它将在用户选中控制或在其上拉放对象时使用。
为了具有动画序列,控制必须:
为类型图标
具有 PUSH_ACTION 或 DROP_ACTION
ANIMATION animation_name { ANIMATION icon1 [milisecond_delay] ANIMATION icon1 [milisecond_delay] ... }
其中 icon1、icon 2 等等为图标的名称,而 milisecond_delay 是动画图标之间的以毫秒为单位的时间延迟。缺省的时间延迟为二百毫秒。
将 PUSH_ANIMATION 和/或 DROP_ANIMATION 字段添加到控制定义中。该值是 ANIMATION 序列的名称。
例如,下面的行激励了启动 BestEditor 应用程序的控制。图标间的时间延迟为三百毫秒。该实例假定已创建了图标文件框架 1、框架 2 等等。
CONTROL BestEditor { ... PUSH_ANIMATION BestEdAnimation ... }
ANIMATION BestEdAnimation { frame1 300 frame2 ... }
有两种提供控制帮助的方法:
在控制定义中提供帮助字符串。
当用户调用控制的针对项帮助时,帮助字符串显示在帮助查看器中。帮助字符串不能包含格式 (如标题之类) 或链接。
要提供帮助字符串,在控制定义中将其指定为:
HELP_STRING help_string