ツール用のウィンドウを作成する時の雛形。
毎回似た感じになるのに、
_buildWindow()の引数や
deleteUIの位置とかで悩むため、
汎用性のこともちょっとを考えて作成。
proc _setupMainLayout(
string $parent )
{
setParent $parent;
//------------------------------------------------------------------------------
// コントローラの追加・編集はここから
columnLayout;
button;
button;
button;
}
proc _setupWindow(
string $window )
{
if(`window -q -mb $window`)
{
string $menu0=`menu -l "File"`;
string $menu1=`menu -l "Edit"`;
string $help =`menu -l "Help" -hm true`;
}
int $w=320;
int $h=160;
//------------------------------------------------------------------------------
string $mainForm=`formLayout`;
string $mainLayout=`scrollLayout -w $w -h $h`;/** 希望のlayoutに変更 **/
formLayout -e
-af $mainLayout "top" 0
-af $mainLayout "left" 0
-af $mainLayout "right" 0
-af $mainLayout "bottom" 0
$mainForm;
//------------------------------------------------------------------------------
_setupMainLayout( $mainLayout );
//------------------------------------------------------------------------------
window -e -w $w -h $h $window;
}
proc _createWindow(
string $toolName,
string $window )
{
string $title=`interToUI $toolName`;
window
-title $title
//-toolbox true
//-menuBar true
//-sizeable false
$window;
}
proc _buildToolWindow(
string $toolName,
string $window )
{
if(`window -ex $window`)
{
deleteUI $window;/** for debug. **/
//return;
}
_createWindow( $toolName,$window );
_setupWindow( $window );
//------------------------------------------------------------------------------
// 必要ならジョブの追加
//scriptJob -e "event" "script" -p $window;
}
global proc sampleUI()
{
string $toolName="sampleUI";/** スクリプト名推奨 **/
string $window=($toolName+"Window");
_buildToolWindow( $toolName,$window );
showWindow $window;
}
まず、88行目で
$toolNameをスクリプト名に変更。
71行目はデバッグ中スクリプトがエラー停止し、次回実行時に
Object's name '
sampleUIWindow' is not unique.
みたいなのを出さないようにするためのもの。
リリースする時はコメントアウトして、
return;だけに変更。
81行目にwindowにアタッチしたいジョブを追加。
コレの位置が92行に追加するか迷う部分。
main procedureを簡素にするため
_buildToolWindow()の中へ追加していくことに。
55行目からの
windowコマンドは使うオプションのみコメント外して使う。
-toolbox,
-menuBar,
-sizeable だいたいこの3つしか使っていない気がする。
window に menu を追加した場合、20行目のブロック内に
menuItem を追加するプロシージャ追加。
31行目の layout の子にUIを追加していく。
buttonだけとかなら、ここで指定したwidth,height以下に window は小さくならないはず。
で、
_setupMainLayout()が本体。
結構いじる場所が分散してしまった。