def save_vistrail(self, locator_class, vistrailView=None, force_choose_locator=False): """ force_choose_locator=True triggers 'save as' behavior """ global bobo if not vistrailView: vistrailView = self.currentWidget() vistrailView.flush_changes() if vistrailView: gui_get = locator_class.save_from_gui # get a locator to write to if force_choose_locator: locator = gui_get(self, Vistrail.vtType, vistrailView.controller.locator) else: locator = (vistrailView.controller.locator or gui_get(self, Vistrail.vtType, vistrailView.controller.locator)) if locator == untitled_locator(): locator = gui_get(self, Vistrail.vtType, vistrailView.controller.locator) # if couldn't get one, ignore the request if not locator: return False # update collection vistrailView.controller.flush_delayed_actions() try: vistrailView.controller.write_vistrail(locator) except Exception, e: debug.critical('An error has occurred', str(e)) raise return False try: thumb_cache = ThumbnailCache.getInstance() vistrailView.controller.vistrail.thumbnails = \ vistrailView.controller.find_thumbnails( tags_only=thumb_cache.conf.tagsOnly) vistrailView.controller.vistrail.abstractions = \ vistrailView.controller.find_abstractions( vistrailView.controller.vistrail, True) collection = Collection.getInstance() url = locator.to_url() # create index if not exist entity = collection.fromUrl(url) if entity: # find parent vistrail while entity.parent: entity = entity.parent else: entity = collection.updateVistrail(url, vistrailView.controller.vistrail) # add to relevant workspace categories collection.add_to_workspace(entity) collection.commit() except Exception, e: debug.critical('Failed to index vistrail', str(e))
def newVistrail(self, recover_files=True): """ newVistrail() -> (None or QVistrailView) Create a new vistrail with no name. If user cancels process, returns None. FIXME: We should do the interactive parts separately. """ if self.single_document_mode and self.currentView(): if not self.closeVistrail(): return None if recover_files and untitled_locator().has_temporaries(): locator = copy.copy(untitled_locator()) else: locator = None try: (vistrail, abstraction_files, thumbnail_files, _) = load_vistrail(locator) except ModuleRegistryException, e: debug.critical("Module registry error for %s" % str(e.__class__.__name__), str(e))
def save_registry(self, locator_class, force_choose_locator=True): vistrailView = self.currentWidget() if vistrailView: vistrailView.flush_changes() gui_get = locator_class.save_from_gui if force_choose_locator: locator = gui_get(self, ModuleRegistry.vtType, vistrailView.controller.locator) else: locator = (vistrailView.controller.locator or gui_get(self, ModuleRegistry.vtType, vistrailView.controller.locator)) if locator == untitled_locator(): locator = gui_get(self, ModuleRegistry.vtType, vistrailView.controller.locator) if not locator: return False vistrailView.controller.write_registry(locator) return True return False
def export_stable(self, locator_class=XMLFileLocator, force_choose_locator=True): vistrailView = self.currentWidget() vistrailView.flush_changes() if vistrailView: vistrailView.flush_changes() gui_get = locator_class.save_from_gui if force_choose_locator: locator = gui_get(self, Vistrail.vtType, vistrailView.controller.locator) else: locator = (vistrailView.controller.locator or gui_get(self, Vistrail.vtType, vistrailView.controller.locator)) if locator == untitled_locator(): locator = gui_get(self, Vistrail.vtType, vistrailView.controller.locator) if not locator: return False vistrailView.controller.write_vistrail(locator, '1.0.1') return True return False