MetaBox/Scripts/Modeling/Edit/PlugIt/PlugIt_NewTab.py
2025-01-14 02:17:16 +08:00

239 lines
6.1 KiB
Python

## SETTING
from PySide2 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 shiboken2 import wrapInstance
except ImportError:
from shiboken import wrapInstance
try:
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QWidget
except ImportError:
from PySide.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