Example #1
0
 def getPref(self, pref):
     r = aToolsMod.loadInfoWithUser("userPrefs", pref)
     if r == None: 
         default = self.getDefPref(pref)
         r = default 
         
     return r
Example #2
0
 def loadHotkeys(self, defaults=False):
     
     allHotkeys  = hotkeys.getHotkeys()
     hotkeysDict = []
     
     for n, loopHotkey in enumerate(allHotkeys):  
         for loopItem in loopHotkey:
             hotkeysDict.append(loopItem)
             
     
     for loopIndex, loopCommand in enumerate(hotkeysDict):  
         
                   
         command = loopCommand["command"]
         name    = loopCommand["name"] 
         key     = loopCommand["hotkey"]
         alt     = loopCommand["alt"]
         ctl     = loopCommand["ctl"]  
         toolTip = loopCommand["toolTip"]  
         
         if not defaults:
             hotkeyData = aToolsMod.loadInfoWithUser("hotkeys", name) 
             if hotkeyData != None: 
                 key     = hotkeyData[0]
                 alt     = hotkeyData[1]
                 ctl     = hotkeyData[2]
         
         
         cmds.checkBox('ctl%s'%name, edit=True, value=ctl)
         cmds.checkBox('alt%s'%name, edit=True, value=alt)
         cmds.scrollField('key%s'%name, edit=True, text=key)
         
         self.updateHotkeyCheck(name)
Example #3
0
    def checkUpdates(self, gui, layout, *args):        

        if self.tryUpdate():     
                        
            if not G.GT_wasUpdated:                
                hasUpdate = self.hasUpdate()
                if hasUpdate != False:
                    cmds.iconTextButton(label="Updating...", style='textOnly', h=gui.hb, parent=layout)
                    cmds.progressBar("aToolsProgressBar", maxValue=100, width=50, parent=layout)
                    
                    if hasUpdate == "offline_update":
                        offlinePath     = aToolsMod.loadInfoWithUser("userPrefs", "offlinePath") 
                        offlineFolder   = offlinePath[0]
                        offlineFilePath = "%s%saTools.zip"%(offlineFolder, os.sep)
                        downloadUrl     = "file:///%s%saTools.zip"%(offlineFolder, os.sep)
                        fileModTime     = os.path.getmtime(offlineFilePath)
                        offline         = [offlineFilePath, fileModTime]
                    else:
                        downloadUrl     = DOWNLOAD_URL
                        offline         = None
            
                    function            = lambda *args:self.updateaTools(downloadUrl, offline)
                    G.deferredManager.sendToQueue(function, 1, "checkUpdates")
                    return                                              
                                   
        self.warnUpdate()
Example #4
0
    def checkUpdates(self, gui, layout, *args):        

        if self.tryUpdate():     
                        
            if not G.GT_wasUpdated:                
                hasUpdate = self.hasUpdate()
                if hasUpdate != False:
                    cmds.iconTextButton(label="Updating...", style='textOnly', h=gui.hb, parent=layout)
                    cmds.progressBar("aToolsProgressBar", maxValue=100, width=50, parent=layout)
                    
                    if hasUpdate == "offline_update":
                        offlinePath     = aToolsMod.loadInfoWithUser("userPrefs", "offlinePath") 
                        offlineFolder   = offlinePath[0]
                        offlineFilePath = "%s%saTools.zip"%(offlineFolder, os.sep)
                        downloadUrl     = "file:///%s%saTools.zip"%(offlineFolder, os.sep)
                        fileModTime     = os.path.getmtime(offlineFilePath)
                        offline         = [offlineFilePath, fileModTime]
                    else:
                        downloadUrl     = DOWNLOAD_URL
                        offline         = None
            
                    function            = lambda *args:self.updateaTools(downloadUrl, offline)
                    G.deferredManager.sendToQueue(function, 1, "checkUpdates")
                    return                                              
                                   
        self.warnUpdate()
Example #5
0
 def getPref(self, pref):
     r = aToolsMod.loadInfoWithUser("userPrefs", pref)
     if r == None: 
         default = self.getDefPref(pref)
         r = default 
         
     return r
Example #6
0
    def importSets(self, *args):
        cmds.waitCursor(state=True)

        setsData = aToolsMod.loadInfoWithUser("selectSets", "setsData")
        self.createSetsFromData(setsData)

        cmds.waitCursor(state=False)
Example #7
0
 def importSets(self, *args):
     cmds.waitCursor(state=True)   
 
     setsData = aToolsMod.loadInfoWithUser("selectSets", "setsData")    
     self.createSetsFromData(setsData)
     
     cmds.waitCursor(state=False)    
