##-------------------------------------------------------------------------- ## ScriptName : ModIt 3.0 ## Author : Wizix ## StartDate : 2022/09/09 ## LastUpdate : 2022/13/09 ## Version : 0.0.1 ##-------------------------------------------------------------------------- I M P O R T # Import Qt from project's unified Qt.py module import sys as _sys import os as _os # Add parent scripts directory to sys.path _modit_dir = _os.path.dirname(_os.path.abspath(__file__)) _scripts_dir = _modit_dir while _os.path.basename(_scripts_dir) != 'scripts' and _scripts_dir != _os.path.dirname(_scripts_dir): _scripts_dir = _os.path.dirname(_scripts_dir) if _scripts_dir not in _sys.path: _sys.path.insert(0, _scripts_dir) from Qt import QtWidgets, QtCore, QtGui, QtCompat # Use QtCompat for cross-version compatibility wrapInstance = QtCompat.wrapInstance QIcon = QtGui.QIcon QWidget = QtWidgets.QWidget from maya import cmds as mc import maya.cmds as cmds import maya.mel as mel import json import os from maya import OpenMayaUI as omui from functools import partial ##---------------------------------------- Import Modules import importlib from . import ModIt_Global importlib.reload(ModIt_Global) from . import ModIt_CSS importlib.reload(ModIt_CSS) ##---------------------------------------- Import Classes from .Class import Collapsible importlib.reload(Collapsible) from .Modeling import Section_PRIMITIVES importlib.reload(Section_PRIMITIVES) from .Modeling import Section_COLORS importlib.reload(Section_COLORS) from .Modeling import Section_SETS importlib.reload(Section_SETS) from .Modeling import Section_SELECTIONS importlib.reload(Section_SELECTIONS) from .Modeling import Section_MESH importlib.reload(Section_MESH) from .Modeling import Section_TOOLS importlib.reload(Section_TOOLS) from .Modeling import Section_UTILITIES importlib.reload(Section_UTILITIES) from .Placement import Layout_PLACEMENT importlib.reload(Layout_PLACEMENT) from .Setting import Layout_SETTING importlib.reload(Layout_SETTING) from .Shading import Layout_SHADING importlib.reload(Layout_SHADING) ##-------------------------------------------------------------------------- G L O B A L V A R ##PATH_SET IconPath = ModIt_Global.IconsPathThemeClassic PreferencePath = ModIt_Global.PreferencePath ToolsPath = ModIt_Global.ToolPath RessourcePath = ModIt_Global.RessourcePath #GLOBAR VAR UI WINDOW_TITLE = ModIt_Global.ModItTitle ##JSON PREF DATA ADAP_HEIGHT = (json.load(open(PreferencePath + 'UI_Adapt_Height.json',"r"))['VALUE']) TAB_OPEN =(json.load(open(PreferencePath + 'TabOpen.json',"r"))['TAB_OPEN']) S_UTILITIES_VALUE =(json.load(open(PreferencePath + 'Section_Utilities.json',"r"))['VALUE']) S_PRIMITIVES_VALUE =(json.load(open(PreferencePath + 'Section_Primitives.json',"r"))['VALUE']) S_COLORS_VALUE =(json.load(open(PreferencePath + 'Section_Colors.json',"r"))['VALUE']) S_SELECTIONS_VALUE =(json.load(open(PreferencePath + 'Section_Selections.json',"r"))['VALUE']) S_MESH_VALUE =(json.load(open(PreferencePath + 'Section_Mesh.json',"r"))['VALUE']) S_SETS_VALUE =(json.load(open(PreferencePath + 'Section_Sets.json',"r"))['VALUE']) S_TOOLS_VALUE =(json.load(open(PreferencePath + 'Section_Tools.json',"r"))['VALUE']) WIN_DISPLAY_SIZE =(json.load(open(PreferencePath + 'WinSize.json',"r"))['VALUE']) DOCK =(json.load(open(PreferencePath + 'Dockable.json',"r"))['VALUE']) ##-------------------------------------------------------------------------- B U I L D U I def maya_main_window(): main_window_ptr = omui.MQtUtil.mainWindow() ##Return the Maya main window widget as a Python object return wrapInstance(int(main_window_ptr), QtWidgets.QWidget) class ModIt_UI(QtWidgets.QDialog): if DOCK == 0: def __init__(self, parent=maya_main_window()): super(ModIt_UI, self).__init__(parent) ##__________________________________________________________________ SAVE UI POSITION self.settings_path = os.path.join(PreferencePath + "settingsFile.ini") ##__________________________________________________________________ WINDOWS SETTING self.setWindowTitle(WINDOW_TITLE) self.setFixedSize(340, ADAP_HEIGHT) icon = QIcon(IconPath + "ModIt_Window_Ico.png") self.setWindowIcon(icon) self.buildUI() else: def __init__(self, parent=None): super(ModIt_UI, self).__init__() ##__________________________________________________________________ SAVE UI POSITION self.settings_path = os.path.join(PreferencePath + "settingsFile.ini") self.setMinimumSize(400, 660) self.buildUI() def buildUI(self): open(PreferencePath + 'JobNumber.json', "w").write(json.dumps({"JOB_NUMBER": 0})) # ****************************************** # BUTTONS PARAMS # ****************************************** Tab_iconFixeSize = 30 Tab_iconButtonSize = 24 iconFixeSize = ModIt_Global.iconFixeSize iconButtonSize = ModIt_Global.iconButtonSize separatorWidth = ModIt_Global.separatorWidth ##__________________// UI - Import CSS self.setStyleSheet(ModIt_Global.Theme) ##_________________// Restore Previous Position settings_obj = QtCore.QSettings(self.settings_path, QtCore.QSettings.IniFormat) self.restoreGeometry(settings_obj.value("windowGeometry")) ##_________________// GLOBAL LAYOUT GLOBAL_Lyt = QtWidgets.QVBoxLayout(self) GLOBAL_Lyt.setSpacing(0) GLOBAL_Lyt.setContentsMargins(0, 0, 0, 0) ##------------------------------------------------------------------------------------// ##------------------------------------------------------------------------------------------------------// TABS ##------------------------------------------------------------------------------------// self.TABSBAR_Widget = QtWidgets.QWidget() self.TABSBAR_Widget.setStyleSheet("background-color:#222222;") #TABS BG - Pose problem bg color self.TABSBAR_Lyt = QtWidgets.QHBoxLayout(self.TABSBAR_Widget) self.TABSBAR_Lyt.setAlignment(QtCore.Qt.AlignTop) self.TABSBAR_Lyt.setContentsMargins(0, 0, 0, 0) self.TABSBAR_Lyt.setSpacing(0) GLOBAL_Lyt.addWidget(self.TABSBAR_Widget) ##______________________________________________________/ BTN MODELING TAB self.ModelingTab_Btn = QtWidgets.QPushButton() if TAB_OPEN == 0: self.ModelingTab_Btn.setIcon(QtGui.QIcon(IconPath + "MODELING_ON.png")) self.ModelingTab_Btn.setStyleSheet("background-color:#303030;") else: self.ModelingTab_Btn.setIcon(QtGui.QIcon(IconPath + "MODELING_OFF.png")) self.ModelingTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") self.ModelingTab_Btn.setFixedSize(Tab_iconFixeSize,Tab_iconFixeSize) self.ModelingTab_Btn.setIconSize(QtCore.QSize(Tab_iconButtonSize, Tab_iconButtonSize)) self.ModelingTab_Btn.setToolTip(" ModIt ") self.ModelingTab_Btn.clicked.connect(self.ModelingTab_ON) self.TABSBAR_Lyt.addWidget(self.ModelingTab_Btn) ##______________________________________________________/ BTN SHADING TAB self.ShadingTab_Btn = QtWidgets.QPushButton() if TAB_OPEN == 1: self.ShadingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SHADING_ON.png")) self.ShadingTab_Btn.setStyleSheet("background-color:#303030;") else: self.ShadingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SHADING_OFF.png")) self.ShadingTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") self.ShadingTab_Btn.setFixedSize(Tab_iconFixeSize,Tab_iconFixeSize) self.ShadingTab_Btn.setIconSize(QtCore.QSize(Tab_iconButtonSize, Tab_iconButtonSize)) self.ShadingTab_Btn.clicked.connect(self.ShadingTab_ON) self.ShadingTab_Btn.setToolTip(" ViewportIt ") self.TABSBAR_Lyt.addWidget(self.ShadingTab_Btn) ##______________________________________________________/ BTN PLACEMENT TAB self.PlacementTab_Btn = QtWidgets.QPushButton() if TAB_OPEN == 2: self.PlacementTab_Btn.setIcon(QtGui.QIcon(IconPath + "PLACEMENT_ON.png")) self.PlacementTab_Btn.setStyleSheet("background-color:#303030;") else: self.PlacementTab_Btn.setIcon(QtGui.QIcon(IconPath + "PLACEMENT_OFF.png")) self.PlacementTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\QPushButton::hover{background-color : #343434;}") self.PlacementTab_Btn.setFixedSize(Tab_iconFixeSize,Tab_iconFixeSize) self.PlacementTab_Btn.setIconSize(QtCore.QSize(Tab_iconButtonSize, Tab_iconButtonSize)) self.PlacementTab_Btn.clicked.connect(self.PlacementTab_ON) self.PlacementTab_Btn.setToolTip(" Placement ") self.TABSBAR_Lyt.addWidget(self.PlacementTab_Btn) ##______________________________________________________/ BTN SETTING TAB self.SettingTab_Btn = QtWidgets.QPushButton() if TAB_OPEN == 3: self.SettingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SETTING_ON.png")) self.SettingTab_Btn.setStyleSheet("background-color:#303030;") else: self.SettingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SETTING_OFF.png")) self.SettingTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\QPushButton::hover{background-color : #343434;}") self.SettingTab_Btn.setFixedSize(Tab_iconFixeSize,Tab_iconFixeSize) self.SettingTab_Btn.setIconSize(QtCore.QSize(Tab_iconButtonSize, Tab_iconButtonSize)) self.SettingTab_Btn.clicked.connect(self.SettingTab_ON) self.SettingTab_Btn.setToolTip(" Setting ") self.TABSBAR_Lyt.addWidget(self.SettingTab_Btn) ##------------------------------------------------------------------------------------// ##------------------------------------------------------------------------------------------------------// T A B M O D E L I N G ##------------------------------------------------------------------------------------// self.TAB_MODELING_Widget = QtWidgets.QWidget() GLOBAL_Lyt.addWidget(self.TAB_MODELING_Widget) self.ALL_SECTIONS_HLyt = QtWidgets.QVBoxLayout(self.TAB_MODELING_Widget) self.ALL_SECTIONS_HLyt.setContentsMargins(0, 0, 0, 0) self.ALL_SECTIONS_HLyt.setSpacing(5)# BETWEEN SECTIONS self.ALL_SECTIONS_HLyt.setAlignment(QtCore.Qt.AlignTop) ##_________________________________________________________________________________________________________________/ U T I L I T E S self.Collapsible_wdg_SETS = Collapsible.CollapsibleWidget("U T I L I T E S") self.Collapsible_wdg_SETS.set_expanded(S_UTILITIES_VALUE) self.Collapsible_wdg_SETS.collapsed_signal.connect(partial(self.Section_OpenClose_btn, "Utilities", 40)) self.Collapsible_wdg_SETS.add_widget(Section_UTILITIES.UTILITIES_LAYOUT()) self.ALL_SECTIONS_HLyt.addWidget(self.Collapsible_wdg_SETS) ## _____________________________________________________/ Separator self.ALL_SECTIONS_HLyt.addSpacing(2) self.Separator = QtWidgets.QLabel() self.Separator.setFixedSize(2000,2) self.Separator.setStyleSheet("background-color:#262626;") self.ALL_SECTIONS_HLyt.addWidget(self.Separator) ##_________________________________________________________________________________________________________________/ P R I M I T I V E S self.Collapsible_wdg_PRIMITIVES = Collapsible.CollapsibleWidget("P R I M I T I V E S") self.Collapsible_wdg_PRIMITIVES.set_expanded(S_PRIMITIVES_VALUE) self.Collapsible_wdg_PRIMITIVES.collapsed_signal.connect(partial(self.Section_OpenClose_btn, "Primitives", 40)) self.Collapsible_wdg_PRIMITIVES.add_widget(Section_PRIMITIVES.PRIMITIVES_LAYOUT()) self.ALL_SECTIONS_HLyt.addWidget(self.Collapsible_wdg_PRIMITIVES) ## _____________________________________________________/ Separator self.ALL_SECTIONS_HLyt.addSpacing(2) self.Separator = QtWidgets.QLabel() self.Separator.setFixedSize(2000,2) self.Separator.setStyleSheet("background-color:#262626;") self.ALL_SECTIONS_HLyt.addWidget(self.Separator) ##_________________________________________________________________________________________________________________/ C O L O R S self.Collapsible_wdg_COLORS = Collapsible.CollapsibleWidget("C O L O R S") self.Collapsible_wdg_COLORS.set_expanded(S_COLORS_VALUE) self.Collapsible_wdg_COLORS.collapsed_signal.connect(partial(self.Section_OpenClose_btn, "Colors", 40)) self.Collapsible_wdg_COLORS.add_widget(Section_COLORS.COLORS_LAYOUT()) self.ALL_SECTIONS_HLyt.addWidget(self.Collapsible_wdg_COLORS) ## _____________________________________________________/ Separator self.ALL_SECTIONS_HLyt.addSpacing(2) self.Separator = QtWidgets.QLabel() self.Separator.setFixedSize(2000,2) self.Separator.setStyleSheet("background-color:#262626;") self.ALL_SECTIONS_HLyt.addWidget(self.Separator) ##_________________________________________________________________________________________________________________/ S E L E C T I O N S self.Collapsible_wdg_SELECTIONS = Collapsible.CollapsibleWidget("S E L E C T I O N S") self.Collapsible_wdg_SELECTIONS.set_expanded(S_SELECTIONS_VALUE) self.Collapsible_wdg_SELECTIONS.collapsed_signal.connect(partial(self.Section_OpenClose_btn, "Selections", 40)) self.Collapsible_wdg_SELECTIONS.add_widget(Section_SELECTIONS.SELECTIONS_LAYOUT()) self.ALL_SECTIONS_HLyt.addWidget(self.Collapsible_wdg_SELECTIONS) ## _____________________________________________________/ Separator self.ALL_SECTIONS_HLyt.addSpacing(2) self.Separator = QtWidgets.QLabel() self.Separator.setFixedSize(2000,2) self.Separator.setStyleSheet("background-color:#262626;") self.ALL_SECTIONS_HLyt.addWidget(self.Separator) ##_________________________________________________________________________________________________________________/ M E S H self.Collapsible_wdg_MESH = Collapsible.CollapsibleWidget("M E S H") self.Collapsible_wdg_MESH.set_expanded(S_MESH_VALUE) self.Collapsible_wdg_MESH.collapsed_signal.connect(partial(self.Section_OpenClose_btn, "Mesh", 110)) self.Collapsible_wdg_MESH.add_widget(Section_MESH.MESH_LAYOUT()) self.ALL_SECTIONS_HLyt.addWidget(self.Collapsible_wdg_MESH) ## _____________________________________________________/ Separator self.ALL_SECTIONS_HLyt.addSpacing(2) self.Separator = QtWidgets.QLabel() self.Separator.setFixedSize(2000,2) self.Separator.setStyleSheet("background-color:#262626;") self.ALL_SECTIONS_HLyt.addWidget(self.Separator) ##_________________________________________________________________________________________________________________/ S E T S self.Collapsible_wdg_SETS = Collapsible.CollapsibleWidget("S E T S") self.Collapsible_wdg_SETS.set_expanded(S_SETS_VALUE) self.Collapsible_wdg_SETS.collapsed_signal.connect(partial(self.Section_OpenClose_btn, "Sets", 85)) self.Collapsible_wdg_SETS.add_widget(Section_SETS.SETS_LAYOUT()) self.ALL_SECTIONS_HLyt.addWidget(self.Collapsible_wdg_SETS) ## _____________________________________________________/ Separator self.ALL_SECTIONS_HLyt.addSpacing(2) self.Separator = QtWidgets.QLabel() self.Separator.setFixedSize(2000,2) self.Separator.setStyleSheet("background-color:#262626;") self.ALL_SECTIONS_HLyt.addWidget(self.Separator) ##_________________________________________________________________________________________________________________/ T O O L S self.Collapsible_wdg_TOOLS = Collapsible.CollapsibleWidget("T O O L S") self.Collapsible_wdg_TOOLS.set_expanded(S_TOOLS_VALUE) self.Collapsible_wdg_TOOLS.collapsed_signal.connect(partial(self.Section_OpenClose_btn, "Tools", 40)) self.Collapsible_wdg_TOOLS.add_widget(Section_TOOLS.TOOLS_LAYOUT()) self.ALL_SECTIONS_HLyt.addWidget(self.Collapsible_wdg_TOOLS) ##------------------------------------------------------------------------------------// ##------------------------------------------------------------------------------------------------------// T A B S H A D I N G ##------------------------------------------------------------------------------------// self.TAB_SHADING_Widget = QtWidgets.QWidget() GLOBAL_Lyt.addWidget(self.TAB_SHADING_Widget) self.TAB_SHADING_Lyt = QtWidgets.QVBoxLayout(self.TAB_SHADING_Widget) self.TAB_SHADING_Lyt.addWidget(Layout_SHADING.SHADING_LAYOUT()) ##------------------------------------------------------------------------------------// ##------------------------------------------------------------------------------------------------------// T A B P L A C E M E N T ##------------------------------------------------------------------------------------// self.TAB_PLACEMENT_Widget = QtWidgets.QWidget() GLOBAL_Lyt.addWidget(self.TAB_PLACEMENT_Widget) self.TAB_PLACEMENT_Lyt = QtWidgets.QVBoxLayout(self.TAB_PLACEMENT_Widget) self.TAB_PLACEMENT_Lyt.addWidget(Layout_PLACEMENT.PLACEMENT_LAYOUT()) ##------------------------------------------------------------------------------------// ##------------------------------------------------------------------------------------------------------// T A B S E T T I N G ##------------------------------------------------------------------------------------// self.TAB_SETTING_Widget = QtWidgets.QWidget() GLOBAL_Lyt.addWidget(self.TAB_SETTING_Widget) self.TAB_SETTING_Lyt = QtWidgets.QVBoxLayout(self.TAB_SETTING_Widget) self.TAB_SETTING_Lyt.addWidget(Layout_SETTING.SETTING_LAYOUT()) ##__________________________________________________________________// UI - END self.ALL_SECTIONS_HLyt.addStretch() self.TAB_SHADING_Lyt.addStretch() self.TAB_PLACEMENT_Lyt.addStretch() self.TAB_SETTING_Lyt.addStretch() ##_______________/ AT SCRIPT OPENING SET HIDE/SHOW TABS if TAB_OPEN == 0: self.ModelingTab_ON() if TAB_OPEN == 1: self.ShadingTab_ON() if TAB_OPEN == 2: self.PlacementTab_ON() if TAB_OPEN == 3: self.SettingTab_ON() ##_________________________________________________________________________________// ACTIONS DEF ##_____________________________________________________________ ##______________________________________________________/ TABS BAR def ModelingTab_ON(self): ADAP_HEIGHT = (json.load(open(PreferencePath + 'UI_Adapt_Height.json', "r"))['VALUE']) self.TAB_MODELING_Widget.show() self.TAB_SHADING_Widget.hide() self.TAB_PLACEMENT_Widget.hide() self.TAB_SETTING_Widget.hide() if DOCK == 0: self.setFixedHeight(ADAP_HEIGHT) self.resize(self.width(), ADAP_HEIGHT) self.ModelingTab_Btn.setIcon(QtGui.QIcon(IconPath + "MODELING_ON.png")) self.ModelingTab_Btn.setStyleSheet("background-color:#303030;") # TABS BTN BG - ACTIF self.ShadingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SHADING_OFF.png")) self.ShadingTab_Btn.setStyleSheet("QPushButton{background-color :#292929;}\QPushButton::hover{background-color : #343434;}") self.PlacementTab_Btn.setIcon(QtGui.QIcon(IconPath + "TabScrew_OFF.png")) self.PlacementTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") self.SettingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SETTING_OFF.png")) self.SettingTab_Btn.setStyleSheet("QPushButton{background-color :#292929;}\ QPushButton::hover{background-color : #343434;}") open(PreferencePath + 'TabOpen.json', "w").write(json.dumps({"TAB_OPEN" : 0})) def ShadingTab_ON(self): self.TAB_MODELING_Widget.hide() self.TAB_SHADING_Widget.show() self.TAB_PLACEMENT_Widget.hide() self.TAB_SETTING_Widget.hide() if DOCK == 0: if WIN_DISPLAY_SIZE == 0: # 125 self.setFixedHeight(535) else: self.setFixedHeight(555) self.resize(self.width(), 40) self.ShadingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SHADING_ON.png")) self.ShadingTab_Btn.setStyleSheet("background-color:#303030;") self.ModelingTab_Btn.setIcon(QtGui.QIcon(IconPath + "MODELING_OFF.png")) self.ModelingTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") self.PlacementTab_Btn.setIcon(QtGui.QIcon(IconPath + "TabScrew_OFF.png")) self.PlacementTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") self.SettingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SETTING_OFF.png")) self.SettingTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") open(PreferencePath + 'TabOpen.json', "w").write(json.dumps({"TAB_OPEN" : 1})) def PlacementTab_ON(self): self.TAB_MODELING_Widget.hide() self.TAB_SHADING_Widget.hide() self.TAB_PLACEMENT_Widget.show() self.TAB_SETTING_Widget.hide() if DOCK == 0: self.setFixedHeight(680) self.resize(self.width(), 40) self.PlacementTab_Btn.setIcon(QtGui.QIcon(IconPath + "TabScrew_ON.png")) self.PlacementTab_Btn.setStyleSheet("background-color:#303030;") self.ModelingTab_Btn.setIcon(QtGui.QIcon(IconPath + "MODELING_OFF.png")) self.ModelingTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") self.ShadingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SHADING_OFF.png")) self.ShadingTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") self.SettingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SETTING_OFF.png")) self.SettingTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") open(PreferencePath + 'TabOpen.json', "w").write(json.dumps({"TAB_OPEN" : 2})) def SettingTab_ON(self): self.TAB_MODELING_Widget.hide() self.TAB_SHADING_Widget.hide() self.TAB_PLACEMENT_Widget.hide() self.TAB_SETTING_Widget.show() if DOCK == 0: if WIN_DISPLAY_SIZE == 0: # 125 self.setFixedHeight(440) else: self.setFixedHeight(480) self.resize(self.width(), 40) self.SettingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SETTING_ON.png")) self.SettingTab_Btn.setStyleSheet("background-color:#303030;") self.ModelingTab_Btn.setIcon(QtGui.QIcon(IconPath + "MODELING_OFF.png")) self.ModelingTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") self.PlacementTab_Btn.setIcon(QtGui.QIcon(IconPath + "TabScrew_OFF.png")) self.PlacementTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") self.ShadingTab_Btn.setIcon(QtGui.QIcon(IconPath + "SHADING_OFF.png")) self.ShadingTab_Btn.setStyleSheet("QPushButton{background-color :#272727;}\ QPushButton::hover{background-color : #343434;}") open(PreferencePath + 'TabOpen.json', "w").write(json.dumps({"TAB_OPEN" : 3})) def Section_OpenClose_btn(self, name, size, signal): ADAP_HEIGHT = (json.load(open(PreferencePath + 'UI_Adapt_Height.json',"r"))['VALUE']) userWidht = self.width() if signal == 1: NEW_ADAP_HEIGHT = ADAP_HEIGHT + size self.setMinimumHeight(NEW_ADAP_HEIGHT) self.resize(userWidht, NEW_ADAP_HEIGHT) open(PreferencePath + 'Section_' + str(name) + '.json', "w").write(json.dumps({"VALUE": 1})) open(PreferencePath + 'UI_Adapt_Height.json', "w").write(json.dumps({"VALUE": NEW_ADAP_HEIGHT})) else: NEW_ADAP_HEIGHT = ADAP_HEIGHT - size self.setMinimumHeight(NEW_ADAP_HEIGHT) self.resize(userWidht, NEW_ADAP_HEIGHT) open(PreferencePath + 'Section_'+ str(name) + '.json', "w").write(json.dumps({"VALUE": 0})) open(PreferencePath + 'UI_Adapt_Height.json', "w").write(json.dumps({"VALUE": NEW_ADAP_HEIGHT})) def closeEvent(self, event): # Save window's geometry settings_obj = QtCore.QSettings(self.settings_path, QtCore.QSettings.IniFormat) settings_obj.setValue("windowGeometry", self.saveGeometry()) ##KILL INTERACTIVE PRIM SCRIPT JOB JOB_NUMBER = (json.load(open(PreferencePath + 'JobNumber.json', "r"))['JOB_NUMBER']) try: mc.scriptJob(kill=JOB_NUMBER, force=True) except: pass ##DELETE PopUp UI if mc.window("Bevel2", exists=True): mc.deleteUI("Bevel2") if mc.window("Bend", exists=True): mc.deleteUI("Bend") if mc.window("Linear Duplication", exists=True): mc.deleteUI("Linear Duplication") if mc.window("Radial Duplication", exists=True): mc.deleteUI("Radial Duplication") if mc.window("Curve Duplication", exists=True): mc.deleteUI("Curve Duplication") ##_____________________________________________________________ ##_________________________________________________________________________________// UI ##_____________________________________________________________ if DOCK == 0: try: UI.close() # pylint: disable=E0601 UI.deleteLater() except: pass UI = ModIt_UI() UI.show() else: def Dock(Widget, width=200, height=200, hp="free", show=True): name = ModIt_Global.ModItTitle label = getattr(Widget, "label", name) try: cmds.deleteUI(name) except RuntimeError: pass dockControl = cmds.workspaceControl( name, initialWidth=width, minimumWidth=False, widthProperty=hp, heightProperty=hp, label=label ) dockPtr = omui.MQtUtil.findControl(dockControl) dockWidget = 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 atClose(): print("At MODIT CLOSE") if mc.window("ModIt_Global.ModItTitle", exists=True): mc.deleteUI("ModIt_Global.ModItTitle") def showUI(): ui = Dock(ModIt_UI) ui.show() # Get a pointer and convert it to Qt Widget object qw = omui.MQtUtil.findWindow(ModIt_Global.ModItTitle) try: widget = wrapInstance(int(qw), QWidget) # Create a QIcon object icon = QIcon(IconPath + "ModIt_Window_Ico.png") # Assign the icon widget.setWindowIcon(icon) except: pass # Pour si on reload alos qu'il est dock return ui