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
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()
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)
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 )
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()
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)
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))
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))
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
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.")
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:
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 )
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())
self.buildMenu( ) ## self.textFieldScript = pm.textField( width=500 ) self.btnRunScript = pm.button( "Run Script", command = lambda x: self.scriptFileRunner.runScript( self.chosenScript )
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())