コード例 #1
0
ファイル: Ui.py プロジェクト: joetainment/mmmmtools
 def makeMenuItem(self, label=None, name=None, command=None, parentMenu=None, subMenu=False, optionBox = False):
     ## Add to the count of items that are in this menu, so that each item
     ## can can it's own unique number.
     self.menuCount += 1
     
     ## The parentMenu normally exists to support submenus
     ## Normally the new menu item should be added to specified parent
     ## however, if none was given we try to add it to the
     ## self.activeParentMenu, otherwise we fall back on the self.menu
     if parentMenu is None:
         if self.activeParentMenu == None:
             parentMenu = self.menu
         else:
             parentMenu = self.activeParentMenu
     
     ## If no label has been given, generate an automatic label.
     ## This will be obvious when see in the user interface
     if label is None:
         label = "MenuAutoLabel"+str(self.menuCount)
     
     ## Set maya's default parent!
     pm.setParent( parentMenu , menu=True)
     
     ## Maka a code-friendly name that can be used for calling functions
     fixedLabel = label.replace( " ", "").replace(".", "").replace("(", "" ).replace(")","").replace("'", "" )
     
     if name=="":
         name = fixedLabel
     
     if command is None or command=="":
         command = "menu" + fixedLabel
     
     if subMenu==True:
         newMenuItem = pm.menuItem( label=label, sm=True, tearOff=True, allowOptionBoxes=True )
     elif optionBox==True:
         newMenuItem = pm.menuItem( command = getattr(self,command+"Options"), optionBox=True  )
     else:
         try:
             ## This is just hard coded for now, should be made a list in conf or something
             labelFixedForMenu = label
             for word in ["Modeler ", "Texturer ", "Selector ", "Rigger " ]:
                 if labelFixedForMenu.startswith( word ):
                     labelFixedForMenu = labelFixedForMenu.replace( word, "", 1 )
                         ## 1 occurance max replacement
             
             newMenuItem = pm.menuItem(
                             label=labelFixedForMenu,
                             command = getattr(self,command)
                           ) #self[command] )
             
         except:
             newMenuItem = pm.menuItem( label=label+" Not Implemented" )
             u.log( "Attempted to add a MmmmTools menu item for a "
                     "UI command that hasn't been written yet. "
                     "The menu item will do nothing."
                  )
             
     return newMenuItem
コード例 #2
0
    def refresh(self, *args):
        refreshLoggerHierarchy()
        self.deleteAllItems(1)
#        if logging.root.handlers:
#            self.buildLevelMenu(self, logging.root.handlers[0])
        pymel.menuItem(l="Root Logger:",p=self,en=0)
        #pymel.menuItem(divider=1, p=self)
        #self.menuLoggerTree = pymel.menuItem(p=self, l="Logger Tree", sm=True, aob=True)
        self.refreshLoggingMenu()
コード例 #3
0
    def makeMenuItemFromString(self, stringForItem):
        st = stringForItem

        if st == 'div' or st == 'divider':
            pm.menuItem(divider=True)
        elif st == 'Menu Main':
            self.activeParentMenu = self.menu
            pm.setParent(self.menu, menu=True)
            #u.log('Going back to parent menu')
        elif st.startswith('Menu '):
            stsub = st.replace('Menu ', '')
            #u.log( 'stsub is: ' + stsub )
            self.makeSubMenu(stsub)
            #u.log('Entering Sub menu')
        elif st.startswith('optionBox '):
            stsub = st.replace('optionBox ', '')
            #u.log( 'stsub is: ' + stsub )
            self.makeMenuItem(label=stsub, optionBox=True)
        else:
            self.makeMenuItem(label=st)
コード例 #4
0
ファイル: Ui.py プロジェクト: joetainment/mmmmtools
 def makeMenuItemFromString(self, stringForItem ):
     st = stringForItem
     
     if st == 'div' or st == 'divider':
         pm.menuItem( divider=True )
     elif st == 'Menu Main':
         self.activeParentMenu = self.menu
         pm.setParent( self.menu, menu=True )
         #u.log('Going back to parent menu')
     elif st.startswith( 'Menu '):
         stsub = st.replace('Menu ','')
         #u.log( 'stsub is: ' + stsub )            
         self.makeSubMenu( stsub )
         #u.log('Entering Sub menu')
     elif st.startswith('optionBox '):
         stsub = st.replace('optionBox ', '')
         #u.log( 'stsub is: ' + stsub )
         self.makeMenuItem( label=stsub, optionBox=True )
     else:
         self.makeMenuItem( label=st )
