def centeredCheckBox(self): """ Instantiates a centered check box. :return: (QWidget) a QCheckBox centered on a widget. """ w = QWidget() l = QHBoxLayout() l.setAlignment(Qt.AlignCenter) cb = QCheckBox() # just an easy way to access the cb w.cb = cb l.addWidget(cb) w.setLayout(l) return w
def modelerPanel(self): """ Returns the table prepared for the modeler Processing GUI. :return: (OrderedTableWidget) DSGTools customized table widget. """ widget = QWidget() layout = QVBoxLayout() # added as an attribute in order to make it easier to be read widget.cb = QCheckBox() widget.cb.setText(self.tr("Use DE-9IM inputs")) layout.addWidget(widget.cb) widget.otw = OrderedTableWidget( headerMap={ 0: { "header": self.tr("Rule name"), "type": "widget", "widget": self.ruleNameWidget, "setter": "setText", "getter": "text" }, 1: { "header": self.tr("Layer A"), "type": "widget", "widget": self.mapLayerModelDialog, "setter": "setText", "getter": "text" }, 2: { "header": self.tr("Filter A"), "type": "widget", "widget": self.filterExpressionWidget, "setter": "setExpression_", "getter": "currentText_" }, 3: { "header": self.tr("Predicate"), "type": "widget", "widget": self.predicateComboBox, "setter": "setCurrentIndex", "getter": "currentIndex" }, 4: { "header": self.tr("DE-9IM mask predicate"), "type": "widget", "widget": self.de9imWidget, "setter": "setText", "getter": "text" }, 5: { "header": self.tr("Layer B"), "type": "widget", "widget": self.mapLayerModelDialog, "setter": "setText", "getter": "text" }, 6: { "header": self.tr("Filter B"), "type": "widget", "widget": self.filterExpressionWidget, "setter": "setExpression_", "getter": "currentText_" }, 7: { "header": self.tr("Cardinality"), "type": "widget", "widget": self.cardinalityWidget, "setter": "setText", "getter": "text" } }) def handlePredicateColumns(checked): """ Predicate input widgets are mutually exclusively: the user may only input data through either of them. This method manages hiding and showing correct columns in accord to the user selection. :param checked: (bool) whether the DE-9IM usage checkbox is ticked. """ widget.otw.tableWidget.hideColumn(3 if checked else 4) widget.otw.tableWidget.showColumn(4 if checked else 3) widget.cb.toggled.connect(handlePredicateColumns) widget.cb.toggled.emit(widget.cb.isChecked()) widget.otw.setHeaderDoubleClickBehaviour("replicate") widget.otw.rowAdded.connect(self.postAddRowModeler) layout.addWidget(widget.otw) widget.setLayout(layout) return widget