Example #8
0
 def remapNamespaces(self, *args):
     winName = "remapNamespacesWindow"
     if cmds.window(winName, query=True, exists=True): cmds.deleteUI(winName)
     window = cmds.window( winName, title = "Remap Namespaces")
 
     cmds.columnLayout(adjustableColumn=True)
     cmds.rowColumnLayout( numberOfColumns=3)
     
     animData            = aToolsMod.loadInfoWithUser("copyPasteAnim", "animData")
     inputNameSpaces     = list(set(utilMod.getNameSpace(animData["objects"])[0]))
     outputNameSpaces    = utilMod.listAllNamespaces()
     
     for loopNameSpace in inputNameSpaces:  
         
         nameSpace = loopNameSpace[:-1]
         
         eval("cmds.text('input%s', align='right', w=150, h=26, label='%s:   ')"%(nameSpace, nameSpace))
         eval("cmds.textField('output%s', w=150, h=26, text='%s')"%(nameSpace, nameSpace))
         eval("cmds.button('output%s', w=26, h=26, label='...')"%(nameSpace))
         if outputNameSpaces:
             cmds.popupMenu(button=1)
             for loopOutput in outputNameSpaces:
                 cmds.menuItem       ("menu%s"%loopOutput, label=str(loopOutput), command=lambda x, loopOutput=loopOutput, nameSpace=nameSpace, *args: self.setOutputValue(loopOutput, nameSpace))    
     
     cmds.setParent( '..' )
     
     
     cmds.button(label="Paste Animation in Place",     command=lambda *args: self.remapAndPasteAnimation(animData, inputNameSpaces, pasteInPlace=True))
     cmds.button(label="Paste Original Animation",     command=lambda *args: self.remapAndPasteAnimation(animData, inputNameSpaces, pasteInPlace=False))
     
     cmds.showWindow( window )
Example #9
0
 def loadHotkeys(self, defaults=False):
     
     allHotkeys  = hotkeys.getHotkeys()
     hotkeysDict = []
     
     for n, loopHotkey in enumerate(allHotkeys):  
         for loopItem in loopHotkey:
             hotkeysDict.append(loopItem)
             
     
     for loopIndex, loopCommand in enumerate(hotkeysDict):  
         
                   
         command = loopCommand["command"]
         name    = loopCommand["name"] 
         key     = loopCommand["hotkey"]
         alt     = loopCommand["alt"]
         ctl     = loopCommand["ctl"]  
         toolTip = loopCommand["toolTip"]  
         
         if not defaults:
             hotkeyData = aToolsMod.loadInfoWithUser("hotkeys", name) 
             if hotkeyData != None: 
                 key     = hotkeyData[0]
                 alt     = hotkeyData[1]
                 ctl     = hotkeyData[2]
         
         
         cmds.checkBox('ctl%s'%name, edit=True, value=ctl)
         cmds.checkBox('alt%s'%name, edit=True, value=alt)
         cmds.scrollField('key%s'%name, edit=True, text=key)
         
         self.updateHotkeyCheck(name)
Example #10
0
 def pasteAnimation(self, animData=None, pasteInPlace=True, onlySelectedNodes=None, *args):  
     cmds.waitCursor(state=True)   
     
     if not onlySelectedNodes:   onlySelectedNodes = cmds.menuItem("onlySelectedNodesMenu", query=True, checkBox=True)
     if not animData:            animData = aToolsMod.loadInfoWithUser("copyPasteAnim", "animData")    
     animMod.applyAnimData(animData, pasteInPlace, onlySelectedNodes, showProgress=True)
     
     cmds.waitCursor(state=False)
Example #11
0
    def warnAnimBot(self):

        try:
            import animBot
        except ImportError:
            pref = aToolsMod.loadInfoWithUser("userPrefs",
                                              "dontShowAnimBotWarningAgain")
            if not pref:
                G.deferredManager.sendToQueue(self.atoolsIsRetiring, 50,
                                              "warnAnimBot")
