|
|
@@ -0,0 +1,77 @@ |
|
|
import maya.cmds as mc |
|
|
|
|
|
|
|
|
def _null(*args): |
|
|
pass |
|
|
|
|
|
|
|
|
class _shelf(): |
|
|
'''A simple class to build shelves in maya. Since the build method is empty, |
|
|
it should be extended by the derived class to build the necessary shelf elements. |
|
|
By default it creates an empty shelf called "customShelf".''' |
|
|
|
|
|
def __init__(self, name="customShelf", iconPath=""): |
|
|
self.name = name |
|
|
|
|
|
self.iconPath = iconPath |
|
|
|
|
|
self.labelBackground = (0, 0, 0, 0) |
|
|
self.labelColour = (.9, .9, .9) |
|
|
|
|
|
self._cleanOldShelf() |
|
|
mc.setParent(self.name) |
|
|
self.build() |
|
|
|
|
|
def build(self): |
|
|
'''This method should be overwritten in derived classes to actually build the shelf |
|
|
elements. Otherwise, nothing is added to the shelf.''' |
|
|
pass |
|
|
|
|
|
def addButon(self, label, icon="commandButton.png", command=_null, doubleCommand=_null): |
|
|
'''Adds a shelf button with the specified label, command, double click command and image.''' |
|
|
mc.setParent(self.name) |
|
|
if icon: |
|
|
icon = self.iconPath + icon |
|
|
mc.shelfButton(width=37, height=37, image=icon, l=label, command=command, dcc=doubleCommand, imageOverlayLabel=label, olb=self.labelBackground, olc=self.labelColour) |
|
|
|
|
|
def addMenuItem(self, parent, label, command=_null, icon=""): |
|
|
'''Adds a shelf button with the specified label, command, double click command and image.''' |
|
|
if icon: |
|
|
icon = self.iconPath + icon |
|
|
return mc.menuItem(p=parent, l=label, c=command, i="") |
|
|
|
|
|
def addSubMenu(self, parent, label, icon=None): |
|
|
'''Adds a sub menu item with the specified label and icon to the specified parent popup menu.''' |
|
|
if icon: |
|
|
icon = self.iconPath + icon |
|
|
return mc.menuItem(p=parent, l=label, i=icon, subMenu=1) |
|
|
|
|
|
def _cleanOldShelf(self): |
|
|
'''Checks if the shelf exists and empties it if it does or creates it if it does not.''' |
|
|
if mc.shelfLayout(self.name, ex=1): |
|
|
if mc.shelfLayout(self.name, q=1, ca=1): |
|
|
for each in mc.shelfLayout(self.name, q=1, ca=1): |
|
|
mc.deleteUI(each) |
|
|
else: |
|
|
mc.shelfLayout(self.name, p="ShelfLayout") |
|
|
|
|
|
|
|
|
################################################################################### |
|
|
# class customShelf(_shelf): |
|
|
# def build(self): |
|
|
# self.addButon(label="button1") |
|
|
# self.addButon("button2") |
|
|
# self.addButon("popup") |
|
|
# p = mc.popupMenu(b=1) |
|
|
# self.addMenuItem(p, "popupMenuItem1") |
|
|
# self.addMenuItem(p, "popupMenuItem2") |
|
|
# sub = self.addSubMenu(p, "subMenuLevel1") |
|
|
# self.addMenuItem(sub, "subMenuLevel1Item1") |
|
|
# sub2 = self.addSubMenu(sub, "subMenuLevel2") |
|
|
# self.addMenuItem(sub2, "subMenuLevel2Item1") |
|
|
# self.addMenuItem(sub2, "subMenuLevel2Item2") |
|
|
# self.addMenuItem(sub, "subMenuLevel1Item2") |
|
|
# self.addMenuItem(p, "popupMenuItem3") |
|
|
# self.addButon("button3") |
|
|
# customShelf() |
|
|
################################################################################### |