def addDvidVolume(self, roleIndex, laneIndex): recent_hosts_pref = PreferencesManager.Setting("DataSelection", "Recent DVID Hosts") recent_hosts = recent_hosts_pref.get() if not recent_hosts: recent_hosts = ["localhost:8000"] recent_hosts = [ h for h in recent_hosts if h ] # There used to be a bug where empty strings could be saved. Filter those out. recent_nodes_pref = PreferencesManager.Setting("DataSelection", "Recent DVID Nodes") recent_nodes = recent_nodes_pref.get() or {} from .dvidDataSelectionBrowser import DvidDataSelectionBrowser browser = DvidDataSelectionBrowser(recent_hosts, recent_nodes, parent=self) if browser.exec_() == DvidDataSelectionBrowser.Rejected: return if None in browser.get_selection(): QMessageBox.critical("Couldn't use your selection.") return rois = None hostname, repo_uuid, volume_name, node_uuid, typename = browser.get_selection( ) dvid_url = 'http://{hostname}/api/node/{node_uuid}/{volume_name}'.format( **locals()) subvolume_roi = browser.get_subvolume_roi() # Relocate host to top of 'recent' list, and limit list to 10 items. try: i = recent_hosts.index(hostname) del recent_hosts[i] except ValueError: pass finally: recent_hosts.insert(0, hostname) recent_hosts = recent_hosts[:10] # Save pref recent_hosts_pref.set(recent_hosts) recent_nodes[hostname] = node_uuid recent_nodes_pref.set(recent_nodes) if subvolume_roi is None: self.addFileNames([dvid_url], roleIndex, laneIndex) else: start, stop = subvolume_roi self.addFileNames([dvid_url], roleIndex, laneIndex, [(start, stop)])
def addDvidVolume(self, roleIndex, laneIndex): # TODO: Provide list of recently used dvid hosts, loaded from user preferences recent_hosts_pref = PreferencesManager.Setting("DataSelection", "Recent DVID Hosts") recent_hosts = recent_hosts_pref.get() if not recent_hosts: recent_hosts = ["localhost:8000"] recent_hosts = filter(lambda h: h, recent_hosts) from dvidDataSelectionBrowser import DvidDataSelectionBrowser browser = DvidDataSelectionBrowser(recent_hosts, parent=self) if browser.exec_() == DvidDataSelectionBrowser.Rejected: return if None in browser.get_selection(): QMessageBox.critical("Couldn't use your selection.") return rois = None hostname, dset_uuid, volume_name, uuid = browser.get_selection() dvid_url = 'http://{hostname}/api/node/{uuid}/{volume_name}'.format( **locals()) subvolume_roi = browser.get_subvolume_roi() # Relocate host to top of 'recent' list, and limit list to 10 items. try: i = recent_hosts.index(hostname) del recent_hosts[i] except ValueError: pass finally: recent_hosts.insert(0, hostname) recent_hosts = recent_hosts[:10] # Save pref recent_hosts_pref.set(recent_hosts) if subvolume_roi is None: self.addFileNames([dvid_url], roleIndex, laneIndex) else: # In ilastik, we display the dvid volume axes in C-order, despite the dvid convention of F-order # Transpose the subvolume roi to match # (see implementation of OpDvidVolume) start, stop = subvolume_roi start = tuple(reversed(start)) stop = tuple(reversed(stop)) self.addFileNames([dvid_url], roleIndex, laneIndex, [(start, stop)])