2020年6月25日木曜日

自作ツールをドッキングさせる。その2

maya のパネル配置に workspace の機能が追加された頃から、メインウィンドウとドッキングさせるためのコマンドが大幅に変更されたようです。
toolBarコマンドは使い物にならなくなり、ドッキングさせるためのコマンド workspaceControlscriptedPanelというコマンドが新たに追加されました。


まずは workspaceControl から、コマンドヘルプのサンプルコードはこんな感じになっています。
global proc createCustomWorkspaceControlUI()
{
    columnLayout;
    button;
    button;
    button;
}


workspaceControl
    -retain false
    -floating true
    -uiScript "createCustomWorkspaceControlUI();"
    myCustomWorkspaceControl;



これをスクリプトエディタで実行すると、こんなウィンドウが作成されます。
これを、Attribute Editor や Tool Settings みたいに mayaのメインパネルへドラッグしていくと、普通にドッキングしてくれます。
ただし、workspacePanel で作成されたウィンドウは、maya本体の制御の影響を受けるようで、Windows > Workspaces > Disable Docking/Undocking が off になっていないとドッキングしません。そんな時は、ウィンドウ右上端にある鍵マークのハイライトを消します。

使いこなすには、コマンドヘルプのフラグを熟読する必要がありますが、注目するフラグは、-dockToMainWindow(-dtm)。これを設定することで、旧 toolBarのようにドッキング位置を制御できます。
さらに、-collapse(-clp) や -dockToPanel(-dtp)を設定することでchannelBoxのように、ドッキングさせたときの折り畳みやタブ化させることも可能になります。
上のサンプルコードに下を追加して実行してみます。
workspaceControl
    -retain false
    -floating true
    -collapse true
    -dockToPanel "myCustomWorkspaceControl" "bottom" true
    -uiScript "createCustomWorkspaceControlUI();"
    secondCustomWorkspaceControl;

いったんウィンドウを閉じてからスクリプトを実行すると、1つのウィンドウにドッキングした状態になります。


mayaのメインウィンドウに表示されている大部分のGUIは、このworkspaceControl で作成されているようです。
ただ、直接このコマンドを実行しているわけではなくて、UIComponents.mel というユーティリティの中から、createUIComponentDockControl()とかで作成されています。
LTには入っていませんが、このMELのサンプルがCドライブに存在しているので、極めたい場合は、参考にすると良いでしょう。


このコマンドで作成されたUIは、どこにでもドッキングしてしまうという欠点があります。
あと、ドッキングすると、ウィンドウタイトルが消えます。ウィンドウじゃないから当たり前だけど・・・。
そして、ウィンドウじゃないので、windowPref.melに出現座標が保存されないのに、どこか分からないところへ座標とか配置の状態が記録されます。どこに保存されているのかは要調査。
こういうブラックボックスがあると、ちょっと気持ち悪い。

最近、スクリプトエディタやアウトライナを、フローティング状態にして、で mayaを終了させ、再起動した時に、前回の配置で復帰してくるのはコレが原因だと思います。
これを機に uiConfigurationScriptNode を廃止してほしい・・・。


0 件のコメント:

コメントを投稿