アイコンを [アイコンのインストール] コントロールにドロップすることで、個人用のコントロールを作成できます。
この方法によって簡単にカスタマイズできますが、提供される機能はフロントパネル・コントロールの機能のサブセットになります。たとえば、[アイコンのインストール] コントロールを使用して作成されたコントロールでは、次の作業は実行できません。
アニメーションの提供
クライアント・ウィンドウの表示
イベント発生時の外観の変更 (たとえば新しいメールを受け取った場合など)
この節では、手動でフロントパネル・コントロールを作成する方法を説明します。
フロントパネル・コントロールの構文については、dtfpfile(4X) のマニュアル・ページを参照してください。
フロントパネル定義の構造は次のとおりです。
CONTROL control_name { TYPE control_type CONTAINER_NAME value CONTAINER_TYPE value 外観と動作を定義している他のフィールド }
コントロール定義の TYPE フィールドは、コントロールの基本的な動作を指定します。
TYPE フィールド |
コントロールの動作 |
---|---|
icon |
(デフォルト) コントロールは、コントロールをクリックするかファイルをコントロール上にドロップすると、指定されたアクションを実行します。 |
blank | |
busy |
ビジー・ライト。アクションが起動されると、コントロールが点滅します (イメージを切り替えます)。 |
client | |
clock | |
date | |
file |
この節では、コントロールを定義する一般的な手順と、さまざまな型のコントロールの作成方法を説明します。
コントロールに 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