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」コマンドを使用しなければ、このコマンドは効力を持ちません。