UI コマンド テンプレート

コマンド テンプレートは ELF コマンドの既定のパラメータを指定する方法です。アプリケーションのユーザ インタフェースで一貫性のある外観をサポートできるように、コマンド テンプレートがあります。テキストの位置揃え、境界線のスタイル、インデントなどの既定の引数を指定することにより、アプリケーションの外観をより理解しやすくできます。アプリケーションの外観は、コマンド テンプレートで既定の引数を変更することにより、1箇所で変更できます。

1 つのテンプレートには、必要に応じた数の ELF コマンドの既定値を保存できます。複数のテンプレートを作成し、いろいろな既定のパラメータのセットを持たせることができます。実行中、既定のパラメータは現在のテンプレートの一部であるコマンドの引数リストに透過的に追加されます。引数リストで明示的に指定されたパラメータはすべて、テンプレートの既定のパラメータよりもオーバーライドして使用されます。既定では、テンプレートが作成されたときに一度だけ解析され、将来の使用に備えて解析された状態で保存されます。

新しい空のコマンド テンプレートを作成するには、「uiTemplate」コマンドを使用します。各コマンドの既定値をテンプレートに追加できます。これには、指定されるテンプレートと既定として使用するパラメータと一緒に、「-dt/defineTemplate」フラグを使用します。テンプレートを現在にするには、「setUITemplate」コマンドを使用します。

テンプレートにはそれぞれ名前が付いています。テンプレートをプッシュしたりポップしたりして、スクリプトの特定のセクションの現在のテンプレートを変更することができます。通常、スクリプトの作成者はプロシージャの開始時に必要なコマンド テンプレートを「プッシュ」して終了時に「ポップ」し、前のテンプレートを復元します。テンプレートが必要ない場合、現在のテンプレートを「NONE」(現在のテンプレートがないことを表すキーワード)に設定しておくと安心です。新しいウィンドウが作成されるたびに、コマンド テンプレートスタックはクリアされるため、ウィンドウを作成したらテンプレートをプッシュする必要があります。また、コマンドでは、「-ut/useTemplate」フラグを使用することにより、現在のテンプレートを変更することなく既存のテンプレートを利用することもできます。

スクリプト 4. コマンド テンプレート

// Create a new template object.
//
if (!`uiTemplate -exists TestTemplate`) {
 uiTemplate TestTemplate;
}
// Add the command default parameters to the template.
//
frameLayout -defineTemplate TestTemplate 
 -borderVisible true -labelVisible true -labelAlign "center"
 -marginWidth 5 -marginHeight 5;
button -defineTemplate TestTemplate -width 150 -label "Default Text";
// Now make a window.
//
window -title "Test Window" ExampleWindow4;
 // Make our template current
 //
 setUITemplate -pushTemplate TestTemplate;
 frameLayout -label "Buttons" TestFrameLayout;
 columnLayout TestColumnLayout;
 button;
 button -label "Not Default Text";
 button;
 // Restore previous, if any template to clean up.
 //
 setUITemplate -popTemplate;
showWindow ExampleWindow4;

このウィンドウはスクリプトの結果を表示します。テンプレート用に定義された既定のパラメータがどのように後続のコマンドに追加されているかに注意してください。たとえば、ボタン コマンドの既定のパラメータとして、ラベル テキスト「Default Text」が追加されています。また、1 番目と 3 番目のボタンは明示的に指定されてはいませんが、既定としてパラメータが適用されています。しかし、2 番目のボタンはラベル テキスト フラグ「Not Default Text」の引数を指定することにより、既定の引数をオーバーロード(多重定義)しています。

コマンドの既定のパラメータは、指定したテンプレートに対して「-dt/defineTemplate」フラグを付けてコマンドを再実行するだけで、いつでも変更できます。上記のテンプレートでボタン コマンドの既定のラベル文字列を変更し、ウィンドウの作成部分を再実行してみましょう。

button -defineTemplate TestTemplate -label "New Default Text";

アクティブなテンプレートを誤って使用しないように、ウィンドウの作成時に「window」コマンドによって現在のテンプレートがクリアされます。「window」コマンドを実行してから「setUITemplate」コマンドを使用しなければ、このコマンドは効力を持ちません。