用户可通过在"安装图标"控制上放置图标来创建个人控制。
虽然这样可提供简捷的可定制性,但所提供的功能却是"前面板"控制的功能的子集。例如,使用"安装图标"控制所创建的控制无法:
提供动画
显示客户窗口
在事件发生时(例如,在收到新的邮件时)更改外观
本节描述如何手动地创建"前面板"控制。
关于"前面板"控制的语法参考信息,请参阅 dtfpfile(4X) 的手册页。
"前面板"控制定义的结构是:
CONTROL control_name  
  {    
   TYPE	control_type    
   CONTAINER_NAME  value    
   CONTAINER_TYPE  value    
   other fields defining appearance and behavior     
  }
控制特性
用户单击控制或在其上放置文件时,它将运行指定的动作。
忙灯。调用动作时,该控制闪烁(切换图象)
"前面板"中的客户窗口。
时钟。
显示当前日期。
本节描述定义控制的一般步骤,以及如何创建各种类型的控制。
如果控制具有 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