221 lines
6.2 KiB
Python
221 lines
6.2 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 = "Rename Asset"
|
|
LIBRARY_PATH = PlugIt_Global.LIBRARY_PATH
|
|
ASSET_FAVOURITES_PATH = PlugIt_Global.ASSET_FAVOURITES_PATH
|
|
FIRSTTAB_NAME = ""
|
|
|
|
REMOVE_END = ""
|
|
ITEM_FOLDER_PATH =""
|
|
|
|
# ________________//
|
|
# ___________________________________________
|
|
# ________________//
|
|
|
|
def SEND_INFO(removeEnd, ItemFolderPath):
|
|
global REMOVE_END
|
|
global ITEM_FOLDER_PATH
|
|
|
|
REMOVE_END = removeEnd
|
|
ITEM_FOLDER_PATH = ItemFolderPath
|
|
|
|
|
|
class RenameAsset_UI(QtWidgets.QDialog):
|
|
def __init__(self, parent=None):
|
|
super(RenameAsset_UI, self).__init__()
|
|
self.setMinimumSize(400, 80)
|
|
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("New Name : ")
|
|
MainNewTab_HLyt.addWidget(MainNewTab_Label)
|
|
|
|
self.MainNewTab_Field = QtWidgets.QLineEdit()
|
|
self.MainNewTab_Field.setObjectName("UserLibPathField")
|
|
MainNewTab_HLyt.addWidget(self.MainNewTab_Field)
|
|
|
|
|
|
|
|
|
|
|
|
##________________________________________// CREATE BTN
|
|
CreateBTN = QtWidgets.QPushButton()
|
|
CreateBTN.setText("RENAME")
|
|
CreateBTN.setObjectName("AddAsset")
|
|
CreateBTN.setFixedHeight(25)
|
|
CreateBTN.clicked.connect(self.RENAME)
|
|
CreateBTN.setShortcut(QtGui.QKeySequence("Return"))
|
|
CreateBTN.setToolTip("Rename Asset")
|
|
NEWTABS_MAIN_Layout.addWidget(CreateBTN)
|
|
|
|
|
|
NEWTABS_MAIN_Layout.addStretch()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def RENAME(self):
|
|
NEW_NAME = self.MainNewTab_Field.text()
|
|
|
|
CHECK_FOLDER = REMOVE_END + "/" + NEW_NAME
|
|
LIST_DIR = os.listdir(REMOVE_END)
|
|
|
|
# 1 - Verif Item Name Already Exist
|
|
if NEW_NAME in LIST_DIR:
|
|
PlugIt_Global.WarningWindow(" Asset name already exist in this folder. Delete it first. ", 290)
|
|
return
|
|
|
|
#2 - Rename Files
|
|
for filename in os.listdir(ITEM_FOLDER_PATH):
|
|
if filename.endswith(".json"):
|
|
print ("File Names List are = " + str(filename))
|
|
os.rename(ITEM_FOLDER_PATH + "/" + filename, ITEM_FOLDER_PATH + "/" + NEW_NAME + ".json")
|
|
if filename.endswith(".ma"):
|
|
print ("File Names List are = " + str(filename))
|
|
os.rename(ITEM_FOLDER_PATH + "/" + filename, ITEM_FOLDER_PATH + "/" + NEW_NAME + ".ma")
|
|
if filename.endswith(".png"):
|
|
print ("File Names List are = " + str(filename))
|
|
os.rename(ITEM_FOLDER_PATH + "/" + filename, ITEM_FOLDER_PATH + "/" + NEW_NAME + ".png")
|
|
|
|
#3 - THEN : Rename the Folder
|
|
os.rename(ITEM_FOLDER_PATH, REMOVE_END + "/" + NEW_NAME)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#4 - FAV CLEAN List
|
|
renameOld = (ITEM_FOLDER_PATH.split("/")[-1]).replace(".png", "")
|
|
renameNew = NEW_NAME
|
|
favouriteFilePath = ASSET_FAVOURITES_PATH
|
|
with open(favouriteFilePath, 'r+') as file:
|
|
fileContent = file.read()
|
|
FAVLIST = json.loads(fileContent)
|
|
|
|
for each in FAVLIST:
|
|
nameInList = (each.split("/")[-1]).replace(".png", "")
|
|
|
|
if nameInList == renameOld:
|
|
rootName = each.replace(nameInList + "/" + nameInList + ".png", "")
|
|
newFAV = str(FAVLIST).replace(str(each), str(rootName) + str(renameNew) + "/" + str(renameNew) + ".png")
|
|
newFAVtoWritte = newFAV.replace("'", '"')
|
|
|
|
# update favourite json file for saving
|
|
with open(favouriteFilePath, 'w+') as file:
|
|
file.write(newFAVtoWritte)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#5 - UPDATE
|
|
mc.deleteUI(WindowsTitle)
|
|
|
|
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(RenameAsset_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 + "Windows_Ico2.png")
|
|
# Assign the icon
|
|
widget.setWindowIcon(icon)
|
|
|
|
return ui
|