Example #12
0
    def __init__(self):

        if G.aToolsBar.motionTrail: return
        G.aToolsBar.motionTrail = self

        self.STORE_NODE = "specialTools"
        self.MOTION_TRAIL_ATTR = "twistIkObjs"
        self.PRE_POS_RANGE = "motionTrailPrePosRange"
        self.SIZE = "motionTrailSize"
        self.PREF_KEY = "motionTrailPrefKey"
        self.CAMERA_KEY = "motionTrailCameraRelative"
        self.mainGroupNode = "aTools_MotionTrail"
        self.queueOrder = 5
        self.prePosRanges = [3, 6, 12, 24, "Playback Range"]
        self.defaultPrePosRange = 24
        self.twistIkObjs = []
        self.constraintLocators = []
        self.firstFrame = 0
        self.lastFrame = 0
        self.nodeInfo = {}
        self.offsetCtrlsPosition = {}
        self.onOff = False
        self.blockingMode = False
        self.lastCurvesEdited = None
        cameraRelativeMode = aToolsMod.loadInfoWithUser(
            "userPrefs", self.CAMERA_KEY)
        self.cameraRelativeMode = cameraRelativeMode if cameraRelativeMode != None else True

        #MOTION TRAIL DRAW
        self.color = {
            "curr_frame": (1, 0, 0),
            "key_before": (0, 0, 1),
            "key_after": (0, 1, 0),
            "frame_before": (0, 0, 1),
            "frame_after": (0, 1, 0),
            "dirty": (1, 1, 1),
            "line": [(1, 1, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1)]
        }
        self.size = {
            "curr_frame": 5,
            "key_before": 3,
            "key_after": 3,
            "frame_before": 1,
            "frame_after": 1,
            "dirty": 1,
            "line": .5
        }
        self.baseOpacity = 1
        self.customSizes = [["small", 1], ["medium", 2], ["large", 4]]
        self.defaultSize = "medium"
        self.prefKeys = ["selection", "motionTrail"]
        self.defaultPrefKey = "selection"

        self.clear()
Example #13
0
 def __init__(self):
     
     if G.aToolsBar.motionTrail: return
     G.aToolsBar.motionTrail = self
     
     self.STORE_NODE                 = "specialTools"
     self.MOTION_TRAIL_ATTR          = "twistIkObjs"
     self.PRE_POS_RANGE              = "motionTrailPrePosRange"
     self.SIZE                       = "motionTrailSize"
     self.PREF_KEY                   = "motionTrailPrefKey"
     self.CAMERA_KEY                 = "motionTrailCameraRelative"
     self.mainGroupNode              = "aTools_MotionTrail"
     self.queueOrder                 = 5
     self.prePosRanges               = [3, 6, 12, 24, "Playback Range"]
     self.defaultPrePosRange         = 24
     self.twistIkObjs                = []
     self.constraintLocators         = []
     self.firstFrame                 = 0
     self.lastFrame                  = 0
     self.nodeInfo                   = {}
     self.offsetCtrlsPosition        = {}
     self.onOff                      = False
     self.blockingMode               = False
     self.lastCurvesEdited           = None
     cameraRelativeMode              = aToolsMod.loadInfoWithUser("userPrefs", self.CAMERA_KEY)
     self.cameraRelativeMode         = cameraRelativeMode if cameraRelativeMode != None else True
     
     
     #MOTION TRAIL DRAW
     self.color                      = {"curr_frame"     :(1,0,0),
                                        "key_before"     :(0,0,1),
                                        "key_after"      :(0,1,0),
                                        "frame_before"   :(0,0,1),
                                        "frame_after"    :(0,1,0),
                                        "dirty"          :(1,1,1),
                                        "line"           :[(1,1,1), (1,1,0), (0,1,1), (1,0,1)]
                                        }
     self.size                       = {"curr_frame"     :5,
                                        "key_before"     :3,
                                        "key_after"      :3,
                                        "frame_before"   :1,
                                        "frame_after"    :1,
                                        "dirty"          :1,
                                        "line"           :.5
                                        }
     self.baseOpacity                = 1
     self.customSizes                = [["small", 1], ["medium", 2], ["large",4]]
     self.defaultSize                = "medium"
     self.prefKeys                   = ["selection", "motionTrail"]
     self.defaultPrefKey             = "selection"
     
     self.clear()
Example #14
0
    def getColoredKeys(self):

        if not G.TM_coloredKeys:
            r = aToolsMod.loadInfoWithUser("userPrefs", "coloredKeys")
        else:
            r = G.TM_coloredKeys

        if r == None:
            default = True
            r = default

        G.TM_coloredKeys = r

        return r
Example #15
0
    def getColoredKeys(self):

        if not G.TM_coloredKeys:
            r = aToolsMod.loadInfoWithUser("userPrefs", "coloredKeys")
        else:
            r = G.TM_coloredKeys

        if r == None:
            default = True
            r = default

        G.TM_coloredKeys = r

        return r
Example #16
0
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()
Example #17
0
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()
Example #18
0
    def hasUpdate(self):

        response = None

        if utilMod.hasInternet(UPDATE_URL):
            try:
                response = urllib2.urlopen(UPDATE_URL, timeout=60)
            except:
                pass

        if response is None:
            message = "aTools warning: Internet connection not detected. Offline aTools.zip not detected. You are no longer up-to-date."
            offlinePath = aToolsMod.loadInfoWithUser("userPrefs",
                                                     "offlinePath")
            if not offlinePath:
                cmds.warning(message)
            else:
                offlineFolder = offlinePath[0]
                offlineFilePath = "%s%saTools.zip" % (offlineFolder, os.sep)
                if not os.path.isfile(offlineFilePath):
                    cmds.warning(message)
                    return False

                fileModTime = os.path.getmtime(offlineFilePath)
                if str(fileModTime) != str(offlinePath[1]):
                    return "offline_update"

            return False

        try:
            for line in response:
                latestVersion = line
                break

            if VERSION not in latestVersion:
                return latestVersion

        except IOError:
            pass

        return False
