この節では、コントロールを定義する一般的な手順と、さまざまな型のコントロールの作成方法を説明します。
コントロールに PUSH_ACTION と DROP_ACTION のいずれかが関連付けられている場合は、アクション定義を作成します。
これらは、コントロールをクリック、またはファイルをコントロール上にドロップすると実行されるアクションです。
コントロールのアイコン・イメージ・ファイルを作成します。
アイコンのサイズ、名前、および位置については、「アイコン・イメージ・ファイル」を参照してください。
システム共通: /etc/dt/appconfig/types/language/*.fp
個人用: HomeDirectory/.dt/types/*.fp
ファイルにコントロール定義を追加します。
ファイルを保存します。
ワークスペース・メニューから [ワークスペースマネージャの再起動] を選択します。
コントロールの動作を定義するには、次のフィールドを使用します。
たとえば、[個人アプリケーション] サブパネルに入る次のコントロールは、ユーザが獲得したゲームを実行します。
CONTROL Ball
 {
 	TYPE							icon
 	CONTAINER_NAME				PersAppsSubpanel
 	CONTAINER_TYPE				SUBPANEL
 	ICON							ball
 	PUSH_ACTION					RunBallGame
 	HELP_STRING					"Choose this control to play Ball."
 }
次のコントロールは、スイッチの左上隅に配置されます。このコントロールは、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
 }
コントロールの動作を定義するには、次のフィールドを使用します。
ファイルのデータ型に Open アクションが定義されていなければなりません。
たとえば、次のコントロールはメイン・パネルの右側奥に配置されます。このコントロールは、テキスト・エディタをデータファイル /users/ellen/PhoneList.txt で起動します。*.txt ファイルの Open アクションは、デフォルト・アクション・データベースの一部です。
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
 }
コントロールの動作を定義するには、次のフィールドを使用します。
TYPE - 次のいずれかの値を指定します。
icon - コントロールに PUSH_ACTION、DROP_ACTION のいずれかを指定する場合は、この型を使用します。
file - コントロールを選択したときに、ファイル・マネージャでファイル・アイコンをダブルクリックしたときのような動作を実行する場合は、この型を使用します。
MONITOR_TYPE - イメージを変化させる条件を記述します。次のいずれかの値を使用します。
mail - コントロールは、ファイルに情報が追加されると外観が変わります。
file - コントロールは、指定されたファイルが空でなくなると外観が変わります。
たとえば、次のコントロールは、anonymous ftp を使用して自分のシステムに転送されることになっている、meetings という名前のファイルの有無を確認します。このコントロールは、[個人アプリケーション] サブパネルの一番上に配置されます。
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
 }
1 インスタンス・コントロールは、PUSH_ACTION によって起動されたプロセスがすでに実行中かどうかをチェックします。プロセスが実行中でない場合は、PUSH_ACTION が実行されます。プロセスが実行中の場合は、ウィンドウが現在のワークスペースのウィンドウの重なりの一番上に移動します。
コントロールの動作を定義するには、次のフィールドを使用します。
PUSH_RECALL - True に設定します。
CLIENT_NAME - コントロールにクライアント名を指定します。
CLIENT_NAME の値は、アプリケーションのトップレベル・ウィンドウの WM_CLASS 属性の一番目の文字列 (res_name) に一致しなければなりません。詳細は、xprop(1) のマニュアル・ページを参照してください。
PUSH_ACTION - コントロールをクリックしたときに実行されるアクションを記述します。
たとえば次のコントロールは、MyEditor という名前のアクションを持つアプリケーションのインスタンスを 1 つ実行します。
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 に設定します。
CLIENT_NAME - 起動するクライアントを指定します。
CLIENT_NAME の値は、アプリケーションのトップレベル・ウィンドウの WM_CLASS 属性の一番目の文字列 (res_name) に一致しなければなりません。詳細は、xprop(1) のマニュアル・ページを参照してください。
ワークスペース・メニューから [ワークスペースマネージャの再起動] を選択します。
端末エミュレータのコマンド行からクライアントを起動します。
たとえば、次のコントロールは 30x20 ピクセルの負荷メータを表示します。
CONTROL LoadMeter
 {
 	TYPE							client
 	CONTAINER_NAME				Top
 	CONTAINER_TYPE				BOX
 	CLIENT_NAME					xload
 	CLIENT_GEOMETRY			30x20
 }
セッション中にクライアントが保存および復元されない場合、コントロールをクリックすると、そのコントロールがクライアントを起動するように構成するとします。たとえば、次の行を定義に追加すると LoadMeter コントロールが xload を起動するように構成できます。
PUSH_ACTION StartXload
次のアクションを作成します。
ACTION StartXload
 {
 	WINDOW_TYPE				NO_STDIO
 	EXEC_STRING				/usr/contrib/bin/X11/xload
 }
アニメーション・シーケンスを接続してコントロールを選択するか、オブジェクトをコントロール上にドロップしたときに使用できます。
アニメーション・シーケンスを指定するには、コントロールは次の条件が必要です。
型が icon である
PUSH_ACTION または DROP_ACTION を持っている
ANIMATION コンポーネントを使用して、アニメーション・シーケンスを指定します。
	ANIMATION animation_name
 	{
 		ANIMATION	icon1				[milisecond_delay]
 		ANIMATION	icon2				[milisecond_delay]
 		...
    }
icon1 や icon 2 は、アイコン名で、milisecond_delay は、アニメーション・アイコン間のミリ単位の遅延時間です。デフォルトの遅延時間は 200 ミリ秒です。
PUSH_ANIMATION フィールドと DROP_ANIMATION フィールド、またはそのどちらかをコントロール定義に追加します。値は ANIMATION シーケンス名です。
たとえば次の行は、BestEditor アプリケーションを起動するコントロールをアニメーション化します。アイコン間の遅延時間は 300 ミリ秒です。この例では、アイコン・ファイル frame1、frame2 などを作成してあると想定しています。
CONTROL BestEditor
 {
 	...
 	PUSH_ANIMATION BestEdAnimation
 	...
 }
ANIMATION BestEdAnimation
 {
 	frame1			300
 	frame2
 	...
 }
コントロールにヘルプを提供するには、次の 2 つの方法があります。
コントロール定義にヘルプ文字列を提供する
コントロールのアイテムヘルプを起動すると、ヘルプ文字列がヘルプ・ビューアに表示されます。ヘルプ文字列にはフォーマット (ヘッダなど) やリンクを指定できません。
ヘルプ文字列を表示するには、コントロール定義にヘルプ文字列を指定します。
HELP_STRING help_string