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
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()
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
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