Example #19
0
 def hasUpdate(self):
     
     response = None 
     
     if utilMod.hasInternet(UPDATE_URL):        
         try:    response = urllib2.urlopen(UPDATE_URL, timeout=60)
         except: pass
     
     if response is None:
         message         = "aTools warning: Internet connection not detected. Offline aTools.zip not detected. You are no longer up-to-date."
         offlinePath     = aToolsMod.loadInfoWithUser("userPrefs", "offlinePath") 
         if not offlinePath: 
             cmds.warning(message)
         else:
             offlineFolder   = offlinePath[0]
             offlineFilePath = "%s%saTools.zip"%(offlineFolder, os.sep)
             if not os.path.isfile(offlineFilePath):                    
                 cmds.warning(message)
                 return False
               
             fileModTime     = os.path.getmtime(offlineFilePath)
             if str(fileModTime) != str(offlinePath[1]):
                 return "offline_update"
             
         return False
         
     
     try:
         for line in response:
             latestVersion = line
             break
         
         if VERSION not in latestVersion:
             return latestVersion
         
     except IOError:
         pass
     
     return False
Example #20
0
 def getPrefKey(self):
     prefKey = aToolsMod.loadInfoWithUser("userPrefs", self.PREF_KEY)
     if not prefKey: prefKey = self.defaultPrefKey
     return prefKey
Example #21
0
import os
import webbrowser

animationCrashRecovery  = animationCrashRecovery.AnimationCrashRecovery()
tumbleOnObjects         = tumbleOnObjects.TumbleOnObjects()

