2016年5月24日火曜日

window作成のための雛形

ツール用のウィンドウを作成する時の雛形。

毎回似た感じになるのに、_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()が本体。



結構いじる場所が分散してしまった。

0 件のコメント:

コメントを投稿