def __init__(self, use_external_git, parent=None): super(PMRWorkflowWidget, self).__init__(parent) self._ui = Ui_PMRWorkflowWidget() self._ui.setupUi(self) pmr_info = PMR() self._pmrTool = PMRTool(pmr_info, use_external_git) self._termLookUpLimit = 32 self._timer = QtCore.QTimer() self._timer.setInterval(500) self._busy_waiting = False self._ontological_search = False word_list = ['pending ...'] self._list_model = OWLTermsListModel(word_list) # self._client = Client(site=pmr_target, use_default_headers=True) self._makeConnections() self._ui.comboBoxSearch.clear() self._ui.comboBoxSearch.addItems(search_domains) self._updateUi()
def __init__(self, parent=None): ''' Constructor ''' super(PMRWorkflowWidget, self).__init__(parent) self._ui = Ui_PMRWorkflowWidget() self._ui.setupUi(self) self._pmrTool = PMRTool() self._termLookUpLimit = 32 self._timer = QtCore.QTimer() self._timer.setInterval(500) self._busy_waiting = False self._ontological_search = False word_list = ['pending ...'] self._list_model = OWLTermsListModel(word_list) # self._client = Client(site=pmr_target, use_default_headers=True) self._makeConnections() self._ui.comboBoxSearch.clear() self._ui.comboBoxSearch.addItems(search_domains) self._updateUi()
class PMRWorkflowWidget(QtGui.QWidget): ''' A Widget for importing and exporting to and from PMR. ''' def __init__(self, parent=None): ''' Constructor ''' super(PMRWorkflowWidget, self).__init__(parent) self._ui = Ui_PMRWorkflowWidget() self._ui.setupUi(self) self._pmrTool = PMRTool() self._termLookUpLimit = 32 self._timer = QtCore.QTimer() self._timer.setInterval(500) self._busy_waiting = False self._ontological_search = False word_list = ['pending ...'] self._list_model = OWLTermsListModel(word_list) # self._client = Client(site=pmr_target, use_default_headers=True) self._makeConnections() self._ui.comboBoxSearch.clear() self._ui.comboBoxSearch.addItems(search_domains) self._updateUi() def _updateUi(self): if self._pmrTool.hasAccess(): self._ui.labelLink.setText('<a href="mapclient.deregister">deregister</a>') else: self._ui.labelLink.setText('<a href="mapclient.register">register</a>') def _makeConnections(self): self._ui.pushButtonSearch.clicked.connect(self._searchClicked) self._ui.pushButtonImport.clicked.connect(self._importClicked) self._ui.pushButtonExport.clicked.connect(self._exportClicked) self._ui.labelLink.linkActivated.connect(self._linkActivated) self._ui.listWidgetResults.itemClicked.connect(self._searchResultClicked) self._ui.lineEditSearch.textEdited.connect(self._searchTextEdited) self._timer.timeout.connect(self._queryRepository) self._ui.comboBoxSearch.currentIndexChanged.connect(self._searchTypeChanged) def _initialiseCompleter(self): completer = QtGui.QCompleter(self._ui.lineEditSearch) completer.setCompletionMode(QtGui.QCompleter.UnfilteredPopupCompletion) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) completer.setModel(self._list_model) completer.setCompletionColumn(0) completer.setCompletionRole(QtCore.Qt.DisplayRole) return completer def _searchTypeChanged(self, index): text = self._ui.comboBoxSearch.currentText() if text == ontological_search_string: self._ontological_search = True completer = self._initialiseCompleter() self._ui.lineEditSearch.setCompleter(completer) else: self._ontological_search = False self._ui.lineEditSearch.setCompleter(None) def _searchTextEdited(self, new_text): if self._ontological_search and len(new_text) and not self._busy_waiting: if self._timer.isActive(): QtGui.QApplication.restoreOverrideCursor() QtGui.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor) self._timer.start() def _queryRepository(self): self._timer.stop() self._busy_waiting = True search_text = self._ui.lineEditSearch.text() pmr_target = info.PMRInfo().ipaddress target = pmr_target + '/pmr2_ricordo/owlterms' + '/%s/%d' % (search_text, self._termLookUpLimit) client = Client(site=pmr_target, use_default_headers=True) state = client(target=target) # , data=json.dumps({'actions': {'search': 1}, 'fields': {'simple_query': 'femur'}})) # , endpoint='ricordo', data='femur') response = state.value() descriptions = ['%s [%s]' % (line[0], line[1].split('#')[-1]) for line in response['results']] self._list_model.removeRows(0, self._list_model.rowCount()) self._list_model.insertRows(0, len(descriptions), descriptions) self._busy_waiting = False QtGui.QApplication.restoreOverrideCursor() def _searchResultClicked(self, item): r = item.data(QtCore.Qt.UserRole) if 'source' in r: self._ui.lineEditWorkspace.setText(r['source']) elif 'href' in r: self._ui.lineEditWorkspace.setText(r['href']) def _linkActivated(self, link): if link == 'mapclient.register': dlg = AuthoriseApplicationDialog(self) dlg.setModal(True) dlg.exec_() self._updateUi() elif link == 'mapclient.deregister': self._pmrTool.deregister() self._updateUi() def _searchClicked(self): self._doSearch(self._ui.comboBoxSearch.currentText()) def _importClicked(self): pass def _exportClicked(self): pass def setSearchDomain(self, domain=['all', ]): self._domain = [] if type(domain) is not list: domain = [domain] if len(domain) and domain[0] == 'all': domain = search_domains for subdomain in domain: if subdomain in search_domains: self._domain.append(subdomain) if len(self._domain): self._ui.comboBoxSearch.clear() for subdomain in self._domain: self._ui.comboBoxSearch.addItem(subdomain) def setExport(self, visible=True): if visible: self._ui.pushButtonExport.show() else: self._ui.pushButtonExport.hide() def setImport(self, visible=True): if visible: self._ui.pushButtonImport.show() else: self._ui.pushButtonImport.hide() def workspaceUrl(self): return self._ui.lineEditWorkspace.text() def setWorkspaceUrl(self, url): self._ui.lineEditWorkspace.setText(url) @handle_runtime_error @set_wait_cursor def _doSearch(self, search_type): # Set pmrlib to go self._ui.listWidgetResults.clear() # fix up known terms to be full blown uri search_text = self._ui.lineEditSearch.text() if True: search_text = self._ui.lineEditSearch.text() label_re = re.compile('\[([\w_\d]+)\]') re_result = label_re.search(search_text) if re_result: search_text = re_result.group(1) # search_terms = search_text.split() # for term in search_terms: # rdfterm = self._annotationTool.rdfFormOfTerm(term) # if rdfterm: # search_text = search_text + ' ' + rdfterm[1:-1] results = self._pmrTool.search(search_text, search_type) if search_type == workflow_search_string: results_list = results['results'] for r in results_list: item = QtGui.QListWidgetItem(r['obj']['title'], self._ui.listWidgetResults) item.setData(QtCore.Qt.UserRole, r) elif search_type == ontological_search_string: if type(results) is dict: return for r in results: label = r['label'] for sr in r['items']: item = QtGui.QListWidgetItem(sr['title'] + ' [%s, %s]' % (sr['value'], label), self._ui.listWidgetResults) tool_tip = 'Workspace title: %s, Ontological term: %s, Target: %s' % (sr['title'], label, sr['href']) item.setToolTip(tool_tip) item.setData(QtCore.Qt.UserRole, sr) else: for r in results: if 'title' in r and r['title']: item = QtGui.QListWidgetItem(r['title'], self._ui.listWidgetResults) else: item = QtGui.QListWidgetItem(r['target'], self._ui.listWidgetResults) item.setData(QtCore.Qt.UserRole, r)
class PMRWorkflowWidget(QtGui.QWidget): """ A Widget for importing and exporting to and from PMR. """ def __init__(self, use_external_git, parent=None): super(PMRWorkflowWidget, self).__init__(parent) self._ui = Ui_PMRWorkflowWidget() self._ui.setupUi(self) pmr_info = PMR() self._pmrTool = PMRTool(pmr_info, use_external_git) self._termLookUpLimit = 32 self._timer = QtCore.QTimer() self._timer.setInterval(500) self._busy_waiting = False self._ontological_search = False word_list = ['pending ...'] self._list_model = OWLTermsListModel(word_list) # self._client = Client(site=pmr_target, use_default_headers=True) self._makeConnections() self._ui.comboBoxSearch.clear() self._ui.comboBoxSearch.addItems(search_domains) self._updateUi() def _updateUi(self): if self._pmrTool.hasAccess(): self._ui.labelLink.setText('<a href="mapclient.deregister">deregister</a>') else: self._ui.labelLink.setText('<a href="mapclient.register">register</a>') def _makeConnections(self): self._ui.pushButtonSearch.clicked.connect(self._searchClicked) self._ui.pushButtonImport.clicked.connect(self._importClicked) self._ui.pushButtonExport.clicked.connect(self._exportClicked) self._ui.labelLink.linkActivated.connect(self._linkActivated) self._ui.listWidgetResults.itemClicked.connect(self._searchResultClicked) self._ui.lineEditSearch.textEdited.connect(self._searchTextEdited) self._timer.timeout.connect(self._queryRepository) self._ui.comboBoxSearch.currentIndexChanged.connect(self._searchTypeChanged) def _initialiseCompleter(self): completer = QtGui.QCompleter(self._ui.lineEditSearch) completer.setCompletionMode(QtGui.QCompleter.UnfilteredPopupCompletion) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) completer.setModel(self._list_model) completer.setCompletionColumn(0) completer.setCompletionRole(QtCore.Qt.DisplayRole) return completer def _searchTypeChanged(self, index): text = self._ui.comboBoxSearch.currentText() if text == ontological_search_string: self._ontological_search = True completer = self._initialiseCompleter() self._ui.lineEditSearch.setCompleter(completer) else: self._ontological_search = False self._ui.lineEditSearch.setCompleter(None) def _searchTextEdited(self, new_text): if self._ontological_search and len(new_text) and not self._busy_waiting: if self._timer.isActive(): QtGui.QApplication.restoreOverrideCursor() QtGui.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor) self._timer.start() def _queryRepository(self): self._timer.stop() self._busy_waiting = True search_text = self._ui.lineEditSearch.text() pmr_target = general.PMR().host() target = pmr_target + '/pmr2_ricordo/owlterms' + '/%s/%d' % (search_text, self._termLookUpLimit) client = Client(site=pmr_target, use_default_headers=True) state = client(target=target) # , data=json.dumps({'actions': {'search': 1}, 'fields': {'simple_query': 'femur'}})) # , endpoint='ricordo', data='femur') response = state.value() descriptions = ['%s [%s]' % (line[0], line[1].split('#')[-1]) for line in response['results']] self._list_model.removeRows(0, self._list_model.rowCount()) self._list_model.insertRows(0, len(descriptions), descriptions) self._busy_waiting = False def _searchResultClicked(self, item): r = item.data(QtCore.Qt.UserRole) if 'source' in r: self._ui.lineEditWorkspace.setText(r['source']) elif 'href' in r: self._ui.lineEditWorkspace.setText(r['href']) def _linkActivated(self, link): if link == 'mapclient.register': dlg = AuthoriseApplicationDialog(self) dlg.setModal(True) dlg.exec_() self._updateUi() elif link == 'mapclient.deregister': self._pmrTool.deregister() self._updateUi() def _searchClicked(self): self._doSearch(self._ui.comboBoxSearch.currentText()) def _importClicked(self): pass def _exportClicked(self): pass def setSearchDomain(self, domain=['all', ]): self._domain = [] if type(domain) is not list: domain = [domain] if len(domain) and domain[0] == 'all': domain = search_domains for subdomain in domain: if subdomain in search_domains: self._domain.append(subdomain) if len(self._domain): self._ui.comboBoxSearch.clear() for subdomain in self._domain: self._ui.comboBoxSearch.addItem(subdomain) def setExport(self, visible=True): if visible: self._ui.pushButtonExport.show() else: self._ui.pushButtonExport.hide() def setImport(self, visible=True): if visible: self._ui.pushButtonImport.show() else: self._ui.pushButtonImport.hide() def workspaceUrl(self): return self._ui.lineEditWorkspace.text() def setWorkspaceUrl(self, url): self._ui.lineEditWorkspace.setText(url) @handle_runtime_error @set_wait_cursor def _doSearch(self, search_type): # Set pmrlib to go self._ui.listWidgetResults.clear() # fix up known terms to be full blown uri search_text = self._ui.lineEditSearch.text() if True: search_text = self._ui.lineEditSearch.text() label_re = re.compile('\[([\w_\d]+)\]') re_result = label_re.search(search_text) if re_result: search_text = re_result.group(1) # search_terms = search_text.split() # for term in search_terms: # rdfterm = self._annotationTool.rdfFormOfTerm(term) # if rdfterm: # search_text = search_text + ' ' + rdfterm[1:-1] results = self._pmrTool.search(search_text, search_type) if search_type == workflow_search_string: results_list = results['results'] for r in results_list: item = QtGui.QListWidgetItem(r['obj']['title'], self._ui.listWidgetResults) item.setData(QtCore.Qt.UserRole, r) elif search_type == ontological_search_string: if type(results) is dict: return for r in results: label = r['label'] for sr in r['items']: item = QtGui.QListWidgetItem(sr['title'] + ' [%s, %s]' % (sr['value'], label), self._ui.listWidgetResults) tool_tip = 'Workspace title: %s, Ontological term: %s, Target: %s' % (sr['title'], label, sr['href']) item.setToolTip(tool_tip) item.setData(QtCore.Qt.UserRole, sr) else: for r in results: if 'title' in r and r['title']: item = QtGui.QListWidgetItem(r['title'], self._ui.listWidgetResults) else: item = QtGui.QListWidgetItem(r['target'], self._ui.listWidgetResults) item.setData(QtCore.Qt.UserRole, r)