MetaBox/Scripts/Animation/aTools/animTools/animBar/animBarUI.py
2025-01-14 03:08:55 +08:00

178 lines
6.6 KiB
Python

'''
========================================================================================================================
Author: Alan Camilo
www.alancamilo.com
Modified: Michael Klimenko
Requirements: aTools Package
------------------------------------------------------------------------------------------------------------------------
To install aTools, please follow the instructions in the file how_to_install.txt, located in the folder aTools
------------------------------------------------------------------------------------------------------------------------
To unistall aTools, go to menu (the last button on the right), Uninstall
========================================================================================================================
'''
# maya modulesspecialTools
import importlib
from maya import cmds
from aTools.generalTools.aToolsGlobals import aToolsGlobals as G
from aTools.generalTools import aToolsClasses; importlib.reload(aToolsClasses)
from aTools.commonMods import animMod; importlib.reload(animMod)
from aTools.generalTools import generalToolsUI; importlib.reload(generalToolsUI)
from aTools.commonMods import utilMod; importlib.reload(utilMod)
from aTools.commonMods import commandsMod; importlib.reload(commandsMod)
from aTools.commonMods import aToolsMod; importlib.reload(aToolsMod)
from aTools import setup; importlib.reload(setup)
# constants
SUB_UI_MODS = ["tweenMachine", "keyTransform", "tangents", "specialTools", "tUtilities"]
# import subUI modules
for loopMod in SUB_UI_MODS:
exec("import aTools.animTools.animBar.subUIs.%s as %s; importlib.reload(%s)"%(loopMod, loopMod, loopMod))
def show(mode="show"):
G.aToolsBar = G.aToolsBar or AnimationBar_Gui()
if mode == False: mode = "show"
if mode == True: mode = "toggle"
if mode == "launch":
lastState = aToolsMod.loadInfoWithUser("userPrefs", "animationBarLastState")
if lastState: show()
return
if mode == "show" or mode == "hide":
if cmds.toolBar("aTools_Animation_Bar", query=True, exists=True):
visible = (mode == "show")
cmds.toolBar("aTools_Animation_Bar", edit=True, visible=visible)
G.aToolsBar.saveLastState(visible)
return
elif mode == "show":
G.aToolsBar.start()
G.aToolsBar.saveLastState()
return
if mode == "toggle":
if cmds.toolBar("aTools_Animation_Bar", query=True, exists=True):
state = cmds.toolBar("aTools_Animation_Bar", query=True, visible=True)
visible = (not state)
G.aToolsBar.toggleToolbars(visible)
cmds.toolBar("aTools_Animation_Bar", edit=True, visible=visible)
G.aToolsBar.saveLastState(visible)
return
else:
show()
return
if mode == "refresh":
G.aToolsBar = AnimationBar_Gui()
G.aToolsBar.start()
G.aToolsBar.saveLastState()
class AnimationBar_Gui(object):
def __init__(self):
self.winName = "aAnimationBarWin"
self.toolbarName = "aTools_Animation_Bar"
self.allWin = [self.winName, self.toolbarName]
self.buttonSize = {"small":[15, 20], "big":[25, 25]}
self.barOffset = 0
self.barHotkeys = {}
G.aToolsUIs = {"toolbars":[
],
"windows":[
]}
# [ SUBUIs ]
self.uiList = None
self.subUIs = None
def __getattr__(self, attr):
return None
def start(self):
from aTools.generalTools import aToolsClasses; importlib.reload(aToolsClasses)
self.startUpFunctions()
self.delWindows()
self.createWin()
def startUpFunctions(self):
#wait cursor state
n = 0
while True:
if not cmds.waitCursor(query=True, state=True) or n > 100: break
cmds.waitCursor(state=False)
n += 1
#refresh state
cmds.refresh(suspend=False)
#undo state
if not cmds.undoInfo(query=True, stateWithoutFlush=True): cmds.undoInfo(stateWithoutFlush=True)
#progress bar state
utilMod.setProgressBar(status=None, progress=None, endProgress=True)
def saveLastState(self, state=True):
aToolsMod.saveInfoWithUser("userPrefs", "animationBarLastState", state)
def createWin(self):
# Creates window
self.mainWin = cmds.window(self.winName, sizeable=True)
# Main frame
cmds.frameLayout("mainFrameLayout", labelVisible=False, borderVisible=False, w=10, marginHeight=0, marginWidth=0, labelIndent=0, collapsable=False)
cmds.rowLayout(numberOfColumns=2, adjustableColumn=1, columnAttach=([2, 'right', self.barOffset]), h=37)
cmds.text(label="")
self.subUIsLayout = cmds.rowLayout("mainLayout", numberOfColumns=len(SUB_UI_MODS)+2)
# subUIs
self.uiList = [eval("%s.%s%s_Gui"%(loopUi, loopUi[0].upper(), loopUi[1:])) for loopUi in SUB_UI_MODS]
# append general tools ui
self.uiList.append(generalToolsUI.GeneralTools_Gui)
# define subUis
self.subUIs = [loopUi(self.subUIsLayout, self.buttonSize) for loopUi in self.uiList]
self.addSubUIs()
# shows toolbar
cmds.toolBar(self.toolbarName, area='bottom', content=self.mainWin, allowedArea=['bottom'])
# end method createWin
#---------------------------------------------------------------------
def addSubUIs(self):
# parent subUis to the main layout
for loopIndex, loopSubUI in enumerate(self.subUIs):
loopSubUI.createLayout()
# space
if loopIndex < len(self.subUIs) -1:
cmds.rowLayout(numberOfColumns=2)
cmds.text( label=' ', h=1 )
# end for
def toggleToolbars(self, visible):
pass
def delWindows(self, onOff=True, forceOff=False):
for loopWin in self.allWin:
if cmds.window(loopWin, query=True, exists=True): cmds.deleteUI(loopWin)
if cmds.toolBar(loopWin, query=True, exists=True):
cmds.deleteUI(loopWin)