本节描述定义控制的一般步骤,以及如何创建各种类型的控制。
如果控制有一个 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