Пример #1
0
    def load_from(cls, filepath):
        from openalea.secondnature.data import DataFactoryManager
        dataMgr = DataFactoryManager()
        dataFactories = dataMgr.gather_items()
        docs = dict()
        name = ""
        with zipfile.ZipFile(filepath, "r") as z:
            manifest = z.read("manifest.txt")
            print manifest
            lines = manifest.split("\n")
            name = lines[0].split("=")[1]
            filesAndFactories = [f.split(":") for f in lines[1:]]
            ctr = 0
            for f, facName, type_ in filesAndFactories:
                df = dataFactories.get(facName)
                if not df:
                    continue

                bytes = z.read(f)
                stream = io.BytesIO(initial_bytes=bytes)
                try:
                    upk = df.data_from_stream(f, stream, type_)
                except Exception, e:
                    print "couldn't read", f, " : ", e
                    traceback.print_exc()
                else:
                    docs[ctr] = upk
                ctr+=1
Пример #2
0
    def load_from(cls, filepath):
        from openalea.secondnature.data import DataFactoryManager
        dataMgr = DataFactoryManager()
        dataFactories = dataMgr.gather_items()
        docs = dict()
        name = ""
        with zipfile.ZipFile(filepath, "r") as z:
            manifest = z.read("manifest.txt")
            print manifest
            lines = manifest.split("\n")
            name = lines[0].split("=")[1]
            filesAndFactories = [f.split(":") for f in lines[1:]]
            ctr = 0
            for f, facName, type_ in filesAndFactories:
                df = dataFactories.get(facName)
                if not df:
                    continue

                bytes = z.read(f)
                stream = io.BytesIO(initial_bytes=bytes)
                try:
                    upk = df.data_from_stream(f, stream, type_)
                except Exception, e:
                    print "couldn't read", f, " : ", e
                    traceback.print_exc()
                else:
                    docs[ctr] = upk
                ctr += 1
Пример #3
0
    def init(cls):
        from openalea.secondnature.layouts    import LayoutManager
        from openalea.secondnature.applets    import AppletFactoryManager
        from openalea.secondnature.data       import DataFactoryManager

        lm = LayoutManager()
        am = AppletFactoryManager()
        dm = DataFactoryManager()

        lm.init_sources()
        am.init_sources()
        dm.init_sources()

        lm.gather_items(refresh=True)
        am.gather_items(refresh=True)
        dm.gather_items(refresh=True)
Пример #4
0
    def __on_splitter_drag_enter(self, splittable, event):
        mimeData = event.mimeData()
        if not self.__validate_mimedata(mimeData):
            return

        formats = map(str, mimeData.formats())
        handlers = DataFactoryManager().get_handlers_for_mimedata(formats)
        if len(handlers) > 0:
            event.acceptProposedAction()
        elif mimeData.hasFormat(ProjectManager.mimeformat):
            event.acceptProposedAction()
Пример #5
0
    def get_datafactory_menu(self):
        datafactories = [f for f in DataFactoryManager().gather_items().itervalues() \
                        if not f.singleton]
                        # lambda x,y:cmp(x.name, y.name))

        menu = QtGui.QMenu(self)
        for dt in datafactories:
            action = menu.addAction(dt.icon, "New "+dt.name)
            action.setIconVisibleInMenu(True)
            func = self.__make_datafactory_chosen_handler(dt)
            action.triggered.connect(func)
        return menu
Пример #6
0
    def init(cls):
        from openalea.secondnature.layouts import LayoutManager
        from openalea.secondnature.applets import AppletFactoryManager
        from openalea.secondnature.data import DataFactoryManager

        lm = LayoutManager()
        am = AppletFactoryManager()
        dm = DataFactoryManager()

        lm.init_sources()
        am.init_sources()
        dm.init_sources()

        lm.gather_items(refresh=True)
        am.gather_items(refresh=True)
        dm.gather_items(refresh=True)
    def mime_type_handler(formats, applet=True):
        from openalea.secondnature.applets import AppletFactoryManager
        from openalea.secondnature.data    import DataFactoryManager

        formats = map(str, formats)
        if applet:
            handlers = AppletFactoryManager().get_handlers_for_mimedata(formats)
        else:
            handlers = DataFactoryManager().get_handlers_for_mimedata(formats)

        nbHandlers = len(handlers)
        if nbHandlers == 0:
            return
        elif nbHandlers == 1:
            fac = handlers[0]
        elif nbHandlers > 1:
            selector = DataEditorSelector( [h.name for h in handlers] )
            if selector.exec_() == QtGui.QDialog.Rejected:
                return
            else:
                facName = selector.get_selected()
                fac = filter(lambda x: x.name == facName, handlers)[0]
        return fac