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