ワークスペース コントロールを記述する

ワークスペース コントロールを使用して、Maya のワークスペース システム内でドラッグ、ドッキング、保存できるカスタム UI を作成することができます。ワークスペース コントロールは、workspaceControl コマンドを使用して作成されます。このコマンドを呼び出して、内部 UI を作成する uiScript フラグにスクリプトを渡すと、ワークスペース システムはワークスペース コントロールを指定したワークスペースに保存し、次回に開いたときにそのコントロールを適切に復元できるようになります。このスクリプトで呼び出すあらゆるものは、これ以降に Maya を起動し、保存したワークスペースが復元されたときに実行することができます。

MEL スクリプトはソースから取得する必要がありますが、Python モジュールは読み込む必要があります。唯一の例外は次のとおりです。

中央ビューポートの 4 辺の周りにドッキング可能な UI を作成するために使用されていた dockControl コマンドは、ワークスペース コントロールによって置き換えられました。dockControl 機能はサポートされなくなりました。workspaceControl 機能に移行するには、実行時に内部 UI を生成するスクリプトを作成します。この機能を workspaceControl コマンドの呼び出しにアタッチするには、uiScript フラグを使用します。内部 UI を含むウィンドウを作成してから、content フラグを介して dockControl コマンド呼び出しにアタッチすることはできなくなりました。

MEL を使用してワークスペース コントロールを作成する

次の例では、MEL を使用してワークスペース コントロールを作成する最も簡単な方法を示します。この例では、このスクリプトが customWorkspaceControlFile.mel にあることが前提となります。

    global proc createCustomWorkspaceControlUI()
    {
                    columnLayout;
                    button;
                    button;
                    button;
    }

次のコマンドを実行して、最初のコントロールを作成します。

workspaceControl -retain false -floating true 
-uiScript "if(!`exists createCustomWorkspaceControlUI`) source customWorkspaceControlFile; createCustomWorkspaceControlUI();" 
myCustomWorkspaceControl;

Python と Pyside のバインディングを使用してワークスペース コントロールを作成する

Maya コマンド スクリプトを使用して、Python でワークスペース コントロールを作成することができます。ワークスペース コントロールの UI の内容が PySide ベースの場合は、PySide のみが適用されます。

次の操作を実行して、PySide UI 内でワークスペース コントロールを作成します。

  1. MayaQWidgetDockableMixin クラスから最上位のウィジェットを取得します。
  2. dockableTrue に設定された状態で show() に対する呼び出しを使用して、ウィジェットを開きます。
  3. uiScript に、このウィジェットを再作成するスクリプトを設定します。このスクリプトでは、MQtUtil.addWidgetToMayaLayout を使用して、再作成されたウィジェットを復元されたワークスペース コントロール(MQtUtil.findControl を使用して検索)にペアレント化する必要があります。

Python を使用してワークスペース コントロールを作成する方法の詳細については、dockableWorkspaceWidget.py devkit サンプルを参照してください。このサンプルを実行するには、スクリプト エディタ(Script Editor)で開いて実行します。 「PyQt および PySide ウィジェットのベスト プラクティス」も参照してください。

C++ を使用してワークスペース コントロールを作成する

C++ を使用している場合は、最初に workspaceControl MEL コマンドを使用してワークスペース コントロールを作成する必要があります。このコマンドを実行するには、MGlobal::executeCommand() メソッドを使用します。次に、MQtUtil::addWidgetToMayaLayout() メソッドを使用して C++ で作成された Qt UI をワークスペース コントロールにペアレント化できます。

workspaceControlCmd.cpp サンプルは、ワークスペース コントロールおよびそれらを含む UI を生成するコマンドの作成方法を示します。また、この UI を workspaceControl の uiScript フラグに渡して、再度開くときに UI を復元する方法も示します。このコマンドはプラグインの一部であるため、requiredPlugin フラグを使用してワークスペース コントロールがこのプラグインを認識し、この UI の復元コマンドを実行できるようにする必要があります。

workspaceControlCmd サンプルをビルドするには、「プラグインでの Qt の使用方法」トピックの「プラグインのビルド」セクションを参照してください。 プラグインがビルドされたら、プラグインを Maya にロードし、次の MEL スクリプトを実行します。

workspaceControlWindow; .