Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
    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