diff --git a/conductor/lib/maya_utils.py b/conductor/lib/maya_utils.py index ef59ee6a..a8558c31 100644 --- a/conductor/lib/maya_utils.py +++ b/conductor/lib/maya_utils.py @@ -13,6 +13,9 @@ # Conductor libs from conductor.lib import common, package_utils, file_utils +MAYA_PARENT_WINDOW = 'MayaWindow' +CONDUCTOR_MENU = 'ConductorMenu' + logger = logging.getLogger(__name__) @@ -1373,6 +1376,92 @@ def get_node_by_type(node_type, must_exist=True, many=False): # Otherwise return an empty string return "" + +def unload_conductor_menu(): + ''' + Remove/destroy the Conductor menu (if it exists) + ''' + if cmds.about(batch=True): + logger.debug("Batch mode detected. Aborting Conductor menu destruction..") + return + + # Delete any existing instance of the menu + if cmds.menu(CONDUCTOR_MENU, q=True, exists=True): + cmds.menu(CONDUCTOR_MENU, e=True, deleteAllItems=True) + cmds.deleteUI(CONDUCTOR_MENU, ) + logger.debug("Conductor menu destroyed") + + +def load_conductor_menu(): + ''' + This is a simple proof on concept of what a Conductor menu could look like. + + Build/inject Conductor's menu into maya's main window bar. Replace any existing instances of + the menu. + + +---------------------+ + | Submit | + | Clean Scene | + | ------------------- | + | Preferences > | + | Log Level > | + | ------------------- | + | About | + | Help | + +---------------------+ + https://ozh.github.io/ascii-tables/ header location=None Output style=ASCII (mysql style) Custome Separator=~ + ''' + + if cmds.about(batch=True): + logger.debug("Batch mode detected. Aborting Conductor menu creation..") + return + + unload_conductor_menu() + + cmds.menu(CONDUCTOR_MENU, label='Conductor', tearOff=True, parent=MAYA_PARENT_WINDOW) + cmds.menuItem( + label='Submit', + image="conductor_logo_white.png", + command="from conductor import submitter_maya;submitter_maya.MayaConductorSubmitter.runUi()", + parent=CONDUCTOR_MENU, + ) + + cmds.menuItem( + label='Clean Scene', + parent=CONDUCTOR_MENU, + ) + + # ------ Divider ---------------------------------------------------------- + cmds.menuItem(divider=True, parent=CONDUCTOR_MENU) + # ------------------------------------------------------------------------- + + cmds.menuItem( + label='Preferences', + subMenu=True, + parent=CONDUCTOR_MENU, + ) + cmds.menuItem( + label='Log Level', + subMenu=True, + parent=CONDUCTOR_MENU, + ) + + # ------ Divider ---------------------------------------------------------- + cmds.menuItem(divider=True, parent=CONDUCTOR_MENU) + # ------------------------------------------------------------------------- + + cmds.menuItem( + label='About', + parent=CONDUCTOR_MENU, + ) + + cmds.menuItem( + label='Help', + parent=CONDUCTOR_MENU, + ) + + logger.debug("Conductor menu created") + # def get_plugins_info(): # plugins_info = [] # for PluginClass in PLUGIN_CLASSES: diff --git a/maya_plugin/conductorMaya.mod b/maya_plugin/conductorMaya.mod new file mode 100644 index 00000000..bc238ebc --- /dev/null +++ b/maya_plugin/conductorMaya.mod @@ -0,0 +1 @@ ++ conductorMaya any . diff --git a/maya_plugin/icons b/maya_plugin/icons new file mode 120000 index 00000000..db008688 --- /dev/null +++ b/maya_plugin/icons @@ -0,0 +1 @@ +../conductor/resources \ No newline at end of file diff --git a/maya_plugin/plug-ins/conductorMaya.py b/maya_plugin/plug-ins/conductorMaya.py new file mode 100644 index 00000000..53f1bf62 --- /dev/null +++ b/maya_plugin/plug-ins/conductorMaya.py @@ -0,0 +1,10 @@ + +from conductor.lib import maya_utils + + +def initializePlugin(plugin): + maya_utils.load_conductor_menu() + + +def uninitializePlugin(plugin): + maya_utils.unload_conductor_menu() diff --git a/maya_plugin/scripts/conductor b/maya_plugin/scripts/conductor new file mode 120000 index 00000000..712bbfcd --- /dev/null +++ b/maya_plugin/scripts/conductor @@ -0,0 +1 @@ +../../conductor \ No newline at end of file diff --git a/maya_shelf/shelf_Conductor.mel b/maya_shelf/shelf_Conductor.mel deleted file mode 100644 index 6de16076..00000000 --- a/maya_shelf/shelf_Conductor.mel +++ /dev/null @@ -1,33 +0,0 @@ -global proc shelf_Conductor () { - global string $gBuffStr; - global string $gBuffStr0; - global string $gBuffStr1; - - // Creates the actual shelf button - shelfButton - -enableCommandRepeat 1 - -enable 1 - -width 35 - -height 35 - -manage 1 - -visible 1 - -preventOverride 0 - -annotation "Load Conductor Submitter UI" - -enableBackground 0 - -align "center" - -label "Load UI" - -labelOffset 0 - -font "plainLabelFont" - -overlayLabelColor 0.8 0.8 0.8 - -overlayLabelBackColor 0 0 0 0.2 - -image "conductor_logo_white.png" - -image1 "conductor_logo_white.png" - -style "iconOnly" - -marginWidth 1 - -marginHeight 1 - -command "from conductor import submitter_maya\nsubmitter_maya.MayaConductorSubmitter.runUi()" - -sourceType "python" - -commandRepeatable 1 - -flat 1 - ; -}