毎回似た感じになるのに、_buildWindow()の引数やdeleteUIの位置とかで悩むため、
汎用性のこともちょっとを考えて作成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | 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 件のコメント:
コメントを投稿