ワークスペース コントロールを使用して、Maya のワークスペース システム内でドラッグ、ドッキング、保存できるカスタム UI を作成することができます。ワークスペース コントロールは、workspaceControl コマンドを使用して作成されます。このコマンドを呼び出して、内部 UI を作成する uiScript フラグにスクリプトを渡すと、ワークスペース システムはワークスペース コントロールを指定したワークスペースに保存し、次回に開いたときにそのコントロールを適切に復元できるようになります。このスクリプトで呼び出すあらゆるものは、これ以降に Maya を起動し、保存したワークスペースが復元されたときに実行することができます。
MEL スクリプトはソースから取得する必要がありますが、Python モジュールは読み込む必要があります。唯一の例外は次のとおりです。
中央ビューポートの 4 辺の周りにドッキング可能な UI を作成するために使用されていた dockControl コマンドは、ワークスペース コントロールによって置き換えられました。dockControl 機能はサポートされなくなりました。workspaceControl 機能に移行するには、実行時に内部 UI を生成するスクリプトを作成します。この機能を workspaceControl コマンドの呼び出しにアタッチするには、uiScript フラグを使用します。内部 UI を含むウィンドウを作成してから、content フラグを介して dockControl コマンド呼び出しにアタッチすることはできなくなりました。
次の例では、MEL を使用してワークスペース コントロールを作成する最も簡単な方法を示します。この例では、このスクリプトが customWorkspaceControlFile.mel にあることが前提となります。
global proc createCustomWorkspaceControlUI() { columnLayout; button; button; button; }
次のコマンドを実行して、最初のコントロールを作成します。
workspaceControl -retain false -floating true -uiScript "if(!`exists createCustomWorkspaceControlUI`) source customWorkspaceControlFile; createCustomWorkspaceControlUI();" myCustomWorkspaceControl;
Maya コマンド スクリプトを使用して、Python でワークスペース コントロールを作成することができます。ワークスペース コントロールの UI の内容が PySide ベースの場合は、PySide のみが適用されます。
次の操作を実行して、PySide UI 内でワークスペース コントロールを作成します。
Python を使用してワークスペース コントロールを作成する方法の詳細については、dockableWorkspaceWidget.py 開発キット サンプルを参照してください。このサンプルを実行するには、スクリプト エディタ(Script Editor)で開いて実行します。「PyQt および PySide ウィジェットのベスト プラクティス」も参照してください。
C++ を使用している場合は、最初に workspaceControl MEL コマンドを使用してワークスペース コントロールを作成する必要があります。このコマンドを実行するには、MGlobal::executeCommand() メソッドを使用します。次に、MQtUtil::addWidgetToMayaLayout() メソッドを使用して C++ で作成された Qt UI をワークスペース コントロールにペアレント化できます。
workspaceControlCmd.cpp サンプルは、ワークスペース コントロールおよびそれらを含む UI を生成するコマンドの作成方法を示します。また、この UI を workspaceControl の uiScript フラグに渡して、再度開くときに UI を復元する方法も示します。このコマンドはプラグインの一部であるため、requiredPlugin フラグを使用してワークスペース コントロールがこのプラグインを認識し、この UI の復元コマンドを実行できるようにする必要があります。
workspaceControlCmd サンプルをビルドするには、「プラグインでの Qt の使用方法」トピックの「プラグインのビルド」セクションを参照してください。プラグインがビルドされたら、プラグインを Maya にロードし、次の MEL スクリプトを実行します。
workspaceControlWindow;