コード例 #5
0
 def __init__(self):
     self.win=pm.window()
     with self.win:
         self.col = pm.columnLayout()
         with self.col:
             self.label1 = pm.text( "Attribute Group Name (To Be Added)" )
             self.dropdown = pm.optionMenu( "menu", 
                 changeCommand = self.onDropDownChange                
             )
             with self.dropdown:
                 for i,v in enumerate(addableAttrList):
                     pm.menuItem( v )
             self.attrNameField = pm.textField( )
             self.addAttrButton = pm.button(
                 "Add Attribtutes!",
                 command = lambda x:  self.addAttributeGroup(
                    self.attrNameField.getText()
                 )
             )
             
     self.win.show()
コード例 #6
0
    def buildMenu(self):
        menuToBuildOn = self.ddMenu
        try:
            menuToBuildOn.clear()
        except:
            print(traceback.format_exc())
        self.scriptFileRunner.findScripts()

        #print( help( type(self.ddMenu) )  )

        #for entry in self.ddMenuEntires:
        #    try:
        #        pm.deleteUI( entry )
        #    except:
        #        print( traceback.format_exc()  )

        with menuToBuildOn:
            for script in self.scriptFileRunner.scriptsFound:
                tmp = pm.menuItem(label=script)
                self.ddMenuEntires.append(tmp)
コード例 #7
0
 def buildSubMenu(self, parent, logger):
     #levelsMenu = pymel.menuItem(l="%s <%s>" % (logger.name, levelsDict[logger.level]),p=parent, sm=True)
     self.buildLevelMenu(parent, logger)
     pymel.menuItem(d=1,p=parent)
     try:
         if logger.children:
             pymel.menuItem(l="Child Loggers:",p=parent,en=0)
             for item in logger.children:
                 subMenu = pymel.menuItem(l=item.name, sm=True, p=parent, tearOff=True, aob=True, pmo=True)
                 #subMenu.postMenuCommand(pymel.Callback(self.buildSubMenu, parent=subMenu, logger=item))
                 subMenu.setPostMenuCommand(pymel.Callback(self.buildSubMenu, parent=subMenu, logger=item)) #J.Parks Edit
                 subMenu.setPostMenuCommandOnce(True)
     except: pass
     pymel.menuItem(d=1,p=parent)
     if logger.handlers:
         pymel.menuItem(l="Streams:",p=parent,en=0)
         for item in logger.handlers:
             levelsMenu = pymel.menuItem(l="%s <%s>" % (item.__class__.__name__, levelsDict[item.level]), p=parent, sm=True, aob=True)
             self.buildLevelMenu(levelsMenu, item)
             pymel.menuItem(d=1,p=levelsMenu)
             pymel.menuItem(l="Set Formatter", p=levelsMenu, c=pymel.Callback(self.setFormatter, item))
             #pymel.menuItem(l="Remove", p=parent, ob=True, c=pymel.Callback(logger.removeHandler, item))
             pymel.menuItem(l="Remove", p=levelsMenu, ob=True, c=pymel.Callback(logger.removeHandler, item)) # J.parks Edit
     pymel.menuItem(l="<New Stream...>", p=parent, c=lambda *x: self.addHandler(logger))
コード例 #8
0
 def buildLevelMenu(self, parent, item):
     for level in logLevelNames:
         pymel.menuItem(p=parent, checkBox=levelsDict[item.level]==level, l=level, c=pymel.Callback(self.changeLevel, item, level))
コード例 #9
0
    def makeMenuItem(self,
                     label=None,
                     name=None,
                     command=None,
                     parentMenu=None,
                     subMenu=False,
                     optionBox=False):
        ## Add to the count of items that are in this menu, so that each item
        ## can can it's own unique number.
        self.menuCount += 1

        ## The parentMenu normally exists to support submenus
        ## Normally the new menu item should be added to specified parent
        ## however, if none was given we try to add it to the
        ## self.activeParentMenu, otherwise we fall back on the self.menu
        if parentMenu is None:
            if self.activeParentMenu == None:
                parentMenu = self.menu
            else:
                parentMenu = self.activeParentMenu

        ## If no label has been given, generate an automatic label.
        ## This will be obvious when see in the user interface
        if label is None:
            label = "MenuAutoLabel" + str(self.menuCount)

        ## Set maya's default parent!
        pm.setParent(parentMenu, menu=True)

        ## Maka a code-friendly name that can be used for calling functions
        fixedLabel = label.replace(" ", "").replace(".", "").replace(
            "(", "").replace(")", "").replace("'", "")

        if name == "":
            name = fixedLabel

        if command is None or command == "":
            command = "menu" + fixedLabel

        if subMenu == True:
            newMenuItem = pm.menuItem(label=label,
                                      sm=True,
                                      tearOff=True,
                                      allowOptionBoxes=True)
        elif optionBox == True:
            newMenuItem = pm.menuItem(command=getattr(self,
                                                      command + "Options"),
                                      optionBox=True)
        else:
            try:
                ## This is just hard coded for now, should be made a list in conf or something
                labelFixedForMenu = label
                for word in ["Modeler ", "Texturer ", "Selector ", "Rigger "]:
                    if labelFixedForMenu.startswith(word):
                        labelFixedForMenu = labelFixedForMenu.replace(
                            word, "", 1)
                        ## 1 occurance max replacement

                newMenuItem = pm.menuItem(label=labelFixedForMenu,
                                          command=getattr(
                                              self, command))  #self[command] )

            except:
                newMenuItem = pm.menuItem(label=label + " Not Implemented")
                u.log("Attempted to add a MmmmTools menu item for a "
                      "UI command that hasn't been written yet. "
                      "The menu item will do nothing.")

        return newMenuItem
