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
Example #2
0
 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