Updated
This commit is contained in:
230
Scripts/Animation/aTools/commonMods/aToolsMod.py
Normal file
230
Scripts/Animation/aTools/commonMods/aToolsMod.py
Normal file
@ -0,0 +1,230 @@
|
||||
'''
|
||||
========================================================================================================================
|
||||
Author: Alan Camilo
|
||||
www.alancamilo.com
|
||||
|
||||
Requirements: aTools Package
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
To install aTools, please follow the instructions in the file how_to_install.txt
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
To unistall aTools, go to menu (the last button on the right), Uninstall
|
||||
|
||||
========================================================================================================================
|
||||
'''
|
||||
|
||||
from maya import cmds
|
||||
from maya import mel
|
||||
import os
|
||||
import shutil
|
||||
import time
|
||||
|
||||
from aTools.generalTools.aToolsGlobals import aToolsGlobals as G
|
||||
from aTools.commonMods import utilMod
|
||||
|
||||
G.A_NODE = "aTools_StoreNode"
|
||||
G.USER_FOLDER = G.USER_FOLDER or mel.eval('getenv MAYA_APP_DIR') + os.sep + "aToolsSettings"
|
||||
G.UM_timerMessage = ""
|
||||
|
||||
utilMod.makeDir(G.USER_FOLDER)
|
||||
|
||||
def getSceneId(forceCreate=False):
|
||||
id = loadInfoWithScene("scene", "id") if not forceCreate else False
|
||||
|
||||
if not id:
|
||||
id = time.time()
|
||||
saveInfoWithScene("scene", "id", id)
|
||||
|
||||
return str(id)
|
||||
|
||||
def saveInfoWithScene(storeNode, attr, value):
|
||||
|
||||
with G.aToolsBar.createAToolsNode:
|
||||
cmds.undoInfo(stateWithoutFlush=False)
|
||||
currSel = None
|
||||
if not cmds.objExists(G.A_NODE) or not cmds.objExists(storeNode): currSel = cmds.ls(selection=True)
|
||||
if not cmds.objExists(G.A_NODE): cmds.createNode('mute', name=G.A_NODE)
|
||||
if not cmds.objExists(storeNode): cmds.createNode('mute', name=storeNode)
|
||||
if currSel: cmds.select(currSel)
|
||||
|
||||
if not cmds.isConnected("%s.output"%G.A_NODE, "%s.mute"%storeNode): cmds.connectAttr("%s.output"%G.A_NODE, "%s.mute"%storeNode)
|
||||
if not cmds.objExists("%s.%s"%(storeNode, attr)): cmds.addAttr(storeNode, longName=attr, dataType="string", keyable=False)
|
||||
cmds.setAttr("%s.%s"%(storeNode, attr), value, type="string")
|
||||
cmds.undoInfo(stateWithoutFlush=True)
|
||||
|
||||
def loadInfoWithScene(storeNode, attr):
|
||||
obj = "%s.%s"%(storeNode, attr)
|
||||
if cmds.objExists(obj):
|
||||
return cmds.getAttr(obj)
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
|
||||
def saveFileWithUser(folder, file, value, ext=None):
|
||||
filePath = getSaveFilePath("%s%s%s"%(folder, os.sep, file), ext)
|
||||
folderPath = utilMod.getFolderFromFile(filePath)
|
||||
|
||||
|
||||
if os.path.isfile(filePath): os.remove(filePath)
|
||||
if not os.path.isdir(folderPath): os.makedirs(folderPath)
|
||||
|
||||
newFileContents = "%s"%value
|
||||
|
||||
utilMod.writeFile(filePath, newFileContents)
|
||||
|
||||
def deleteFileWithUser(folder, file, ext="aTools"):
|
||||
filePath = getSaveFilePath("%s%s%s"%(folder, os.sep, file), ext)
|
||||
|
||||
if os.path.isfile(filePath): os.remove(filePath)
|
||||
|
||||
def deleteFolderWithUser(folder):
|
||||
folderPath = "%s%s%s"%(G.USER_FOLDER, os.sep, folder)
|
||||
if os.path.isdir(folderPath): shutil.rmtree(folderPath)
|
||||
|
||||
def renameFolderWithUser(oldFolder, newFolder):
|
||||
oldUserFolder = "%s%s%s"%(G.USER_FOLDER, os.sep, oldFolder)
|
||||
newUserFolder = "%s%s%s"%(G.USER_FOLDER, os.sep, newFolder)
|
||||
if os.path.isdir(oldUserFolder): os.rename(oldUserFolder, newUserFolder)
|
||||
|
||||
def loadFileWithUser(folder, file, ext="aTools"):
|
||||
filePath = getSaveFilePath("%s%s%s"%(folder, os.sep, file), ext)
|
||||
|
||||
|
||||
readFileContents = utilMod.readFile(filePath)
|
||||
|
||||
if readFileContents != None:
|
||||
return eval(readFileContents[0])
|
||||
|
||||
return None
|
||||
|
||||
def readFilesWithUser(folder, ext=None):
|
||||
filePath = getSaveFilePath("%s%s%s"%(folder, os.sep, "dummy"))
|
||||
folderPath = utilMod.getFolderFromFile(filePath)
|
||||
|
||||
if not os.path.isdir(folderPath): return []
|
||||
|
||||
filesInFolder = [loopFile for loopFile in os.listdir(folderPath) if ext is None or ext is True or loopFile.endswith(".%s"%ext)]
|
||||
|
||||
if ext is None:
|
||||
for n, loopFile in enumerate(filesInFolder):
|
||||
filesInFolder[n] = ".".join(loopFile.split(".")[:-1])
|
||||
|
||||
return filesInFolder
|
||||
|
||||
def readFoldersWithUser(folder):
|
||||
folderPath = "%s%s%s"%(G.USER_FOLDER, os.sep, folder)
|
||||
|
||||
if not os.path.isdir(folderPath): return []
|
||||
|
||||
foldersInFolder = [loopFolder for loopFolder in os.listdir(folderPath) if os.path.isdir(folderPath) if loopFolder != ".directory"]
|
||||
|
||||
return foldersInFolder
|
||||
|
||||
def saveInfoWithUser(file, attr, value, delete=False):
|
||||
filePath = getSaveFilePath(file)
|
||||
newFileContents = []
|
||||
writeNew = True
|
||||
|
||||
if isinstance(value, str): value = "\"%s\""%value
|
||||
|
||||
readFileContents = utilMod.readFile(filePath)
|
||||
|
||||
if readFileContents != None:
|
||||
|
||||
for loopLine in readFileContents:
|
||||
if loopLine.find(attr) == 0:
|
||||
if not delete:
|
||||
newFileContents.append("%s = %s\n"%(attr, value))
|
||||
|
||||
writeNew = None
|
||||
else:
|
||||
if len(loopLine) > 1:
|
||||
newFileContents.append(loopLine)
|
||||
|
||||
if writeNew:
|
||||
if not delete: newFileContents.append("%s = %s\n"%(attr, value))
|
||||
|
||||
|
||||
utilMod.writeFile(filePath, newFileContents)
|
||||
|
||||
|
||||
def loadInfoWithUser(file, attr):
|
||||
filePath = getSaveFilePath(file)
|
||||
|
||||
readFileContents = utilMod.readFile(filePath)
|
||||
|
||||
if readFileContents != None:
|
||||
|
||||
for loopLine in readFileContents:
|
||||
if loopLine.find(attr) == 0:
|
||||
value = loopLine[(loopLine.find("=")+2):]
|
||||
return eval(value)
|
||||
|
||||
return None
|
||||
|
||||
def getUserPref(pref, default):
|
||||
|
||||
pref = loadInfoWithUser("userPrefs", pref)
|
||||
if pref == None: pref = default
|
||||
|
||||
return pref
|
||||
|
||||
def setUserPref(pref, onOff):
|
||||
|
||||
saveInfoWithUser("userPrefs", pref, onOff)
|
||||
|
||||
|
||||
|
||||
|
||||
def setPref(pref, preferences, init=False, default=False):
|
||||
|
||||
for loopPref in preferences:
|
||||
name = loopPref["name"]
|
||||
if pref == name:
|
||||
if init:
|
||||
onOff = getPref(pref, preferences)
|
||||
elif default:
|
||||
onOff = getDefPref(pref, preferences)
|
||||
cmds.menuItem("%sMenu"%name, edit=True, checkBox=onOff)
|
||||
saveInfoWithUser("userPrefs", name, "", True)
|
||||
else:
|
||||
onOff = cmds.menuItem("%sMenu"%name, query=True, checkBox=True)
|
||||
saveInfoWithUser("userPrefs", pref, onOff)
|
||||
|
||||
|
||||
def getPref(pref, preferences):
|
||||
r = loadInfoWithUser("userPrefs", pref)
|
||||
if r == None:
|
||||
default = getDefPref(pref, preferences)
|
||||
r = default
|
||||
|
||||
return r
|
||||
|
||||
def getDefPref(pref, preferences):
|
||||
for loopPref in preferences:
|
||||
name = loopPref["name"]
|
||||
if pref == name:
|
||||
default = loopPref["default"]
|
||||
return default
|
||||
|
||||
|
||||
|
||||
def getaToolsPath(level=1, inScriptsFolder=True):
|
||||
if inScriptsFolder:
|
||||
mayaAppDir = mel.eval('getenv MAYA_APP_DIR')
|
||||
scriptsDir = "%s%sscripts%s"%(mayaAppDir, os.sep, os.sep)
|
||||
aToolsFolder = "%s%saTools%s"%(scriptsDir, os.sep, os.sep)
|
||||
if level==1: return aToolsFolder
|
||||
if level==2: return scriptsDir
|
||||
return utilMod.getFolderFromFile(__file__, level)
|
||||
|
||||
|
||||
def getSaveFilePath(saveFile, ext="aTools"):
|
||||
|
||||
saveFilePath = G.USER_FOLDER + os.sep + saveFile
|
||||
if ext: saveFilePath += ".%s"%ext
|
||||
|
||||
return saveFilePath
|
||||
|
Reference in New Issue
Block a user