コード例 #10
0
    def register(self):
        try:
            self.activeParentMenu = self.menu
            pm.setParent(self.menu, menu=True)
            pm.menuItem(divider=True)

            ## Obsolete, never worked anyway has syntax errors
            ## just an idea...
            ## mi will make menu items
            #mi = lambda x(y): self.makeMenuItem( label=y )

            ## md will make dividers
            #md = lambda x: pm.menuItem(divider=True)

            ## Put a bunch of strings in a list
            ## which will be used to make menu items
            items = [
                #'MmmmTools Dockable UI...',
                #'div',
                'Save Incrementally',
                'Set Project By Pasting Or Typing',
                'div',
                #'Activate Hotkey Manager',
                #'Save User Hotkeys',
                #'Restore Earlier Saved Hotkeys',
                #'div',
                #'Set Hotkeys To Factory Defaults',
                #'Set Hotkeys To User Defaults',
                #'div',
                #'Set Hotkeys To Polygons',
                #'Set Hotkeys To Rendering',
                #'Set Hotkeys To UVs',
                #'div',
                'Hotkeys Window...',
                'Hotstring Window...',
                'div',
                'Menu Selector',
                'Selector     Store Selection To Slot',
                "Selector     Select From Slot's Selection",
                'div',
                'Selector     Previous Slot',
                'Selector     Next Slot',
                'div',
                'Selector     Set And Save Named Slot By Name',
                'Selector     Select Named Slot By Name',
                'div',
                'Selector     Show Used Named Slots',
                'div',
                #'div',
                ## Volume Select App/Tool/UI current disabled because of a Maya crash bug.
                #'Selector     Volume Select Tool' ,
                'Selector     Volume Select Verts',
                'Selector     Volume Select Faces',
                'Menu Main',
                'Menu Modeler',
                'Modeler Split Polygon Tool',
                'div',
                'Modeler Select Non Quads',
                'Modeler Select Tris',
                'Modeler Select NGons',
                'Modeler Select Quads',
                'div',
                'Modeler Select Hard Edges',
                'Modeler Select Creased Edges',
                'Modeler Crease Selected Edges',
                'Modeler Uncrease Selected Edges',
                'Modeler Crease And Harden Selected Edges',
                'Modeler Uncrease And Soften Selected Edges',
                'Modeler Propagate Edge Hardness On',
                'Modeler Propagate Edge Hardness Off',
                'div',
                'Modeler Vertex Aligner',
                'Modeler Center Pivot On Components',
                'div',
                'Modeler Zero Pivot Delete History Freeze Xforms WS',
                'div',
                'Modeler Mr Clean',
                'Modeler Retopology Tools',
                'Modeler Grid Tools',
                'Modeler Mirror Tools',
                'Menu Main',
                'Menu Texturer',
                'Texturer Reload Textures',
                'Texturer UV Xforms Tool',
                'Texturer Select Seams',
                'Texturer Show Seams',
                'div',
                'Texturer Calc And Store UV Sizing',
                'Texturer Apply Stored UV Sizing',
                'Texturer Apply Numerical UV Sizing',
                'div',
                'Texturer Unfold3D Only Selected',
                'Texturer Unfold3D Multiple Objects',
                'div',
                'Texturer FileTextureManager',
                'Menu Main',
                'Menu Rigger',
                'Rigger Attribute Setter',
                'Rigger Attribute Connector',
                'Rigger Rename By Regular Expression',
                'div',
                'Rigger Pivot Fix',
                'Rigger Replace Objects',
                'Rigger Move Up In Hierarchy',
                'div',
                'Rigger Align Xforms',
                'Rigger Constrain Xforms',
                'Rigger Align Then Constrain Xforms',
                'Rigger Zero',
                'Rigger Make Pole Vector',
                'div',
                'Rigger Joint Orient Helper',
                'Rigger Create Twist Joint To Selected Child',
                'Rigger Create Rivets',
                'Menu Main',
                'Menu Renderer',
                ## The following line is diabled because MIP shaders work by default in Maya 2011, so it isn't needed right now.
                'Renderer Show Hypershade MIP Shaders',
                'Renderer Create Rim Light',
                'Renderer Adjust Lighting',
                'Renderer Reflectivity Of Selected Materials To Zero',
                'Renderer Add VRay Texture Input Gamma Attributes',
                'Renderer Set VRay Texture To SRGB',
                'Renderer Set VRay Texture To Linear',
                'Renderer Enable Hypergraph Thumbnails',
                'Renderer Disable Hypergraph Thumbnails',
                'Renderer Expose MIP Shaders   Restart Required',
                'Renderer Do Not Expose MIP Shaders   Restart Required',
                'Renderer Transfer Shading Sets By Space For Sel',
                'Renderer Transfer Shading Sets By Component For Sel',
                ##  The following two lines are for future planned features
                #'Create Occluded Ambient Light' )
                #'Render Animation Interactively' )
                'Menu Main',
                'Menu Gamer',
                'Gamer Add Attributes For Export To Selected Objects',
                'div',
                'Gamer FBX Export Selection',
                'Gamer FBX Export All',
                'div',
                'Gamer Make UCX Objects And Parent To Last Selected Object',
                'Menu Main',
                'Menu Scripter',
                'Scripter Editor',
                'Scripter Run Scripts From Selection',
                'div',
                'Scripter Connect To Attribute Array By Typing Name',
                'Scripter Select Connected To Array By Typing Name',
                'div',
                'Scripter Make Scripter Node',
                'div',
                'Scripter File Runner',
                'div',
                'Scripter Mel To Python Converter Ui',
                'Menu Main',
                'div',
                #'Menu Open Maya Toolbox',
                #    'OMT Connect Components',
                #    'OMT Scale Position',
                #    'OMT Select Element',
                #    'OMT Selection Dragger',
                #    'optionBox OMT Selection Dragger',
                #    'OMT Select Loop',
                #    'OMT Select Outline',
                #    'optionBox OMT Select Outline',
                #    'OMT Select Ring',
                #    'OMT Spin Edge',
                #    'OMT Split Around Selection',
                #    'OMT Split Loop',
                #    'OMT Xray Toggle',
                #    'About The Open Maya Toolbox',
                'Menu Main',
                'div',
                #'Download Extra Scripts...',
                #'HKLocalTools (Downloaded)',
                #
                #'ProgressiveRendering (Downloaded)',
                #'GoZ (Shelf Button Substitute)',
                'div',
            ]

            for item in items:
                #if item == 'Menu Main':
                #
                #    pm.setParent( self.menu, menu=True )
                #    u.log('Going back to parent menu')
                #else:
                if isinstance(item, basestring):
                    self.makeMenuItemFromString(item)
                #elif isinstance(item, dict ):
                #    self.makeMenuItemFromDict( item )
            ## Set back to standard menu
            pm.setParent(self.menu, menu=True)

            ## Prepare to make make menus via commander
            commander = self.mmmm.commander
            cmdEntries = commander.entries

            #### Make Developer Menu
            developerMenu = pm.menuItem(label='MmmmTools Developer...',
                                        sm=True,
                                        tearOff=True,
                                        allowOptionBoxes=True)
            self.submenus['developerMenu'] = developerMenu
            pm.setParent(developerMenu, menu=True)
            for name, entry in cmdEntries.items():
                inMenu = entry['inMenu']
                print(name)
                if inMenu == True or inMenu == 'Developer':
                    print("in menu name is:")
                    print(entry['name'])
                    uiLabel = entry.get('uiLabel')
                    if uiLabel == None:
                        uiLabel = name
                    pm.menuItem(
                        label=uiLabel,
                        command='mmmmTools.commander.commands["' + name +
                        '"]()',
                    )

            commander = self.mmmm.commander
            cmdEntries = commander.entries

            pm.setParent(developerMenu, menu=True)
            modelerMenu = self.submenus['modeler'] = pm.menuItem(
                label='Modeler (dev)...',
                sm=True,
                tearOff=True,
                allowOptionBoxes=True)
            pm.setParent(modelerMenu, menu=True)
            for name, entry in cmdEntries.items():
                inMenu = entry.inMenu
                if inMenu == 'Modeler':
                    uiLabel = entry.get('uiLabel')
                    if uiLabel == None:
                        uiLabel = name
                    pm.menuItem(
                        label=uiLabel,
                        command='mmmmTools.commander.commands["' + name +
                        '"]()',
                    )

            pm.setParent(developerMenu, menu=True)
            selectorMenu = self.submenus['selector'] = pm.menuItem(
                label='Selector (dev)...',
                sm=True,
                tearOff=True,
                allowOptionBoxes=True)
            pm.setParent(selectorMenu, menu=True)
            for name, entry in cmdEntries.items():
                inMenu = entry.inMenu
                if inMenu == 'Selector':
                    uiLabel = entry.get('uiLabel')
                    if uiLabel == None:
                        uiLabel = name
                    pm.menuItem(
                        label=uiLabel,
                        command='mmmmTools.commander.commands["' + name +
                        '"]()',
                    )

            pm.menuItem(divider=True)

            pm.setParent(self.menu, menu=True)
            pm.menuItem(divider=True)
            pm.menuItem(divider=True)
            pm.menuItem(divider=True)
            ## This one should go last!  Its the about box
            pm.menuItem("MmmmToolsHelp",
                        label='MmmmTools Help',
                        annotation='Help not yet available.',
                        command=self.menuHelp)
            pm.menuItem("MmmmToolsAbout",
                        label='About MmmmTools',
                        command=self.menuAbout)

        except:
            u.log("Failed to create MmmmTools main menu.")