versionInfoPath     = "%sversion_info.txt"%aToolsMod.getaToolsPath(inScriptsFolder=False)
versionInfoContents = utilMod.readFile(versionInfoPath)
VERSION             = versionInfoContents[0].split(" ")[-1].replace("\n", "")
WHATISNEW           = "".join(versionInfoContents[1:])
KEYSLIST            = ["Up", "Down", "Left", "Right", "", "Page_Up", "Page_Down", "Home", "End", "Insert", "", "Return", "Space", "", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"]
SITE_URL            = "http://camiloalan.wix.com/atoolswebsite"
ATOOLS_FOLDER       = "https://dl.dropboxusercontent.com/u/7614713/aTools/"
UPDATE_URL          = "%slatest_version.txt"%ATOOLS_FOLDER
DOWNLOAD_URL        = "%saTools.zip"%ATOOLS_FOLDER
lastUsedVersion     = aToolsMod.loadInfoWithUser("userPrefs", "lastUsedVersion")
HELP_URL            = "http://camiloalan.wix.com/atoolswebsite#!help/cjg9"
DONATE_URL          = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5RQLT89A239K6"




PREFS = [{  "name":"tumbleOnObjects",
            "command":"tumbleOnObjects.switch(onOff)",
            "default":True
        },{ "name":"autoFramePlaybackRange",
            "command":"framePlaybackRange.toggleframePlaybackRange(onOff)",
            "default":False
        },{ "name":"autoJumpToSelectedKey",
            "command":"jumpToSelectedKey.togglejumpToSelectedKey(onOff)",
            "default":False
Example #22
0
 def getMultiplier(self):
     name                    = aToolsMod.loadInfoWithUser("userPrefs", "microTransform")            
     if name == None: name   = self.defaultMultiplier
     
     return name        
Example #23
0
 def getPrePosRange(self):
     range = aToolsMod.loadInfoWithUser("userPrefs", self.PRE_POS_RANGE)
     if not range: range = self.defaultPrePosRange
     return range
Example #24
0
 def openGui(self, *args):
     
     winName     = "commandsWindow"
     height      = 26
     commands    = []
     names       = [] 
     hotkeysDict = [[]]
     allHotkeys  = hotkeys.getHotkeys()
     totalItems  = sum(len(x) for x in allHotkeys)
     itemsCount  = 0
     aB          = 0
     totalColums = 2
     
     for n, loopHotkey in enumerate(allHotkeys):  
         if itemsCount > (totalItems/totalColums) * (aB+1): 
             aB += 1
             hotkeysDict.append([])        
         itemsCount += len(loopHotkey)
         for loopItem in loopHotkey:
             hotkeysDict[aB].append(loopItem)
             hotkeysDict[aB][-1]["colorValue"] = self.colorValues[self.allColors[n]]
             
     if cmds.window(winName, query=True, exists=True): cmds.deleteUI(winName)
     
     window          = cmds.window( winName, title = "Commands and Hotkeys")    
     mainLayout      = cmds.columnLayout(adjustableColumn=True)
     columnsLayout   = cmds.rowColumnLayout(numberOfColumns=totalColums)
     
     for loopColumn in xrange(totalColums):
     
         parent = cmds.rowColumnLayout(numberOfColumns=7, columnSpacing=([2,5], [3,3], [4,3], [5,1], [6,5], [7,5]), parent=columnsLayout)
           
         cmds.text(label='Command', h=height)
         cmds.text(label='Ctl', h=height)
         cmds.text(label='Alt', h=height)
         cmds.text(label='Key', h=height)
         cmds.text(label='', h=height)
         cmds.text(label='Set Hotkey', h=height)
         cmds.text(label='Assigned to', align="left", h=height)
     
         for loopIndex, loopCommand in enumerate(hotkeysDict[loopColumn]):  
             
                       
             command = loopCommand["command"]
             name    = loopCommand["name"] 
             key     = loopCommand["hotkey"]
             alt     = loopCommand["alt"]
             ctl     = loopCommand["ctl"]  
             toolTip = loopCommand["toolTip"]  
             color   = loopCommand["colorValue"]
             
             hotkeyData = aToolsMod.loadInfoWithUser("hotkeys", name) 
             if hotkeyData != None: 
                 key     = hotkeyData[0]
                 alt     = hotkeyData[1]
                 ctl     = hotkeyData[2]
             
             cmds.button("command%s"%name, label=utilMod.toTitle(name), command=command, annotation=toolTip, h=height, bgc=color, parent=parent)
             cmds.checkBox('ctl%s'%name, label='', value=ctl, changeCommand=lambda x, name=name, *args:self.updateHotkeyCheck(name), h=height, parent=parent)
             cmds.checkBox('alt%s'%name, label='', value=alt, changeCommand=lambda x, name=name, *args:self.updateHotkeyCheck(name), h=height, parent=parent)
             cmds.scrollField('key%s'%name, w=80, text=key, keyPressCommand=lambda x, name=name, *args:self.updateHotkeyCheck(name), h=height, parent=parent)
             cmds.button(label=" ", h=height, parent=parent)
             self.popSpecialHotkeys(name)
             cmds.button(label='>',           command=lambda x, name=name, command=command, *args: self.setHotkey(self.getHotkeyDict([name], [command])), h=height, parent=parent)
             cmds.text("query%s"%name, align="left", label=self.hotkeyCheck(key, ctl, alt), font="plainLabelFont", h=height, parent=parent)
             
             commands.append(command)
             names.append(name)
             
             #cmds.button(label="Set Hotkey", command=lambda *args: getHotkeyDict([name], [command], [key], [alt], [ctl], [cmd]))
             self.updateHotkeyCheck(name)        
             
             
     #cmds.rowLayout(numberOfColumns=2, columnAttach=([1, 'left', 0],[2, 'right', 0]), adjustableColumn=2)
     cmds.button(label="Load Defaults", command=lambda *args: self.loadHotkeys(True), parent=mainLayout)
     cmds.button(label="Set All Hotkeys", command=lambda *args: self.setHotkey(self.getHotkeyDict(names, commands)), parent=mainLayout)
     
     cmds.showWindow( window )
Example #25
0
 def openGui(self, *args):
     
     winName     = "commandsWindow"
     height      = 26
     commands    = []
     names       = [] 
     hotkeysDict = [[]]
     allHotkeys  = hotkeys.getHotkeys()
     totalItems  = sum(len(x) for x in allHotkeys)
     itemsCount  = 0
     aB          = 0
     totalColums = 2
     
     for n, loopHotkey in enumerate(allHotkeys):  
         if itemsCount > (totalItems/totalColums) * (aB+1): 
             aB += 1
             hotkeysDict.append([])        
         itemsCount += len(loopHotkey)
         for loopItem in loopHotkey:
             hotkeysDict[aB].append(loopItem)
             hotkeysDict[aB][-1]["colorValue"] = self.colorValues[self.allColors[n]]
             
     if cmds.window(winName, query=True, exists=True): cmds.deleteUI(winName)
     
     window          = cmds.window( winName, title = "Commands and Hotkeys")    
     mainLayout      = cmds.columnLayout(adjustableColumn=True)
     columnsLayout   = cmds.rowColumnLayout(numberOfColumns=totalColums)
     
     for loopColumn in xrange(totalColums):
     
         parent = cmds.rowColumnLayout(numberOfColumns=7, columnSpacing=([2,5], [3,3], [4,3], [5,1], [6,5], [7,5]), parent=columnsLayout)
           
         cmds.text(label='Command', h=height)
         cmds.text(label='Ctl', h=height)
         cmds.text(label='Alt', h=height)
         cmds.text(label='Key', h=height)
         cmds.text(label='', h=height)
         cmds.text(label='Set Hotkey', h=height)
         cmds.text(label='Assigned to', align="left", h=height)
     
         for loopIndex, loopCommand in enumerate(hotkeysDict[loopColumn]):  
             
                       
             command = loopCommand["command"]
             name    = loopCommand["name"] 
             key     = loopCommand["hotkey"]
             alt     = loopCommand["alt"]
             ctl     = loopCommand["ctl"]  
             toolTip = loopCommand["toolTip"]  
             color   = loopCommand["colorValue"]
             
             hotkeyData = aToolsMod.loadInfoWithUser("hotkeys", name) 
             if hotkeyData != None: 
                 key     = hotkeyData[0]
                 alt     = hotkeyData[1]
                 ctl     = hotkeyData[2]
             
             cmds.button("command%s"%name, label=utilMod.toTitle(name), command=command, annotation=toolTip, h=height, bgc=color, parent=parent)
             cmds.checkBox('ctl%s'%name, label='', value=ctl, changeCommand=lambda x, name=name, *args:self.updateHotkeyCheck(name), h=height, parent=parent)
             cmds.checkBox('alt%s'%name, label='', value=alt, changeCommand=lambda x, name=name, *args:self.updateHotkeyCheck(name), h=height, parent=parent)
             cmds.scrollField('key%s'%name, w=80, text=key, keyPressCommand=lambda x, name=name, *args:self.updateHotkeyCheck(name), h=height, parent=parent)
             cmds.button(label=" ", h=height, parent=parent)
             self.popSpecialHotkeys(name)
             cmds.button(label='>',           command=lambda x, name=name, command=command, *args: self.setHotkey(self.getHotkeyDict([name], [command])), h=height, parent=parent)
             cmds.text("query%s"%name, align="left", label=self.hotkeyCheck(key, ctl, alt), font="plainLabelFont", h=height, parent=parent)
             
             commands.append(command)
             names.append(name)
             
             #cmds.button(label="Set Hotkey", command=lambda *args: getHotkeyDict([name], [command], [key], [alt], [ctl], [cmd]))
             self.updateHotkeyCheck(name)        
             
             
     #cmds.rowLayout(numberOfColumns=2, columnAttach=([1, 'left', 0],[2, 'right', 0]), adjustableColumn=2)
     cmds.button(label="Load Defaults", command=lambda *args: self.loadHotkeys(True), parent=mainLayout)
     cmds.button(label="Set All Hotkeys", command=lambda *args: self.setHotkey(self.getHotkeyDict(names, commands)), parent=mainLayout)
     
     cmds.showWindow( window )
Example #26
0
import os
import webbrowser

animationCrashRecovery  = animationCrashRecovery.AnimationCrashRecovery()
tumbleOnObjects         = tumbleOnObjects.TumbleOnObjects()

versionInfoPath     = "%sversion_info.txt"%aToolsMod.getaToolsPath(inScriptsFolder=False)
versionInfoContents = utilMod.readFile(versionInfoPath)
VERSION             = versionInfoContents[0].split(" ")[-1].replace("\n", "")
WHATISNEW           = "".join(versionInfoContents[1:])
KEYSLIST            = ["Up", "Down", "Left", "Right", "", "Page_Up", "Page_Down", "Home", "End", "Insert", "", "Return", "Space", "", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"]
SITE_URL            = "http://camiloalan.wix.com/atoolswebsite"
ATOOLS_FOLDER       = "https://dl.dropboxusercontent.com/u/7614713/aTools/"
UPDATE_URL          = "%slatest_version.txt"%ATOOLS_FOLDER
DOWNLOAD_URL        = "%saTools.zip"%ATOOLS_FOLDER
lastUsedVersion     = aToolsMod.loadInfoWithUser("userPrefs", "lastUsedVersion")
HELP_URL            = "http://camiloalan.wix.com/atoolswebsite#!help/cjg9"
DONATE_URL          = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5RQLT89A239K6"




PREFS = [{  "name":"tumbleOnObjects",
            "command":"tumbleOnObjects.switch(onOff)",
            "default":True
        },{ "name":"autoFramePlaybackRange",
            "command":"framePlaybackRange.toggleframePlaybackRange(onOff)",
            "default":False
        },{ "name":"autoJumpToSelectedKey",
            "command":"jumpToSelectedKey.togglejumpToSelectedKey(onOff)",
            "default":False
Example #27
0
 def getPrefSize(self):
     size = aToolsMod.loadInfoWithUser("userPrefs", self.SIZE)   
     if not size: size = self.defaultSize
     return size   
Example #28
0
    def getMultiplier(self):
        name = aToolsMod.loadInfoWithUser("userPrefs", "microTransform")
        if name == None: name = self.defaultMultiplier

        return name
Example #29
0
 def removeCustomSwitch(self, switch):
     allCustomSwitch     = aToolsMod.loadInfoWithUser("spaceSwitch", "customSwitch") or []
     
     allCustomSwitch.remove(switch)
     aToolsMod.saveInfoWithUser("spaceSwitch", "customSwitch", allCustomSwitch)
Example #30
0
 def getPrefKey(self):
     prefKey = aToolsMod.loadInfoWithUser("userPrefs", self.PREF_KEY)   
     if not prefKey: prefKey = self.defaultPrefKey
     return prefKey   
Example #31
0
 def getPrefSize(self):
     size = aToolsMod.loadInfoWithUser("userPrefs", self.SIZE)
     if not size: size = self.defaultSize
     return size
Example #32
0
    def populateMenu(self, menu, *args):
                  
        uiMod.clearMenuItems(menu)
        
        tokenCustomDivider  = False 
        selObjects          = cmds.ls(selection=True)
        
        if not selObjects: return    
        
        channels    = animMod.getAllChannels()
        channelList = {}
        tokenList   = []
               
        for n, loopObjectChannel in enumerate(channels):
            obj = selObjects[n]
            if loopObjectChannel:
                for loopChannel in loopObjectChannel:
                    tokens = animMod.getTokens(obj, loopChannel)
                    if tokens and len(tokens) > 1: 
                        if not channelList.has_key(loopChannel): channelList[loopChannel] = {"objects":[], "tokens":[]}
                        channelList[loopChannel]["objects"].append(obj)
                        channelList[loopChannel]["tokens"].append(tokens)
                        
        
        for loopChannelList in channelList:
            newMenu         = cmds.menuItem(subMenu=True, label=utilMod.toTitle(loopChannelList), parent=menu)
            objects         = channelList[loopChannelList]["objects"]
            tokens          = channelList[loopChannelList]["tokens"]
            mergedTokens    = utilMod.mergeLists(tokens)                      
            tokenDict       = []
            
            for loopMergedTokens in mergedTokens:
                tokenDict.append({"token":loopMergedTokens, "objects":[]})
                for n, loopObject in enumerate(objects):
                    t = tokens[n]
                    if loopMergedTokens in t:
                        tokenDict[-1]["objects"].append(loopObject)  
        
            cmds.radioMenuItemCollection(parent=menu)            
            
            for n, loopTokenDict in enumerate(tokenDict):
                tokenCustomDivider  = True
                token               = loopTokenDict["token"]
                objects             = loopTokenDict["objects"]
                selectedList        = [cmds.getAttr("%s.%s"%(loopObj, loopChannelList)) for loopObj in objects]                
                radioSelected       = False
                
                
                if len(set(selectedList)) == 1:
                    if selectedList[0] == n:
                        radioSelected   = True
                
                cmds.menuItem(label=utilMod.toTitle(token), radioButton=radioSelected, parent=newMenu, command=lambda x, objects=objects, channel=loopChannelList, token=token, *args:self.spaceSwitch([objects, channel, token]))
            
             
            #ALL KEYS
            cmds.menuItem( divider=True, parent=newMenu)
            newMenu = cmds.menuItem(subMenu=True, label='All Keys', parent=newMenu)
            
            cmds.radioMenuItemCollection(parent=newMenu)
            
            for n, loopTokenDict in enumerate(tokenDict):
                token           = loopTokenDict["token"]
                objects         = loopTokenDict["objects"]
                selectedList    = [cmds.getAttr("%s.%s"%(loopObj, loopChannelList)) for loopObj in objects]                
                radioSelected   = False
                
                if len(set(selectedList)) == 1:
                    if selectedList[0] == n:
                        radioSelected   = True
                
                cmds.menuItem(label=utilMod.toTitle(token), radioButton=radioSelected, parent=newMenu, command=lambda x, objects=objects, channel=loopChannelList, token=token, *args:self.spaceSwitch([objects, channel, token], all=True))

        # CUSTOM SWITCH
        allCustomSwitch     = aToolsMod.loadInfoWithUser("spaceSwitch", "customSwitch") or []
        channelboxSelObjs   = animMod.channelBoxSel()
        
        if channelboxSelObjs:
            obj            = ".".join(channelboxSelObjs[0].split(".")[:-1])
            selectedSwitch = [loopAttr.split(".")[-1] for loopAttr in channelboxSelObjs if utilMod.isDynamic(obj, loopAttr.split(".")[-1])]
            if len(selectedSwitch) > 0 and selectedSwitch not in allCustomSwitch: 
                allCustomSwitch.append(selectedSwitch)            
                aToolsMod.saveInfoWithUser("spaceSwitch", "customSwitch", allCustomSwitch)  
        
        
        # populate menu
        if len(allCustomSwitch) > 0:  
                
            divider             = False
            customSwitchesAdded = []
            customSwitchesMenu  = []
            
            for loopObj in selObjects:
                       
                for loopCustomSwitch in sorted(allCustomSwitch, key=len, reverse=True):
                    
                    if len(loopCustomSwitch) == 0: continue                    
                    
                    switchName  = utilMod.getNameSpace([loopObj])[1][0].split(".")[0]
                    exit        = False
                    
                    for loopAttr in loopCustomSwitch:
                        objAttr = "%s.%s"%(loopObj, loopAttr)
                        if not cmds.objExists(objAttr):
                            exit = True
                            break
                            
                    if exit: continue
                         
                    customSwitchesMenu.append({"objects":[loopObj], "switches":loopCustomSwitch})
                    
                    for loopMenu in customSwitchesMenu[:-1]:
                        if loopObj in loopMenu["objects"] and len(loopCustomSwitch) < len(loopMenu["switches"]) and utilMod.listIntersection(loopMenu["switches"], loopCustomSwitch) == loopCustomSwitch:
                            customSwitchesMenu.pop()
                            break
                        if loopCustomSwitch == loopMenu["switches"]:
                            loopMenu["objects"].append(loopObj)
                            customSwitchesMenu.pop()
                            break
                     
                    
            for loopSwitchMenu in customSwitchesMenu:
                
                objects     = loopSwitchMenu["objects"]
                switches    = loopSwitchMenu["switches"]
                switchName  = ", ".join(list(set(utilMod.getNameSpace(objects)[1])))
                    
                if not divider and tokenCustomDivider: divider = cmds.menuItem(divider=True, parent=menu)  
  
                cmds.radioMenuItemCollection(parent=menu)
                
                newMenu         = cmds.menuItem(subMenu=True, label=switchName, parent=menu)
                radioSelected   = []
                 
                for loopCustomSwitchAttr in switches:
                    switchAttr      = loopCustomSwitchAttr.split(".")[-1]
                    objAttr         = "%s.%s"%(objects[0], switchAttr)
                    minValue        = cmds.addAttr(objAttr, query=True, minValue=True)
                    maxValue        = cmds.addAttr(objAttr, query=True, maxValue=True)
                    currValue       = cmds.getAttr(objAttr)
                    radioSelected.append((currValue == maxValue))
                    
                    cmds.menuItem(label=switchAttr, radioButton=radioSelected[-1], parent=newMenu, command=lambda x, objects=objects, switchAttr=switchAttr, switches=switches, *args:self.spaceSwitch([objects, switchAttr, switches], mode="custom"))
                
                switchAttr      = "message"
                radioSelected   = (list(set(radioSelected)) == [False])                    
                cmds.menuItem(label="None", radioButton=radioSelected, parent=newMenu, command=lambda x, objects=objects, switchAttr=switchAttr, switches=switches, *args:self.spaceSwitch([objects, switchAttr, switches], mode="custom"))
                    
                #ALL KEYS
                
                cmds.menuItem( divider=True, parent=newMenu)
                allMenu = cmds.menuItem(subMenu=True, label='All Keys', parent=newMenu) 
                radioSelected   = []
                cmds.radioMenuItemCollection(parent=menu)
                
                
                for loopCustomSwitchAttr in switches:
                    switchAttr      = loopCustomSwitchAttr.split(".")[-1]
                    objAttr         = "%s.%s"%(objects[0], switchAttr)
                    minValue        = cmds.addAttr(objAttr, query=True, minValue=True)
                    maxValue        = cmds.addAttr(objAttr, query=True, maxValue=True)
                    currValue       = cmds.getAttr(objAttr)
                    radioSelected.append((currValue == maxValue))
                    cmds.menuItem(label=switchAttr, radioButton=radioSelected[-1], parent=allMenu, command=lambda x, objects=objects, switchAttr=switchAttr, switches=switches, *args:self.spaceSwitch([objects, switchAttr, switches], all=True, mode="custom"))
                
                switchAttr      = "message"
                radioSelected   = (list(set(radioSelected)) == [False])  
                cmds.menuItem(label="None", radioButton=radioSelected, parent=allMenu, command=lambda x, objects=objects, switchAttr=switchAttr, switches=switches, *args:self.spaceSwitch([objects, switchAttr, switches], all=True, mode="custom"))
                
                #DELETE
                
                cmds.menuItem(label="Remove", parent=newMenu, command=lambda x, switches=switches, *args:self.removeCustomSwitch(switches))
Example #33
0
 def getPrePosRange(self):
     range = aToolsMod.loadInfoWithUser("userPrefs", self.PRE_POS_RANGE)   
     if not range: range = self.defaultPrePosRange
     return range