Beispiel #1
0
    def _on_insert_expression(self):
        # Slot raised to insert an expression.
        if not isinstance(self._item_widget, QgsLayoutItemBaseWidget):
            return

        qrcode_item = self._item_widget.layoutObject()
        if not qrcode_item:
            return

        sel_txt = self._value_text_edit.textCursor().selectedText()
        # Edit expression text if specified
        if sel_txt.startswith('[%') and sel_txt.endswith('%]'):
            sel_txt = sel_txt.lstrip('[%')
            sel_txt = sel_txt.rstrip('%]')

        cov_layer = self._item_widget.coverageLayer()
        exp_ctx = qrcode_item.createExpressionContext()
        exp_dlg = QgsExpressionBuilderDialog(cov_layer, sel_txt, self,
                                             'generic', exp_ctx)
        exp_dlg.setWindowTitle(self.tr('Insert Expression for Barcode Data'))
        exp_dlg.setAllowEvalErrors(False)
        if exp_dlg.exec_() == QDialog.Accepted:
            exp = exp_dlg.expressionText()
            if exp:
                self._value_text_edit.setPlainText('[%{0}%]'.format(exp))