298 lines
9.4 KiB
Python
298 lines
9.4 KiB
Python
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
|
|
import importlib
|
|
|
|
# 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
|
|
|
|
|
|
|
|
#PATHS
|
|
USERAPPDIR = mc.internalVar(userAppDir=True)
|
|
VERSION = mc.about(v=True)
|
|
|
|
|
|
from .. import PlugIt_Global
|
|
importlib.reload(PlugIt_Global)
|
|
|
|
from .. import PlugIt_CSS
|
|
importlib.reload(PlugIt_CSS)
|
|
|
|
|
|
|
|
##THEME_SET
|
|
IconPath = PlugIt_Global.IconsPathThemeClassic
|
|
PreferencePath = PlugIt_Global.PreferencePath
|
|
|
|
##GLOBAL VAR
|
|
WindowsTitle = "Thumbnail Framing"
|
|
|
|
|
|
SELECTION = []
|
|
WRESOLUTION = 0
|
|
HRESOLUTION = 0
|
|
ASPECTRATION = 1
|
|
|
|
def SEND_INFO(Selection):
|
|
global SELECTION
|
|
SELECTION = Selection
|
|
print ("SELECTION in ADD ASSET = " + str(SELECTION))
|
|
return SELECTION
|
|
|
|
|
|
|
|
#________________//
|
|
#___________________________________________
|
|
#________________//
|
|
class Thumb_Framing(QtWidgets.QDialog):
|
|
def __init__(self, parent=None):
|
|
super(Thumb_Framing, self).__init__()
|
|
self.setMinimumSize(410, 45)
|
|
self.buildUI()
|
|
|
|
|
|
def buildUI(self):
|
|
THUMBFRAMINGLayout = QtWidgets.QVBoxLayout(self)
|
|
self.setStyleSheet(PlugIt_CSS.PlugIt_CSS)
|
|
iconButtonSize = PlugIt_Global.IconButtonSize
|
|
|
|
global WRESOLUTION
|
|
WRESOLUTION = mc.getAttr("defaultResolution.width")
|
|
global HRESOLUTION
|
|
HRESOLUTION = mc.getAttr("defaultResolution.height")
|
|
global ASPECTRATION
|
|
ASPECTRATION = mc.getAttr("defaultResolution.deviceAspectRatio")
|
|
|
|
|
|
|
|
mc.setAttr("defaultResolution.width", 400)
|
|
mc.setAttr("defaultResolution.height", 400)
|
|
mc.setAttr("defaultResolution.deviceAspectRatio", 1)
|
|
|
|
|
|
mc.select(SELECTION)
|
|
self.FramingViewport = mc.modelEditor(camera="RenderThumbCamShape", vs=True, addSelected=True, ca= False, dim= True, da ="smoothShaded", dl= "all", dtx= True, gr= False, hud= True, lt= False, sdw= True, swf= False, th= True, tx= True, wos = False)
|
|
mc.viewFit("RenderThumbCamShape", all= False, f=1)
|
|
mc.select(SELECTION, d=True)
|
|
|
|
mel.eval("setCameraNamesVisibility 0;")
|
|
mel.eval("setViewAxisVisibility 0;")
|
|
|
|
|
|
|
|
|
|
#############################################
|
|
## TOOLBAR
|
|
TOOLBARLayout = QtWidgets.QHBoxLayout(self)
|
|
THUMBFRAMINGLayout.addLayout(TOOLBARLayout)
|
|
|
|
## CAMERA BTN
|
|
CameraFitBtn = QtWidgets.QPushButton()
|
|
CameraFitBtn.setFixedSize(iconButtonSize,iconButtonSize)
|
|
CameraFitBtn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
|
|
CameraFitBtn.setIcon(QtGui.QIcon(IconPath + "Camera2.png"))
|
|
CameraFitBtn.setToolTip(" Fit Object ")
|
|
CameraFitBtn.setShortcut(QtGui.QKeySequence("F"))
|
|
CameraFitBtn.clicked.connect(self.FitObject)
|
|
TOOLBARLayout.addWidget(CameraFitBtn)
|
|
|
|
|
|
## SEPARATOR
|
|
self.Separator = QtWidgets.QPushButton()
|
|
self.Separator.setObjectName("Separator")
|
|
self.Separator.setFixedSize(iconButtonSize,iconButtonSize)
|
|
self.Separator.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
|
|
self.Separator.setIcon(QtGui.QIcon(IconPath + "SeparatorBtn.png"))
|
|
self.Separator.setEnabled(0)
|
|
TOOLBARLayout.addWidget(self.Separator)
|
|
|
|
## LIGHTON BTN
|
|
LightOn = QtWidgets.QPushButton()
|
|
LightOn.setFixedSize(iconButtonSize,iconButtonSize)
|
|
LightOn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
|
|
LightOn.setIcon(QtGui.QIcon(IconPath + "LightOn.png"))
|
|
LightOn.setToolTip(" Light On ")
|
|
LightOn.clicked.connect(self.LightOn)
|
|
TOOLBARLayout.addWidget(LightOn)
|
|
|
|
## LIGHTOFF BTN
|
|
LightOff = QtWidgets.QPushButton()
|
|
LightOff.setFixedSize(iconButtonSize,iconButtonSize)
|
|
LightOff.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
|
|
LightOff.setIcon(QtGui.QIcon(IconPath + "LightOff.png"))
|
|
LightOff.setToolTip(" Light Off ")
|
|
LightOff.clicked.connect(self.LightOff)
|
|
TOOLBARLayout.addWidget(LightOff)
|
|
|
|
|
|
## SEPARATOR
|
|
self.Separator = QtWidgets.QPushButton()
|
|
self.Separator.setObjectName("Separator")
|
|
self.Separator.setFixedSize(iconButtonSize,iconButtonSize)
|
|
self.Separator.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
|
|
self.Separator.setIcon(QtGui.QIcon(IconPath + "SeparatorBtn.png"))
|
|
self.Separator.setEnabled(0)
|
|
TOOLBARLayout.addWidget(self.Separator)
|
|
|
|
|
|
## WIRE BTN
|
|
WireBtn = QtWidgets.QPushButton()
|
|
WireBtn.setFixedSize(iconButtonSize,iconButtonSize)
|
|
WireBtn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
|
|
WireBtn.setIcon(QtGui.QIcon(IconPath + "Wireframe.png"))
|
|
WireBtn.setToolTip(" Wireframe Override ")
|
|
WireBtn.clicked.connect(self.Wireframe)
|
|
TOOLBARLayout.addWidget(WireBtn)
|
|
|
|
|
|
|
|
## SHADE BTN
|
|
ShadeBtn = QtWidgets.QPushButton()
|
|
ShadeBtn.setFixedSize(iconButtonSize,iconButtonSize)
|
|
ShadeBtn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
|
|
ShadeBtn.setIcon(QtGui.QIcon(IconPath + "Shade2.png"))
|
|
ShadeBtn.setToolTip(" Shade Only ")
|
|
ShadeBtn.clicked.connect(self.Shade)
|
|
TOOLBARLayout.addWidget(ShadeBtn)
|
|
|
|
## TEXTURE BTN
|
|
TextureBtn = QtWidgets.QPushButton()
|
|
TextureBtn.setFixedSize(iconButtonSize,iconButtonSize)
|
|
TextureBtn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
|
|
TextureBtn.setIcon(QtGui.QIcon(IconPath + "TextureOn.png"))
|
|
TextureBtn.setToolTip(" Display Texture On ")
|
|
TextureBtn.clicked.connect(self.Texture)
|
|
TOOLBARLayout.addWidget(TextureBtn)
|
|
|
|
|
|
|
|
## SEPARATOR
|
|
self.Separator = QtWidgets.QPushButton()
|
|
self.Separator.setObjectName("Separator")
|
|
self.Separator.setFixedSize(iconButtonSize,iconButtonSize)
|
|
self.Separator.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
|
|
self.Separator.setIcon(QtGui.QIcon(IconPath + "SeparatorBtn.png"))
|
|
self.Separator.setEnabled(0)
|
|
TOOLBARLayout.addWidget(self.Separator)
|
|
|
|
## CALIDATE BTN
|
|
ValidateBtn = QtWidgets.QPushButton()
|
|
ValidateBtn.setFixedSize(iconButtonSize,iconButtonSize)
|
|
ValidateBtn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
|
|
ValidateBtn.setIcon(QtGui.QIcon(IconPath + "Apply.png"))
|
|
ValidateBtn.setToolTip(" Validate Framing ")
|
|
ValidateBtn.setShortcut(QtGui.QKeySequence("Return"))
|
|
ValidateBtn.clicked.connect(self.Validate)
|
|
TOOLBARLayout.addWidget(ValidateBtn)
|
|
|
|
|
|
|
|
#TOOLBARLayout.addStretch()
|
|
|
|
def FitObject(self):
|
|
print ("Fit OBJECT")
|
|
mc.select(SELECTION)
|
|
mc.viewFit("RenderThumbCam", all= False, f=1)
|
|
mc.select(SELECTION, d=True)
|
|
|
|
|
|
def LightOn(self):
|
|
mc.modelEditor(self.FramingViewport, edit=True, dl= "all")
|
|
|
|
def LightOff(self):
|
|
mc.modelEditor(self.FramingViewport, edit=True, dl= "default")
|
|
|
|
def Wireframe(self):
|
|
mc.modelEditor(self.FramingViewport, edit=True, wos= True)
|
|
|
|
def Shade(self):
|
|
mc.modelEditor(self.FramingViewport, edit=True, displayAppearance='smoothShaded')
|
|
mc.modelEditor(self.FramingViewport, edit=True, displayTextures=False)
|
|
mc.modelEditor(self.FramingViewport, edit=True, wos= False)
|
|
|
|
def Texture(self):
|
|
mc.modelEditor(self.FramingViewport, edit=True, displayAppearance='smoothShaded')
|
|
mc.modelEditor(self.FramingViewport, edit=True, displayTextures=True)
|
|
|
|
def Validate(self):
|
|
mc.deleteUI("Thumbnail Framing")
|
|
|
|
|
|
def Dock(Widget, width=200, height=200, hp="fixed", show=True):
|
|
label = getattr(Widget, "label", WindowsTitle)
|
|
|
|
try:
|
|
cmds.deleteUI(WindowsTitle)
|
|
except RuntimeError:
|
|
pass
|
|
|
|
dockControl = cmds.workspaceControl(
|
|
WindowsTitle,
|
|
initialWidth=width,
|
|
minimumWidth=False,
|
|
initialHeight = height,
|
|
minimumHeight=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 atClose():
|
|
mel.eval("setCameraNamesVisibility 1;")
|
|
mel.eval("setViewAxisVisibility 1;")
|
|
mc.setAttr("defaultResolution.width", WRESOLUTION)
|
|
mc.setAttr("defaultResolution.height", HRESOLUTION)
|
|
mc.setAttr("defaultResolution.deviceAspectRatio", ASPECTRATION)
|
|
|
|
|
|
def showUI():
|
|
ui = Dock(Thumb_Framing)
|
|
ui.show()
|
|
|
|
# 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)
|
|
|
|
mc.scriptJob(uiDeleted=['Thumbnail Framing', atClose])
|
|
|
|
return ui
|
|
|