2020年7月9日木曜日

windowの状態をリセットする。

mayaでは、ウィンドウを閉じるとき、windowsであれば、ドキュメント内のmayaVersion\prefs にあるwindowPrefs.melに左上隅の座標とウィンドウの縦横サイズを保存しています。
そんな、ウィンドウの位置をMELでリセットする方法。


ウィンドウの位置やサイズをリセットするだけなら、windowPrefs.melの該当箇所を直接削除するというのが豪快なのですが、不慣れな人には安全ではないので、お勧めできない感じです。
だれでも手軽に削除するにはスクリプトで実行することになると思いますが、特に、自作ツールから自分のウィンドウサイズを削除する場合には、ちょっとしたコツが必要です。
global proc deleteMyPref(string $window)
{
    // ウィンドウの削除
    deleteUI -wnd $window;
    
    // ウィンドウの windowPrefが有ったら除去
    if(`windowPref -ex $window`) windowPref -r $window;
    
}


{
    string $window ="myWindow";
    if(`window -ex $window`) deleteUI -wnd $window;
    
    window $window;
        columnLayout;
            button -l "delete Pref" -c ("deleteMyPref "+$window);
    
    showWindow $window;
    
}
これをスクリプトエディタで実行すると、こんなウィンドウが出てきます。

適当な大きさに変更して、再度スクリプトを実行すると閉じたときと同じ大きさでウィンドウサイズで開くはずです。
で、[delete Pref]ボタンをクリックして閉じた場合、画像と同じ初期の大きさでウィンドウが開きます。

ボタンをクリックすると、まず、windowを削除します。(4行目)
その後、windowPrefを除去します。(7行目)
まぁ、当たり前と言えば当たり前なんですが、windowPrefを除去してからwindowを削除すると、除去したwindowPrefが再度書き込まれてしまいます。

で、最近は、エディタをwindowPrefとは違う部分に保存している事があります。
dockControlコマンドの最後に紹介した、optionVarを使ってコントローラの配置を記憶するものです。
このoptionVarコマンドは、windowPrefs.melと同じフォルダにあるuserPrefs.melというファイルに保存しています。
エディタを作成しているスクリプトに依存しますが、optionVarの-svフラグで16進数の羅列のような値を持っているものが相当します。


0 件のコメント:

コメントを投稿