コード例 #11
0
ファイル: Ui.py プロジェクト: joetainment/mmmmtools
    def register(self):
        try:      
            self.activeParentMenu = self.menu
            pm.setParent( self.menu, menu=True )
            pm.menuItem(  divider=True );
            
                ## Obsolete, never worked anyway has syntax errors
                ## just an idea...
                    ## mi will make menu items
                    #mi = lambda x(y): self.makeMenuItem( label=y )
                
                    ## md will make dividers
                    #md = lambda x: pm.menuItem(divider=True)    
            
            ## Put a bunch of strings in a list
            ## which will be used to make menu items
            items = [
                #'MmmmTools Dockable UI...',
                #'div',
                'Save Incrementally',
                'Set Project By Pasting Or Typing',
                'div',
                #'Activate Hotkey Manager',
                #'Save User Hotkeys',
                #'Restore Earlier Saved Hotkeys',
                #'div',
                #'Set Hotkeys To Factory Defaults',
                #'Set Hotkeys To User Defaults',
                #'div',
                #'Set Hotkeys To Polygons',
                #'Set Hotkeys To Rendering',
                #'Set Hotkeys To UVs',
                #'div',
                'Hotkeys Window...',
                'Hotstring Window...',
                'div',
                'Menu Selector',                        
                    'Selector     Store Selection To Slot' ,
                    "Selector     Select From Slot's Selection" ,
                    'div',
                    'Selector     Previous Slot' ,
                    'Selector     Next Slot' ,
                    'div',
                    'Selector     Set And Save Named Slot By Name' ,
                    'Selector     Select Named Slot By Name' ,
                    'div',
                    'Selector     Show Used Named Slots' ,
                    'div',
                    #'div',
                    ## Volume Select App/Tool/UI current disabled because of a Maya crash bug.
                    #'Selector     Volume Select Tool' ,
                    'Selector     Volume Select Verts' ,
                    'Selector     Volume Select Faces' ,
                'Menu Main',                     
                'Menu Modeler',                        
                    'Modeler Split Polygon Tool' ,
                    'div',
                    'Modeler Select Non Quads' ,
                    'Modeler Select Tris' ,
                    'Modeler Select NGons' ,
                    'Modeler Select Quads' ,
                    'div',
                    'Modeler Select Hard Edges' ,
                    'Modeler Select Creased Edges' ,
                    'Modeler Crease Selected Edges' ,
                    'Modeler Uncrease Selected Edges' ,
                    'Modeler Crease And Harden Selected Edges' ,
                    'Modeler Uncrease And Soften Selected Edges' ,
                    'Modeler Propagate Edge Hardness On' ,
                    'Modeler Propagate Edge Hardness Off' ,
                    'div',
                    'Modeler Vertex Aligner',
                    'Modeler Center Pivot On Components',
                    'div',
                    'Modeler Zero Pivot Delete History Freeze Xforms WS',
                    'div',
                    'Modeler Mr Clean',
                    'Modeler Retopology Tools',
                    'Modeler Grid Tools',
                    'Modeler Mirror Tools',
                'Menu Main',
                'Menu Texturer',
                    'Texturer Reload Textures',
                    'Texturer UV Xforms Tool',                    
                    'Texturer Select Seams',
                    'Texturer Show Seams',
                    'div',
                    'Texturer Calc And Store UV Sizing',
                    'Texturer Apply Stored UV Sizing',
                    'Texturer Apply Numerical UV Sizing',
                    'div',
                    'Texturer Unfold3D Only Selected',
                    'Texturer Unfold3D Multiple Objects',
                    'div',
                    'Texturer FileTextureManager',
                'Menu Main',                
                'Menu Rigger',
                    'Rigger Attribute Setter',
                    'Rigger Attribute Connector',
                    'Rigger Rename By Regular Expression',
                    'div',
                    'Rigger Pivot Fix',
                    'Rigger Replace Objects',
                    'Rigger Move Up In Hierarchy',
                    'div',
                    'Rigger Align Xforms',
                    'Rigger Constrain Xforms',
                    'Rigger Align Then Constrain Xforms',
                    'Rigger Zero',
                    'Rigger Make Pole Vector',
                    'div',
                    'Rigger Joint Orient Helper',
                    'Rigger Create Twist Joint To Selected Child',
                    'Rigger Create Rivets',
                'Menu Main',
                'Menu Renderer',
                    ## The following line is diabled because MIP shaders work by default in Maya 2011, so it isn't needed right now.
                    'Renderer Show Hypershade MIP Shaders',
                    'Renderer Create Rim Light',
                    'Renderer Adjust Lighting',
                    'Renderer Reflectivity Of Selected Materials To Zero',
                    'Renderer Add VRay Texture Input Gamma Attributes',
                    'Renderer Set VRay Texture To SRGB',
                    'Renderer Set VRay Texture To Linear',
                    'Renderer Enable Hypergraph Thumbnails',
                    'Renderer Disable Hypergraph Thumbnails',
                    'Renderer Expose MIP Shaders   Restart Required',
                    'Renderer Do Not Expose MIP Shaders   Restart Required',
                    ##  The following two lines are for future planned features
                    #'Create Occluded Ambient Light' )
                    #'Render Animation Interactively' )
                'Menu Main', 
                'Menu Gamer',
                    'Gamer Add Attributes For Export To Selected Objects',
                    'div',                          
                    'Gamer FBX Export Selection',
                    'Gamer FBX Export All', 
                    'div',
                    'Gamer Make UCX Objects And Parent To Last Selected Object',                   
                'Menu Main', 
                'Menu Scripter',
                    'Scripter Editor',
                    'Scripter Run Scripts From Selection',
                    'div',                    
                    'Scripter Connect To Attribute Array By Typing Name',
                    'Scripter Select Connected To Array By Typing Name',
                    'div',
                    'Scripter Make Scripter Node',
                    'div',
                    'Scripter File Runner',
                    'div',
                    'Scripter Mel To Python Converter Ui',
                'Menu Main',                
                'div',
                #'Menu Open Maya Toolbox',
                #    'OMT Connect Components',
                #    'OMT Scale Position',
                #    'OMT Select Element',
                #    'OMT Selection Dragger',
                #    'optionBox OMT Selection Dragger',
                #    'OMT Select Loop',
                #    'OMT Select Outline',
                #    'optionBox OMT Select Outline',
                #    'OMT Select Ring',
                #    'OMT Spin Edge',
                #    'OMT Split Around Selection',
                #    'OMT Split Loop',
                #    'OMT Xray Toggle',
                #    'About The Open Maya Toolbox',
                'Menu Main',
                'div',      
                #'Download Extra Scripts...',
                #'HKLocalTools (Downloaded)',
                #
                #'ProgressiveRendering (Downloaded)',
                #'GoZ (Shelf Button Substitute)',
                'div',                
            ]
                
            for item in items:
                #if item == 'Menu Main':
                #    
                #    pm.setParent( self.menu, menu=True )   
                #    u.log('Going back to parent menu')
                #else:
                if isinstance( item, basestring ):
                    self.makeMenuItemFromString( item )
                #elif isinstance(item, dict ):
                #    self.makeMenuItemFromDict( item )
            ## Set back to standard menu
            pm.setParent( self.menu, menu=True )            
            
            
            ## Prepare to make make menus via commander
            commander = self.mmmm.commander
            cmdEntries = commander.entries


            
            #### Make Developer Menu
            developerMenu = pm.menuItem( label='MmmmTools Developer...', sm=True, tearOff=True, allowOptionBoxes=True )
            self.submenus['developerMenu']=developerMenu
            pm.setParent( developerMenu, menu=True )
            for name, entry in cmdEntries.items():
                inMenu = entry['inMenu']
                print( name )
                if inMenu==True or inMenu=='Developer':
                    print( "in menu name is:")
                    print( entry['name'] )
                    uiLabel = entry.get( 'uiLabel' )
                    if uiLabel==None:
                        uiLabel = name
                    pm.menuItem( label=uiLabel,
                        command='mmmmTools.commander.commands["' + name + '"]()',
                    )
                    
            
            commander = self.mmmm.commander
            cmdEntries = commander.entries
            
            pm.setParent( developerMenu, menu=True )
            modelerMenu = self.submenus['modeler'] = pm.menuItem(
                label='Modeler (dev)...', sm=True, tearOff=True,
                allowOptionBoxes=True
            )
            pm.setParent( modelerMenu, menu=True )
            for name, entry in cmdEntries.items():
                inMenu = entry.inMenu
                if inMenu=='Modeler':
                    uiLabel = entry.get( 'uiLabel' )
                    if uiLabel==None:
                        uiLabel = name
                    pm.menuItem( label=uiLabel,
                        command='mmmmTools.commander.commands["' + name + '"]()',
                    )
                    
            pm.setParent( developerMenu, menu=True )
            selectorMenu = self.submenus['selector'] = pm.menuItem(
                label='Selector (dev)...', sm=True, tearOff=True,
                allowOptionBoxes=True
            )
            pm.setParent( selectorMenu, menu=True )
            for name, entry in cmdEntries.items():
                inMenu = entry.inMenu
                if inMenu=='Selector':
                    uiLabel = entry.get( 'uiLabel' )
                    if uiLabel==None:
                        uiLabel = name
                    pm.menuItem( label=uiLabel,
                        command='mmmmTools.commander.commands["' + name + '"]()',
                    )
                    
                    
                    

            pm.menuItem( divider=True )
                               
                    
                    
                    
                    
                    
                    
                    
                        
            pm.setParent( self.menu, menu=True )    
            pm.menuItem( divider=True )    
            pm.menuItem( divider=True )
            pm.menuItem( divider=True )
            ## This one should go last!  Its the about box
            pm.menuItem( "MmmmToolsHelp", label='MmmmTools Help', annotation='Help not yet available.',command=self.menuHelp )
            pm.menuItem( "MmmmToolsAbout", label='About MmmmTools', command=self.menuAbout )

        except:
コード例 #12
0
    def __init__(self, parentRef, parentWidget=None, mmmm=None ):
        self.parentRef = parentRef
        self.buttons = []
        self.widgets = {}
        
        self.mmmm = mmmm
        

        if parentWidget==None:
            parentWidget = self.widgets['parentWidget'] = pm.Window(
                sizeable = True, title = "Mmmm Hotkeys Manager", titleBar=True
            )
        else:
            self.widgets['parentWidget'] = parentWidget

        with parentWidget:
            self.layout = pm.columnLayout()
            with self.layout:
            
                self.widgets['editorBtn'] =  pm.button( "Maya Hotkey Editor Window...",
                    annotation=
                        "Open the Maya's default builtin hotkey editor window. "
                        +
                        " There is nothing MmmmTools specific about this, it's just a shortcut.",
                    command='pm.mel.eval("HotkeyPreferencesWindow;")',
                )
                
                self.widgets['infoText'] = pm.text("\nInstructions (read tooltip, hover here)\n",
                                    annotation = 
                      "Note that users should avoid editing the hotkey sets \n"
                    + "starting with Mmmm. If you wish to modify them, \n"
                    + "you should duplicate the Mmmm keyset you want to modify, \n"
                    + "rename, so it does not start with Mmmm, and make change to your own copy. \n\n"
                    + "Changing the Mmmm keySets themselves requires writing/altering python code. \n"
                    + "Our recommendation is that for your own hotkeys, you make your own hotkey sets, \n"
                    + "and switch to them as necessary. (See other button tooltips for more info.)"
                )
                
                                
                self.widgets['nextKeySetBtn'] = pm.button( "Next Hotkey Set",
                    command = lambda x: self.parentRef.nextKeySet(),
                    annotation="Go to the next keyset, in alphabetical order. \n\n "
                    + "In case you want to add it to a shelf/button: \n"
                    + "The mel command to do this is: MmmmCmds__Hotkeys__NextKeySet",
                )
                self.widgets['prevKeySetBtn'] = pm.button( "Prev Hotkey Set",
                    command = lambda x: self.parentRef.prevKeySet(),
                    annotation="Go to the previous keyset, in alphabetical order. \n\n "
                    + "In case you want to add it to a shelf/button: \n"
                    + "The mel command to do this is: MmmmCmds__Hotkeys__PrevKeySet",
                )
                
                #self.widgets['refreshListBtn'] = pm.button( "Refresh Hotkey Set Dropdown List" )
                self.widgets['dropdownLabel'] =  pm.text("\n Choose active hotkey set:",
                    annotation="You may need to either click the refresh button, "
                    +"or if that is unavailable, close and reopen this window, to refresh the list."
                )
                
                self.widgets['dropdown'] = pm.optionMenu( "MmmmKeySetDropdownMenu", 
                    changeCommand = self.onDropDownChange,
                )
                keySets = pm.hotkeySet( query=True, hotkeySetArray=True)
                keySets.sort()
                for keySet in keySets :
                    pm.menuItem( keySet )
