def __init__( self, name, title, namespace=__name__ ): # print "self instanceName: %s " % self.__class__.__name__ self.__name__ = name self._title = title self.instance = str(namespace) + '.' + self.__name__ if not mel.scriptedPanelType( self.__name__, query=True, exists=True ): mel.scriptedPanelType( self.__name__, unique=True ) print self.instance # convert into Python one day: jobCmd = '%s._setup()' % self.instance job = mel.scriptJob(replacePrevious=True, parent=self.__name__, event=["SceneOpened",jobCmd]) # mel.mel.eval(job) result = mel.scriptedPanelType( self.__name__, edit=True, unique=True, createCallback='python("import %s ; %s._createCallback()")' % (namespace, self.instance), initCallback='python("import %s ; %s._initCallback()" )' % (namespace, self.instance), addCallback='python("import %s ; %s._addCallback()" )' % (namespace, self.instance), removeCallback='python("import %s ; %s._removeCallback()")' % (namespace, self.instance), deleteCallback='python("import %s ; %s._deleteCallback()")' % (namespace, self.instance), saveStateCallback='python("import %s ; %s._saveCallback()")' % (namespace, self.instance) ) print "RESULT: %s " % result
def newType(typeName, unique=False, **kwargs): """ Create and a new scripted panel type. The given kwargs will be used to initialize new panels of this type, so this is where viewClasses, defaultView, etc should be given. """ # create new panel type if it doesnt exist if not pm.scriptedPanelType(typeName, query=True, exists=True): newType = pm.scriptedPanelType(typeName) LOG.debug('Created new scripted panel type: {0}'.format(newType)) # edit panel type kw = {} for cb in ('create', 'init', 'add', 'remove', 'delete', 'saveState', 'copyState'): cbname = '{0}Callback'.format(cb) fmt = PANEL_MELCOPYSTATECALLBACK if cb == 'copyState' else PANEL_MELCALLBACK kw[cbname] = fmt.format(typeName, cbname) newType = pm.scriptedPanelType(typeName, edit=True, unique=unique, **kw) # register init kwargs for this type ScriptedPanelTypes.INIT_KWARGS[newType] = kwargs return newType