Source code for openalea.vpltk.control.abstractcontrolmanager
[docs]def get_managers():
    managers = dict()
    
    from openalea.vpltk.control.pythonmanager import IntManager
##    from openalea.lpy.gui.plugins.curve2dmanager import Curve2DManager 
##    from openalea.lpy.gui.plugins.functionmanager import FunctionManager
##    from openalea.lpy.gui.plugins.nurbspatchmanager import NurbsPatchManager
    
    managers[IntManager.typename] = IntManager
##    managers[Curve2DManager().typename] = Curve2DManager
##    managers[FunctionManager().typename] = FunctionManager
##    managers[NurbsPatchManager().typename] = NurbsPatchManager
    return managers
 
[docs]def get_manager(type):
    managers = get_managers()
    try:
        return managers[type]
    except KeyError:
        return None
    
##class AbstractControl(object):
##    def __init__(self):
##        self.type = None
##        self.name = None
##        self.object = None
##        
##    def createDefault(self):    
##        self.type = "int"
##        self.name = "my_int"
##        self.object = 42
##        
##    def thumbnail(self):
##        pass
##        
##    def editor(self):
##        pass
##        
##    def dblClick(self):
##        pass
##        
##    def reprProtocol(self):
##        pass
        
     
[docs]class AbstractControlManager(object):
    """
    'typename' is the type of control that is manage by this control manager.
    It can be a python type (ex: 'int') or something else (ex: 'Curve2D').
    """
    typename = None
    
    def __init__(self, name=None, object=None):
        """
        :param name: of the control
        :param object: value of the control
        """
        self.name = name
        self.object = object
        
[docs]    def thumbnail(self):
        """
        Permit to display a thumbnail of the control.
        
        :return: widget to display
        """
        raise NotImplementedError('thumbnail')
         
[docs]    def editor(self):
        """
        Permit to edit the control.
        
        Launch edition (inside the thumbnail or in a new widget)
        """
        raise NotImplementedError('editor')
         
[docs]    def dblClick(self):
        """
        Connect double click with edition.
        """
        pass
         
[docs]    def repr(self):
        """
        :return: string representation of the control to write it on the disk
        """
        return str(self.object)
        
    
    
    
    
    
    
    
    
    
    
    
##    """ Manage a type of data. Make it possible to name it, display it as thumbnail and edit it"""
##    def __init__(self, typename = None):
##        """We need the name of the object managed by the editor to link the manager with the right Editor"""
##        QtCore.QObject.__init__(self)
##        self.typename =  typename
##        
##    def setName(self,obj,name):
##        obj.name=name
##
##    def getName(self,obj):
##        return obj.name
##
##    def displayThumbnail(self,obj,id,mode,objectthumbwidth):
##        """ display of an object in the Lpy main window Panel, 
##            :param obj: the object to display
##            :param id: id of the object in the list
##            :param mode: define if object has mode, 
##            :param thumbwidth: width of the thumbnail representing the object in the panel
##            :param objectthumbwidth: width for the representation of the object in the panel
##            Should be reimplemented
##        """
##        raise NotImplementedError('displayThumbnail')
##            
##    def reset(self,obj):
##        return self.createDefaultObject()
##        
##    def getEditor(self,parent_widget):
##        """ ask for creation of editor. Should be reimplemented """
##        raise NotImplementedError('getEditor')
##
##    def fillEditorMenu(self,menubar,editor):
##        """ Function call to fill the menu of the editor """
##        pass
##        
##    def setObjectToEditor(self,editor,obj):
##        """ ask for edition of obj with editor. Should be reimplemented """
##        raise NotImplementedError('setObjectToEditor')
##
##    def retrieveObjectFromEditor(self,editor):
##        """ ask for current value of object being edited """
##        raise NotImplementedError('startObjectEdition')
##    
##    def defaultObjectTypes(self):
##        """ ask for type of object managed by this manager. Several are possible. None means that typename should be used. """
##        return None
##        
##    def createDefaultObject(self, objtype = None):
##        """ 
##        create a default object of the type handled by the manager.
##        requires instanciate a new item in the panel.
##        Should be reimplemented
##        """
##        raise NotImplementedError('createDefaultObject')
##        
##    def initWriting(self,indentation):
##        return ''
##        
##    def writeObject(self,obj,indentation):
##        """
##        :return: representation of object to write
##        """
##        raise NotImplementedError('writeObject')
##    
##    def writeObjectToLsysContext(self,obj):
##        return obj.name
##    
##    def canImportData(self,fname):
##        return False
##    
##    def importData(self,fname):
##        raise NotImplementedError('importData')
##    
##    def completeContextMenu(self,menu,obj,widget):
##        pass
##    
##    def managePrimitive(self):
##        return False
##    
##    def getTheme(self):
##        """ get the color theme currenlty used """
##        return {}
##    
##    def setTheme(self,theme):
##        """ get the color theme acccording to the theme dict """
##        pass
##    
##    
##    
##