ウインドウを作って部品(ボタンなど)を配置(レイアウト)してゆく場合にはレイアウトコマンドが必要です。
これまでは columnLayout によって縦 1 列に部品を並べていきましたが、
それ以外の配置をする場合には、そのためのレイアウトコマンドを使用します。
レイアウトコマンドには以下のような種類があります。
サンプルプログラムと図は Layoutの一覧 を参照してください。
いままでは columnLayout のような単純なレイアウトだけでしたが、
ひとつのレイアウトだけではできないような複雑なレイアウトを実現するためには
どうしたら良いでしょうか。
実はレイアウトは入れ子にすることができるので、
いくらでも複雑なレイアウトを作ることができるようになっています。
ただその場合には、どこまでがレイアウトの範囲なのかを決めなければなりません。
ウインドウ上の部品は必ずある 1 つのレイアウトの範囲内にある必要があるからです。
そのためのコマンドとして setParent ..; を使用して、
どこまでが特定のレイアウトの範囲なのかを決めてゆきます。
レイアウトによってボタンを縦・横に並べる GUI を作ってみましょう。
ここではウインドウの部品を横に並べるために rowLayout を使用してみます。
なお、このスクリプトはレイアウトの練習なので各ボタンを押しても何も実行しません。
window -title "layout1";
columnLayout;
button -label "A";
rowLayout -numberOfColumns 2 -columnWidth2 20 20;
button -label "B";
button -label "C";
setParent ..;
button -label "D";
rowLayout -numberOfColumns 3 -columnWidth3 20 20 20;
button -label "E";
button -label "F";
button -label "G";
setParent ..;
showWindow;
window -title "layout1";
columnLayout;
button -label "A";
rowLayout -numberOfColumns 2 -columnWidth2 20 20;
このコマンドにより、これ以後作られる部品は横 1 列に並んでゆきます。
button -label "B";
button -label "C";
setParent ..;
button -label "D";
rowLayout -numberOfColumns 3 -columnWidth3 20 20 20;
button -label "E";
button -label "F";
button -label "G";
setParent ..;
showWindow;
上の setParent コマンドの説明で、
このコマンドはレイアウトの範囲を区切るために使うと説明してきましたが、
今までのウインドウを作成するスクリプトでは setParent コマンドは使っていませんでした。
実は、今までの各スクリプトの最初に実行されている columnLayout コマンドに対応する setParent コマンドは省略しているだけなので、
実行しても問題ありません。
省略しないとどうなるかは、以下のスクリプトを実行してみるとわかります。
window;
columnLayout;
setParent ..;
showWindow;
実行すると何もないウインドウが表示されます。
表示された後で、
button;
コマンドを実行してみてください。
するとウインドウにボタンが現れます。
同様に、部品を作るコマンド(スライダーなど)を実行すると、
ウインドウに部品が追加されてゆくのがわかると思います。。