コード例 #13
0
ファイル: Menu.py プロジェクト: arun-gouthaman/MAYA_SCRIPTS
menuName = "Custom_Menu"
mainMenu = pm.PyUI( pm.getMelGlobal('string', 'gMainWindow') )

try:
    if pm.menu(Custom_Tools, query=True, exists=True):
        pm.deleteUI(Custom_Tools)
except:
    print "Creating New Menu"

with mainMenu:
    if pm.menu(menuName, query=True, exists = True):
        pm.menu(menuName, edit=True, deleteAllItems=True)
    #Custom_Tools = pm.menu( label=menuName, tearOff=True )
    Custom_Tools = pm.menu(label=menuName)
    with Custom_Tools:
        obj_cr_btn = pm.menuItem( label="Object creator",command=lambda x: obj_creat())
        cus_tls_btn = pm.menuItem( label="Custom Tools",command=lambda x: cus_tls())
        const_btn = pm.menuItem( label="Constraint",command=lambda x: con_tls())
        tnk_trd_bth = pm.menuItem( label="Tank Tread Rig (arun)", command=lambda x: tank_trd())
        cpy_sdk_btn = pm.menuItem( label="Copy Sdk (arun)", command=lambda x: copy_sdk())
        #tools_btn = pm.menuItem(subMenu=True, label = "Tools", tearOff=True)
        #tool_sub1_btn = pm.menuItem(label = "Test")
        joint_place_btn = pm.menuItem(subMenu=True, label = "Joint Placement", tearOff=True)
        joint_place_sub1_btn = pm.menuItem(label = "Center", command = lambda x: jnt_at_mid())
        joint_place_sub2_btn = pm.menuItem(label = "Center aimed at vertex", command = lambda x: jnt_mid_aimed())
        joint_place_sub3_btn = pm.menuItem(label = "Chain along edge loops", command = lambda x: jnt_along_loop())
        
        
        pm.setParent('..', menu=True)
        skn_clstr_btn = pm.menuItem(subMenu=True, label = "Skin Cluster Tools")
        tool_sub_def_skn = pm.menuItem(label = "All deformers to skin cluster (suresh)", command = lambda x: def_to_sk_cl())
