class QQueryBox(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.build_widget() self.controller = None def set_controller(self, controller=None): self.controller = controller def build_widget(self): layout = QtGui.QVBoxLayout() layout.setMargin(4) layout.setSpacing(2) self.searchBox = QSearchBox(True, False, self) layout.addWidget(self.searchBox) options_layout = QtGui.QHBoxLayout() options_layout.setSpacing(5) options_layout.setAlignment(QtCore.Qt.AlignLeft) options_layout.addWidget(QtGui.QLabel("Search:")) searchAll = QtGui.QRadioButton("Open Vistrails") searchCurrent = QtGui.QRadioButton("Current Vistrail") searchWorkflow = QtGui.QRadioButton("Current Workflow") useRegex = QtGui.QCheckBox("Regular expression") self.level_group = QtGui.QButtonGroup() self.level_group.addButton(searchAll) self.level_group.addButton(searchCurrent) self.level_group.addButton(searchWorkflow) self.level_map = \ Bidict([(QueryController.LEVEL_ALL, searchAll), (QueryController.LEVEL_VISTRAIL, searchCurrent), (QueryController.LEVEL_WORKFLOW, searchWorkflow)]) options_layout.addWidget(searchAll) options_layout.addWidget(searchCurrent) options_layout.addWidget(searchWorkflow) options_layout.addWidget(useRegex) searchCurrent.setChecked(True) self.editButton = QtGui.QPushButton("Edit") self.editButton.setEnabled(False) self.backButton = QtGui.QPushButton("Back to Search") self.backButton.setEnabled(False) options_layout.addStretch(1) options_layout.addWidget(self.editButton, 0, QtCore.Qt.AlignRight) options_layout.addWidget(self.backButton, 0, QtCore.Qt.AlignRight) layout.addLayout(options_layout) self.setLayout(layout) self.connect(self.searchBox, QtCore.SIGNAL('resetSearch()'), self.resetSearch) self.connect(self.searchBox, QtCore.SIGNAL('executeSearch(QString)'), self.executeSearch) self.connect(self.searchBox, QtCore.SIGNAL('refineMode(bool)'), self.refineMode) self.connect(self.backButton, QtCore.SIGNAL('clicked()'), self.backToSearch) self.connect(self.editButton, QtCore.SIGNAL('clicked()'), self.doEdit) self.connect(self.level_group, QtCore.SIGNAL('buttonClicked(QAbstractButton*)'), self.levelChanged) self.connect(useRegex, QtCore.SIGNAL('stateChanged(int)'), self.useRegexChanged) def resetSearch(self, emit_signal=True): """ resetSearch() -> None """ if self.controller and emit_signal: self.controller.reset_search() self.emit(QtCore.SIGNAL('textQueryChange(bool)'), False) else: self.searchBox.clearSearch() def backToSearch(self): if self.controller: self.controller.back_to_search() def doEdit(self): if self.controller: self.controller.goto_edit() def levelChanged(self, button): self.controller.set_level(self.level_map.inverse[button]) def useRegexChanged(self, status): self.controller.set_use_regex(status != QtCore.Qt.Unchecked) def setLevel(self, level): self.level_map[level].setChecked(True) def executeSearch(self, text): """ executeSearch(text: QString) -> None """ s = str(text) if self.controller: try: self.controller.run_search(s) except re.error as e: debug.critical('Error in regular expression: %s' % str(e)) # try: # search = CombinedSearch(s, # search = SearchCompiler(s).searchStmt # except SearchParseError, e: # debug.warning("Search Parse Error", e) # search = None # self.controller.set_search(search, s) # self.emit(QtCore.SIGNAL('textQueryChange(bool)'), s!='') def refineMode(self, on): """ refineMode(on: bool) -> None """ if self.controller: self.controller.set_refine(on) def getCurrentText(self): return self.searchBox.getCurrentText() def setManualResetEnabled(self, boolVal): self.searchBox.setManualResetEnabled(boolVal)
class QQueryBox(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.build_widget() self.controller = None def set_controller(self, controller=None): self.controller = controller def build_widget(self): layout = QtGui.QVBoxLayout() layout.setMargin(4) layout.setSpacing(2) self.searchBox = QSearchBox(True, False, self) layout.addWidget(self.searchBox) radio_layout = QtGui.QHBoxLayout() radio_layout.setSpacing(5) radio_layout.setAlignment(QtCore.Qt.AlignLeft) radio_layout.addWidget(QtGui.QLabel("Search:")) searchAll = QtGui.QRadioButton("Open Vistrails") searchCurrent = QtGui.QRadioButton("Current Vistrail") searchWorkflow = QtGui.QRadioButton("Current Workflow") self.level_group = QtGui.QButtonGroup() self.level_group.addButton(searchAll) self.level_group.addButton(searchCurrent) self.level_group.addButton(searchWorkflow) self.level_map = \ Bidict([(QueryController.LEVEL_ALL, searchAll), (QueryController.LEVEL_VISTRAIL, searchCurrent), (QueryController.LEVEL_WORKFLOW, searchWorkflow)]) radio_layout.addWidget(searchAll) radio_layout.addWidget(searchCurrent) radio_layout.addWidget(searchWorkflow) searchCurrent.setChecked(True) self.editButton = QtGui.QPushButton("Edit") self.editButton.setEnabled(False) self.backButton = QtGui.QPushButton("Back to Search") self.backButton.setEnabled(False) radio_layout.addStretch(1) radio_layout.addWidget(self.editButton, 0, QtCore.Qt.AlignRight) radio_layout.addWidget(self.backButton, 0, QtCore.Qt.AlignRight) layout.addLayout(radio_layout) self.setLayout(layout) self.connect(self.searchBox, QtCore.SIGNAL('resetSearch()'), self.resetSearch) self.connect(self.searchBox, QtCore.SIGNAL('executeSearch(QString)'), self.executeSearch) self.connect(self.searchBox, QtCore.SIGNAL('refineMode(bool)'), self.refineMode) self.connect(self.backButton, QtCore.SIGNAL('clicked()'), self.backToSearch) self.connect(self.editButton, QtCore.SIGNAL('clicked()'), self.doEdit) self.connect(self.level_group, QtCore.SIGNAL('buttonClicked(QAbstractButton*)'), self.levelChanged) def resetSearch(self, emit_signal=True): """ resetSearch() -> None """ if self.controller and emit_signal: self.controller.reset_search() self.emit(QtCore.SIGNAL('textQueryChange(bool)'), False) else: self.searchBox.clearSearch() def backToSearch(self): if self.controller: self.controller.back_to_search() def doEdit(self): if self.controller: self.controller.goto_edit() def levelChanged(self, button): self.controller.set_level(self.level_map.inverse[button]) def setLevel(self, level): self.level_map[level].setChecked(True) def executeSearch(self, text): """ executeSearch(text: QString) -> None """ s = str(text) if self.controller: self.controller.run_search(s) # try: # search = CombinedSearch(s, # search = SearchCompiler(s).searchStmt # except SearchParseError, e: # debug.warning("Search Parse Error", str(e)) # search = None # self.controller.set_search(search, s) # self.emit(QtCore.SIGNAL('textQueryChange(bool)'), s!='') def refineMode(self, on): """ refineMode(on: bool) -> None """ if self.controller: self.controller.set_refine(on) def getCurrentText(self): return self.searchBox.getCurrentText() def setManualResetEnabled(self, boolVal): self.searchBox.setManualResetEnabled(boolVal)