Markingmenu Extension¶
See Marking Creation for usages.
Markingmenuoverride¶
- reset()¶
- setup()¶
Installs modifications to the dagProcMenu script for the current session
Menu¶
Usage:
First define to location of your commands and marking menu classes.
Next define the location of your layout files
Now apply these locations to the MM environment variables, ZOO_MM_COMMAND_PATH,
ZOO_MM_MENU_PATH, ZOO_MM_LAYOUT_PATH, before zootools starts up.
- exception InvalidJsonFileFormat¶
Bases:
Exception
Raised in case of invalid formatted json file(.mmlayout)
- exception MissingMarkingMenu¶
Bases:
Exception
- findLayout(layoutId)¶
Finds the layout by Id(str) from the layout registry
- class Registry(*args, **kwargs)¶
Bases:
object
This holds all currently available layout classes discovered in the environment use
findLayout()
to get the layout from this registry.To setup the environment you need to set the environment variable :env:’ZOO_MM_LAYOUT_PATH’ to the directories of the layout, each path should be separated using
os.pathsep
- LAYOUT_ENV = 'ZOO_MM_LAYOUT_PATH'¶
- MENU_ENV = 'ZOO_MM_MENU_PATH'¶
- COMMAND_ENV = 'ZOO_MM_COMMAND_PATH'¶
- STATIC_LAYOUT_TYPE = 0¶
- DYNAMIC_TYPE = 1¶
- hasMenu(menuId)¶
- menuType(menuId)¶
- env()¶
- class Layout(**kwargs)¶
Bases:
dict
layoutData={"items":{"N": {}, "NW": {}, "W": {}, "SW": {}, "S": {}, "SE": {}, "E": {}, "NE": {}, "generic": [{"type": "menu", "name": "Testmenu", "children": [{"type": "command", "id": ""} ] ] }, "id": "some.layout.id"} layoutObj = Layout(**layoutData)
- items()¶
Returns the item dict for this layout in the form of
{"N": {}, "NW": {}, "W": {}, "SW": {}, "S": {}, "SE": {}, "E": {}, "NE": {}, "generic": [{"type": "menu", "name": "Testmenu", "children": [{"type": "command", "id": ""} ]] }
- Returns:
The layout items dict.
- Return type:
- merge(layout)¶
Merges the layout items into this instance, only differences will be merged.
- Parameters:
layout (
Layout
) – the layout to merge into the this class
- validate(layout=None)¶
Recursively validates the layout, returning all failed items, if an item references another layout that layout will used be validated.
- Parameters:
layout (Layout) – The layout instance to solve
- Returns:
the failed items
- Return type:
list
- solve()¶
Recursively solves the layout by expanding any @layout.id references which will compose a single dict ready for use.
A layout can contain deeply nested layouts which is referenced by the syntax @layout.id, in the case where there is a reference then that layout will be solved first.
- Returns:
Whether or not the layout was solved
- Return type:
- class MarkingMenu(layout, name, parent, registry)¶
Bases:
object
Maya MarkingMenu wrapper object to support zoocommands and python executable code. MM layouts are defined by the Layout instance class
- static removeExistingMenu(menuName)¶
Removes the menuName from the registry and deletes the menu from maya
- Parameters:
menuName (str) – The menu name to remove.
- static removeAllActiveMenus()¶
Removes all current active zoo marking menus from the registry and deletes the Maya UI MM
- classmethod buildFromLayout(layoutId, menuName, parent, options, globalArguments=None)¶
Build a menu directly from the menu registry based off of the layout Id.
- Parameters:
layoutId (str) – The layout id defined in the registry
menuName (str) – The unique name for the menu
parent (str) – The maya widget path for the menu parent i.e viewPanes
options (dict) – The marking menu options, see
MarkingMenu.__init__
for more detailsglobalArguments (dict) – The global Arguments to pass to all menu action commands.
- Returns:
The new markingMenu instance
- Return type:
- Raise:
ValueError, in the case the layout can’t be found or already active.
- classmethod buildFromLayoutData(layoutData, menuName, parent, options, arguments=None)¶
Create a new
MarkingMenu
instance from the layoutData, menuName, and options provided.If the menu already exists and is active, raise a ValueError. If the parent menu exists, attach the new menu to it. Otherwise, create the new menu.
- Parameters:
- Returns:
the new menu instance.
- Return type:
- static buildDynamicMenu(clsId, menuName, parent, arguments, options=None, layout=None)¶
Builds a marking menu from the clsId which should exist with our marking menu registry.
- Parameters:
clsId (str) – the classId string
parent (str) – The parent menu or widget fullPath ie. viewPanes for mayas viewport.
arguments (dict) – The arguments to pass to the custom menu class
options (dict) – additional options to be passed to the menu.
layout (
Layout
or None) – the base Layout data that defines the layout this will be modified by the dynamic class.
- Returns:
If the classid exists then the newly created marking menu class will be returned
- Return type:
MarkingMenu
or None
- asQObject()¶
Returns this markingMenu as a PYQT object
- Returns:
Return this
MarkingMenu
as aqt.QMenu
instance- Return type:
QMenu
- attach(**arguments)¶
Generates the marking menu using the parent marking menu.
The arguments passed will be passed to ech and every menuItem command, for example if the menu item command is a zoocommand then the zoocommand will have the arguments passed to it.
- create(**arguments)¶
Creates a new popup markingMenu parented to self.parent instance, use :func: MarkingMenu:attach if you need to add to existing markingmenu.
- Returns:
current instance
- Return type:
- kill()¶
Destroys the pop menu from maya.
- addCommand(item, parent, radialPosition=None)¶
Adds the specified command item to the parent menu.
- addSeparator(menu, item=None)¶
Adds separator to menu
- Parameters:
menu –
- show(layout, menu, parent)¶
Main Method that converts the layout to a maya marking menu.
If implementing a subclass then super must be called.
- allowOptionBoxes()¶
Returns a boolean indicating if option boxes are enabled on the popupMenu.
- Return type:
- altModifier()¶
Returns a boolean indicating if the alt modifier is enabled on the popupMenu.
- Return type:
- ctrlModifier()¶
returns a boolean indicating if the ctrl modifier is enabled on the popupMenu.
- Return type:
- deleteAllItems()¶
deletes all items in the popupMenu and returns True if successful.
- Return type:
- postMenuCommand(command)¶
Posts the given command to be executed after the popupMenu is created.
- postMenuCommandOnce(state)¶
Sets the state of postMenuCommandOnce on the popupMenu.
- shiftModifier()¶
Returns a boolean indicating if the shift modifier is enabled on the popupMenu.
- setShiftModifier(value)¶
Sets the state of the shift modifier on the popupMenu.
- setParent(parent)¶
Sets the parent of the popupMenu to the given parent.
- setCtrlModifier(value)¶
Sets the state of the ctrl modifier on the popupMenu.
- setAltModifier(state)¶
Sets the state of the alt modifier on the popupMenu.
- setUseLeftMouseButton()¶
Sets the popupMenu to use the left mouse button.
- setUseRightMouseButton()¶
Sets the popupMenu to use the right mouse button.
- setUseMiddleMouseButton()¶
Sets the popupMenu to use the middle mouse button.
- class MarkingMenuDynamic(manager=None)¶
Bases:
Plugin
Marking Menu Dynamic allows for subclasses to dynamic generate the marking menu layout.
- documentation = 'Marking Menu Dynamic allows for subclasses to dynamic generate the marking menu layout.\n '¶
- id = ''¶
- execute(layout, arguments)¶
- class MarkingMenuCommand(manager=None)¶
Bases:
Plugin
Marking menu plugin which is used to define a single Marking menu action.
Client code should subclass from this command class.
Override the
MarkingMenuCommand.execute()
method to customize standard left click execution.Override the
MarkingMenuCommand.executeUI()
method to customize the option box on the action if the uiData[“optionBox”] is True- documentation = 'Marking menu plugin which is used to define a single Marking menu action.\n\n Client code should subclass from this command class.\n\n Override the :meth:`MarkingMenuCommand.execute` method to customize standard\n left click execution.\n\n Override the :meth:`MarkingMenuCommand.executeUI` method to customize the option\n box on the action if the uiData["optionBox"] is True\n\n '¶
- id = ''¶
- creator = 'Zootools'¶
- static uiData(arguments)¶
UiData defines the visuals of the command action.
- execute(arguments)¶
The execute method is called when triggering the action item. use executeUI() for a optionBox.
- executeUI(arguments)¶
The executeUI method is called when the user triggering the box icon on the right handle side of the action item.
For this method to be called you must specify in the UIData method “optionBox”: True.