コード例 #14
0
 self.buildMenu(  )
 ## self.textFieldScript = pm.textField( width=500 )
 self.btnRunScript = pm.button(
     "Run Script",
     command = lambda x:
         self.scriptFileRunner.runScript(
             self.chosenScript
         )
コード例 #15
0
menuName = "Custom_Menu"
mainMenu = pm.PyUI(pm.getMelGlobal('string', 'gMainWindow'))

try:
    if pm.menu(Custom_Tools, query=True, exists=True):
        pm.deleteUI(Custom_Tools)
except:
    print("Creating New Menu")

with mainMenu:
    if pm.menu(menuName, query=True, exists=True):
        pm.menu(menuName, edit=True, deleteAllItems=True)
    Custom_Tools = pm.menu(label=menuName, tearOff=True)

    with Custom_Tools:
        obj_cr_btn = pm.menuItem(label="Object creator",
                                 command=lambda x: obj_creat())
        cus_tls_btn = pm.menuItem(label="Custom Tools",
                                  command=lambda x: cus_tls())
        tnk_trd_bth = pm.menuItem(label="MotionPath Loop (arun)",
                                  command=lambda x: tank_trd())
        joint_place_btn = pm.menuItem(subMenu=True,
                                      label="Joint Placement",
                                      tearOff=True)
        joint_place_sub1_btn = pm.menuItem(label="Center(object)",
                                           command=lambda x: jnt_at_obj_mid())
        joint_place_sub2_btn = pm.menuItem(label="Center(Components)",
                                           command=lambda x: jnt_at_comp_mid())
        joint_place_sub3_btn = pm.menuItem(label="Insert Joints",
                                           command=lambda x: insert_joints())
        joint_place_sub4_btn = pm.menuItem(label="Center aimed at vertex",
                                           command=lambda x: jnt_mid_aimed())