MetaBox/Scripts/Modeling/Edit/ModIt/Placement/ModIt_AssetIt.py

153 lines
4.2 KiB
Python
Raw Permalink Normal View History

2025-01-14 02:26:27 +08:00
##--------------------------------------------------------------------------
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 mtoa.core as core
from functools import partial
# Special cases for different Maya versions
from shiboken2 import wrapInstance
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QWidget
import importlib
from .. import ModIt_Global
importlib.reload(ModIt_Global)
from .. import ModIt_CSS
importlib.reload(ModIt_CSS)
##______________________GLOBAL VAR
##PATH_SET
IconPath = ModIt_Global.IconsPathThemeClassic
PreferencePath = ModIt_Global.PreferencePath
ToolsPath = ModIt_Global.ToolPath
RessourcePath = ModIt_Global.RessourcePath
##GLOBAL VAR
WindowsTitle = " - AssetIt -"
#________________//
#___________________________________________
#________________//
class AssetItPromo_UI(QtWidgets.QDialog):
def __init__(self, parent=None):
super(AssetItPromo_UI, self).__init__()
self.setMinimumSize(1420, 950)
self.buildUI()
def buildUI(self):
UILayout = QtWidgets.QVBoxLayout(self)
self.setStyleSheet(ModIt_CSS.ModIt_CSS)
##UI - Preferences
iconButtonSize = 22
#############################################
## SCATTER TAB Banner
label = QtWidgets.QLabel(self)
pixmap = QtGui.QPixmap(IconPath + "AssetIt_Presa_Img.jpg")
label.setPixmap(pixmap)
label.setAlignment(QtCore.Qt.AlignTop)
UILayout.addWidget(label)
## TEXT
LandscapeTitle = QtWidgets.QLabel(self)
LandscapeTitle.setFont(QtGui.QFont('Candara', 10))
LandscapeTitle.setStyleSheet("QLabel {color : #65BEF1; }")
LandscapeTitle.setText(""" Allow users to create custom Bolts would mean the need to : set a user folder path, creation thumbnail, pivot placement setting, allow any type of mesh possible...
> Which is so called an Asset Manager and for that I created AssetIt script.
- So if you need more control about Bold and you want to create your own, I invited you to take a look at AssetIt script. -""")
LandscapeTitle.setAlignment(QtCore.Qt.AlignCenter)
UILayout.addWidget(LandscapeTitle)
BoutonsLayout = QtWidgets.QHBoxLayout()
UILayout.addLayout(BoutonsLayout)
GetAssetIt_btn = QtWidgets.QPushButton("- G e t A s s e t I t -")
GetAssetIt_btn.setFont(QtGui.QFont('Candara', 10))
GetAssetIt_btn.setObjectName("AssetIt")
GetAssetIt_btn.setFixedHeight(22)
GetAssetIt_btn.setShortcut(QtGui.QKeySequence("Return"))
GetAssetIt_btn.clicked.connect(self.GetAssetIt)
BoutonsLayout.addWidget(GetAssetIt_btn)
def GetAssetIt(self):
cmds.deleteUI(WindowsTitle)
QtGui.QDesktopServices.openUrl(
QtCore.QUrl("https://wzx.gumroad.com/l/AssetIt"))
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(AssetItPromo_UI)
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 + "ModIt_Window_Ico.png")
# Assign the icon
widget.setWindowIcon(icon)
return ui