70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from maya import OpenMaya, mel, cmds
|
|
import pymel.core as pm
|
|
import pymel.core as pm
|
|
from maya import cmds, mel, utils, OpenMaya
|
|
|
|
import os
|
|
import sys
|
|
from PySide6.QtCore import Qt, QByteArray
|
|
from PySide6.QtWidgets import QApplication, QMainWindow, QDockWidget, QListWidget, QTextEdit, QPushButton, QWidget
|
|
from PySide6.QtCore import QSettings, QDataStream
|
|
|
|
|
|
class MainWindow(QMainWindow):
|
|
def __init__(self, parent=None):
|
|
super(MainWindow, self).__init__(parent)
|
|
|
|
|
|
self.setObjectName('MainWindow')
|
|
b = QPushButton('此为中央控件,点击保存布局')
|
|
b.clicked.connect(self.save_layout)
|
|
self.setCentralWidget(b)
|
|
|
|
self.setWindowTitle('Dock 例子')
|
|
self.load_layout()
|
|
def save_layout(self):
|
|
settings = QSettings(r"C:\Users\Jcen\PycharmProjects\pythonProject\settings.ini", QSettings.IniFormat)
|
|
settings.setValue("geometry", self.saveGeometry())
|
|
settings.setValue("state", self.saveState())
|
|
|
|
settings.beginGroup("dockWidgets")
|
|
dock_widgets = self.findChildren(QDockWidget)
|
|
for dock_widget in dock_widgets:
|
|
settings.setValue("%s%s" % (dock_widget.windowTitle(), dock_widget.objectName()), dock_widget.saveGeometry())
|
|
|
|
def load_layout(self):
|
|
settings = QSettings(r"C:\Users\Jcen\PycharmProjects\pythonProject\settings.ini", QSettings.IniFormat)
|
|
settings.beginGroup("dockWidgets")
|
|
for key in settings.allKeys():
|
|
self.items = QDockWidget('%s' % (key[:-1]), self)
|
|
self.items.setObjectName('%s' % (key[-1:]))
|
|
self.addDockWidget(Qt.RightDockWidgetArea, self.items)
|
|
|
|
settings.endGroup()
|
|
self.restoreGeometry(settings.value("geometry"))
|
|
self.restoreState(settings.value("state"))
|
|
|
|
|
|
def create_tab(
|
|
dock_name,
|
|
widget,
|
|
label='WidgetLabel',
|
|
dockTab='Channel Box / Layer Editor'
|
|
):
|
|
cmds.workspaceControl(dock_name, uiScript='', label=label)
|
|
cmds.control(str(widget.objectName()), e=True, p=dock_name)
|
|
tab_result = mel.eval('getUIComponentDockControl("{}", false)'.format(dockTab))
|
|
cmds.workspaceControl(dock_name, e=True, tabToControl=(tab_result, -1))
|
|
|
|
if OpenMaya.MGlobal.mayaState() == OpenMaya.MGlobal.kInteractive:
|
|
|
|
# create project manager tab
|
|
mayaProjectManager = MainWindow()
|
|
create_tab(
|
|
'ProjectManagerDock1201111',
|
|
mayaProjectManager,
|
|
label='Project Manager'
|
|
)
|