Files
MetaBox/Scripts/Modeling/Edit/PlugIt/PlugIt_NewTab.py
2025-04-17 04:52:48 +08:00

206 lines
6.1 KiB
Python

## SETTING
from Qt import QtWidgets, QtCore, QtGui
from maya import cmds as mc
import maya.mel as mel
import json
from .Qt import QtWidgets, QtCore, QtCompat
import os
import maya.cmds as cmds
from maya import OpenMayaUI as omui
# Special cases for different Maya versions
try:
from Qt.QtCompat import wrapInstance
except ImportError:
from Qt.QtCompat import wrapInstance
try:
from Qt.QtGui import QIcon
from Qt.QtWidgets import QWidget
except ImportError:
from Qt.QtGui import QIcon, QWidget
import importlib
from . import PlugIt_Global
#importlib.reload(PlugIt_Global)
from . import PlugIt_CSS
#importlib.reload(PlugIt_CSS)
##PATH_SET
IconPath = PlugIt_Global.IconsPathThemeClassic
PreferencePath = PlugIt_Global.PreferencePath
##GLOBAL VAR
WindowsTitle = "Add New Tab"
LIBRARY_PATH = PlugIt_Global.LIBRARY_PATH
ASSET_FAVOURITES_PATH = PlugIt_Global.ASSET_FAVOURITES_PATH
# ________________//
# ___________________________________________
# ________________//
class NewTab_UI(QtWidgets.QDialog):
def __init__(self, parent=None):
super(NewTab_UI, self).__init__()
self.setMinimumSize(400, 120)
self.buildUI()
def buildUI(self):
NEWTABS_MAIN_Layout = QtWidgets.QVBoxLayout(self)
self.setStyleSheet(PlugIt_Global.Theme)
iconButtonSize = PlugIt_Global.IconButtonSize
#############################################
##________________________________________// MAIN TAB
## MAIN TAB LAYOUT
MainNewTab_HLyt = QtWidgets.QHBoxLayout()
NEWTABS_MAIN_Layout.addLayout(MainNewTab_HLyt)
MainNewTab_HLyt.setAlignment(QtCore.Qt.AlignCenter)
## MAIN TAB LABEL
MainNewTab_Label = QtWidgets.QLabel(self)
MainNewTab_Label.setText("MAIN Tab : ")
MainNewTab_HLyt.addWidget(MainNewTab_Label)
self.MainNewTab_Field = QtWidgets.QLineEdit()
self.MainNewTab_Field.setObjectName("UserLibPathField")
MainNewTab_HLyt.addWidget(self.MainNewTab_Field)
##________________________________________// SEPARATOR
separator = QtWidgets.QLabel('')
separator.setMaximumHeight(4)
NEWTABS_MAIN_Layout.addWidget(separator)
##________________________________________// SECOND TAB
## MAIN TAB LAYOUT
SecondNewTab_HLyt = QtWidgets.QHBoxLayout()
NEWTABS_MAIN_Layout.addLayout(SecondNewTab_HLyt)
SecondNewTab_HLyt.setAlignment(QtCore.Qt.AlignCenter)
## Second TAB LABEL
SecondNewTab_Label = QtWidgets.QLabel(self)
SecondNewTab_Label.setText("SUB Tab : ")
SecondNewTab_HLyt.addWidget(SecondNewTab_Label)
self.SecondNewTab_Field = QtWidgets.QLineEdit()
self.SecondNewTab_Field.setObjectName("UserLibPathField")
SecondNewTab_HLyt.addWidget(self.SecondNewTab_Field)
##________________________________________// CREATE BTN
CreateBTN = QtWidgets.QPushButton()
CreateBTN.setText("CREATE TABS")
CreateBTN.setObjectName("AddAsset")
CreateBTN.setFixedHeight(25)
CreateBTN.clicked.connect(self.CREATETABS)
CreateBTN.setShortcut(QtGui.QKeySequence("Return"))
CreateBTN.setToolTip("Create Tabs")
NEWTABS_MAIN_Layout.addWidget(CreateBTN)
NEWTABS_MAIN_Layout.addStretch()
def WarningDeleteLayerYES(self, *args):
favouriteFilePath = ASSET_FAVOURITES_PATH
infoToSave = []
s = json.dumps(infoToSave)
open(favouriteFilePath, "w").write(s)
from . import PlugIt_UI
import importlib
#importlib.reload(PlugIt_UI)
ui = PlugIt_UI.showUI()
def WarningDeleteLayerNO(self, *args):
mc.deleteUI("WarningWindow")
def CREATETABS(self):
MAIN_TAB_NAME = self.MainNewTab_Field.text()
SECOND_TAB_NAME = self.SecondNewTab_Field.text()
#SECURE WARNING
if MAIN_TAB_NAME == "":
PlugIt_Global.WarningWindow("You should give a MAIN Tab Name", 250)
return
if SECOND_TAB_NAME == "":
PlugIt_Global.WarningWindow("You should give a SECOND Tab Name", 250)
return
#CREATE MAIN TAB
try:
MAIN_TAB_PATH = LIBRARY_PATH + "/" + MAIN_TAB_NAME
os.mkdir(MAIN_TAB_PATH)
except:
PlugIt_Global.WarningWindow("MAIN Tab Name already exist, delete it first", 250)
return
#CREATE SECOND TAB*
try:
SECOND_TAB_PATH = MAIN_TAB_PATH + "/" + SECOND_TAB_NAME
os.mkdir(SECOND_TAB_PATH)
except:
PlugIt_Global.WarningWindow("SECOND Tab Name already exist, delete it first", 250)
return
from . import PlugIt_UI
import importlib
#importlib.reload(PlugIt_UI)
ui = PlugIt_UI.showUI()
def Dock(Widget, width=200, height=200, hp="free", show=True):
label = getattr(Widget, "label", WindowsTitle)
try:
cmds.deleteUI(WindowsTitle)
except RuntimeError:
pass
dockControl = cmds.workspaceControl(
WindowsTitle,
initialWidth=width,
minimumWidth=False,
widthProperty=hp,
heightProperty=hp,
label=label
)
dockPtr = omui.MQtUtil.findControl(dockControl)
dockWidget = QtCompat.wrapInstance(int(dockPtr), QtWidgets.QWidget)
dockWidget.setAttribute(QtCore.Qt.WA_DeleteOnClose)
child = Widget(dockWidget)
dockWidget.layout().addWidget(child)
if show:
cmds.evalDeferred(
lambda *args: cmds.workspaceControl(
dockControl,
edit=True,
widthProperty="free",
restore=True
)
)
return child
def showUI():
ui = Dock(NewTab_UI)
ui.show()
if mc.window("Add New Sub Tab", exists=True):
mc.deleteUI("Add New Sub Tab")
# Get a pointer and convert it to Qt Widget object
qw = omui.MQtUtil.findWindow(WindowsTitle)
widget = wrapInstance(int(qw), QWidget)
# Create a QIcon object
icon = QIcon(IconPath + "Windows_Ico2.png")
# Assign the icon
widget.setWindowIcon(icon)
return ui