本节描述定义控制的一般步骤,以及如何创建各种类型的控制。
如果控制具有 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 "Choose this control to play Ball."
}
下面的控制将位于 switch(开关)的左上角。它启动名为 CutDisp 的动作。
CONTROL StartCutDisp
{
TYPE icon
CONTAINER_NAME Switch
CONTAINER_TYPE SWITCH
POSITION_HINTS first
ICON cutdisp
HELP_STRING "Choose this control to run 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 "This control displays Ellen's phone list."
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
{
icon_image [delay]
icon_image [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