Example #1
0
    def showExpressionsBuilder(self):
        context = createExpressionContext()
        dlg = QgsExpressionBuilderDialog(None, str(self.spnValue.value()), self, 'generic', context)

        dlg.setWindowTitle(self.tr('Expression based input'))
        if dlg.exec_() == QDialog.Accepted:
            exp = QgsExpression(dlg.expressionText())
            if not exp.hasParserError():
                try:
                    val = float(exp.evaluate(context))
                    self.setValue(val)
                except:
                    return
Example #2
0
    def showExpressionsBuilder(self):
        context = createExpressionContext()
        dlg = QgsExpressionBuilderDialog(None, str(self.leText.text()), self, 'generic', context)

        context.popScope()
        values = self.modelParametersDialog.getAvailableValuesOfType(QgsProcessingParameterNumber, QgsProcessingOutputNumber)
        variables = {}
        for value in values:
            if isinstance(value, QgsProcessingModelAlgorithm.ChildParameterSource):
                if value.source() == QgsProcessingModelAlgorithm.ChildParameterSource.ModelParameter:
                    name = value.parameterName()
                    element = self.modelParametersDialog.model.parameterDefinition(name)
                    desc = element.description()
                elif value.source() == QgsProcessingModelAlgorithm.ChildParameterSource.ChildOutput:
                    name = "%s_%s" % (value.outputChildId(), value.outputName())
                    alg = self.modelParametersDialog.model.childAlgorithm(value.outputChildId())
                    out = alg.algorithm().outputDefinition(value.outputName())
                    desc = self.tr("Output '{0}' from algorithm '{1}'").format(out.description(), alg.description())
            variables[name] = desc
        values = self.modelParametersDialog.getAvailableValuesOfType([QgsProcessingParameterFeatureSource, QgsProcessingParameterRasterLayer],
                                                                     [QgsProcessingOutputVectorLayer, QgsProcessingOutputRasterLayer])
        for value in values:
            if isinstance(value, QgsProcessingModelAlgorithm.ChildParameterSource):
                if value.source() == QgsProcessingModelAlgorithm.ChildParameterSource.ModelParameter:
                    name = value.parameterName()
                    element = self.modelParametersDialog.model.parameterDefinition(name)
                    desc = element.description()
                elif value.source() == QgsProcessingModelAlgorithm.ChildParameterSource.ChildOutput:
                    name = "%s_%s" % (value.outputChildId(), value.outputName())
                    alg = self.modelParametersDialog.model.childAlgorithm(value.outputChildId())
                    out = alg.algorithm().outputDefinition(value.outputName())
                    desc = self.tr("Output '{0}' from algorithm '{1}'").format(out.description(), alg.description())
            variables['%s_minx' % name] = self.tr("Minimum X of {0}").format(desc)
            variables['%s_miny' % name] = self.tr("Minimum Y of {0}").format(desc)
            variables['%s_maxx' % name] = self.tr("Maximum X of {0}").format(desc)
            variables['%s_maxy' % name] = self.tr("Maximum Y of {0}").format(desc)
            if isinstance(element, (QgsProcessingParameterRasterLayer, QgsProcessingOutputRasterLayer)):
                variables['%s_min' % name] = self.tr("Minimum value of {0}").format(desc)
                variables['%s_max' % name] = self.tr("Maximum value of {0}").format(desc)
                variables['%s_avg' % name] = self.tr("Mean value of {0}").format(desc)
                variables['%s_stddev' % name] = self.tr("Standard deviation of {0}").format(desc)
        for variable, desc in variables.items():
            dlg.expressionBuilder().registerItem("Modeler", variable, "@" + variable, desc, highlightedItem=True)

        dlg.setWindowTitle(self.tr('Expression based input'))
        if dlg.exec_() == QDialog.Accepted:
            exp = QgsExpression(dlg.expressionText())
            if not exp.hasParserError():
                self.setValue(dlg.expressionText())
Example #3
0
    def showExpressionsBuilder(self):
        context = createExpressionContext()
        processing_context = createContext()
        scope = self.modelParametersDialog.model.createExpressionContextScopeForChildAlgorithm(self.modelParametersDialog.childId, processing_context)
        context.appendScope(scope)

        highlighted = scope.variableNames()
        context.setHighlightedVariables(highlighted)

        dlg = QgsExpressionBuilderDialog(None, str(self.leText.text()), self, 'generic', context)

        dlg.setWindowTitle(self.tr('Expression Based Input'))
        if dlg.exec_() == QDialog.Accepted:
            exp = QgsExpression(dlg.expressionText())
            if not exp.hasParserError():
                self.setValue(dlg.expressionText())
Example #4
0
    def showExpressionsBuilder(self):
        context = createExpressionContext()
        dlg = QgsExpressionBuilderDialog(None, str(self.leText.text()), self, 'generic', context)

        context.popScope()
        values = self.modelParametersDialog.getAvailableValuesOfType(ParameterNumber, OutputNumber)
        variables = {}
        for value in values:
            if isinstance(value, ValueFromInput):
                name = value.name
                element = self.modelParametersDialog.model.inputs[name].param
                desc = element.description
            else:
                name = "%s_%s" % (value.alg, value.output)
                alg = self.modelParametersDialog.model.algs[value.alg]
                out = alg.algorithm.getOutputFromName(value.output)
                desc = self.tr("Output '{0}' from algorithm '{1}'").format(out.description(), alg.description)
            variables[name] = desc
        values = self.modelParametersDialog.getAvailableValuesOfType(ParameterVector, OutputVector)
        values.extend(self.modelParametersDialog.getAvailableValuesOfType(ParameterRaster, OutputRaster))
        for value in values:
            if isinstance(value, ValueFromInput):
                name = value.name
                element = self.modelParametersDialog.model.inputs[name].param
                desc = element.description
            else:
                name = "%s_%s" % (value.alg, value.output)
                alg = self.modelParametersDialog.model.algs[value.alg]
                element = alg.algorithm.getOutputFromName(value.output)
                desc = self.tr("Output '{0}' from algorithm '{1}'").format(element.description(), alg.description)
            variables['%s_minx' % name] = self.tr("Minimum X of {0}").format(desc)
            variables['%s_miny' % name] = self.tr("Minimum Y of {0}").format(desc)
            variables['%s_maxx' % name] = self.tr("Maximum X of {0}").format(desc)
            variables['%s_maxy' % name] = self.tr("Maximum Y of {0}").format(desc)
            if isinstance(element, (ParameterRaster, OutputRaster)):
                variables['%s_min' % name] = self.tr("Minimum value of {0}").format(desc)
                variables['%s_max' % name] = self.tr("Maximum value of {0}").format(desc)
                variables['%s_avg' % name] = self.tr("Mean value of {0}").format(desc)
                variables['%s_stddev' % name] = self.tr("Standard deviation of {0}").format(desc)
        for variable, desc in variables.items():
            dlg.expressionBuilder().registerItem("Modeler", variable, "@" + variable, desc, highlightedItem=True)

        dlg.setWindowTitle(self.tr('Expression based input'))
        if dlg.exec_() == QDialog.Accepted:
            exp = QgsExpression(dlg.expressionText())
            if not exp.hasParserError():
                self.setValue(dlg.expressionText())
Example #5
0
    def showExpressionsBuilder(self):
        context = createExpressionContext()
        processing_context = createContext()
        scope = self.modelParametersDialog.model.createExpressionContextScopeForChildAlgorithm(
            self.modelParametersDialog.childId, processing_context)
        context.appendScope(scope)

        highlighted = scope.variableNames()
        context.setHighlightedVariables(highlighted)

        dlg = QgsExpressionBuilderDialog(None, str(self.leText.text()), self,
                                         'generic', context)

        dlg.setWindowTitle(self.tr('Expression based input'))
        if dlg.exec_() == QDialog.Accepted:
            exp = QgsExpression(dlg.expressionText())
            if not exp.hasParserError():
                self.setValue(dlg.expressionText())
Example #6
0
    def showExpressionsBuilder(self):
        context = createExpressionContext()
        dlg = QgsExpressionBuilderDialog(None, str(self.leText.text()), self,
                                         'generic', context)

        context.popScope()
        values = self.modelParametersDialog.getAvailableValuesOfType(
            ParameterNumber, OutputNumber)
        variables = {}
        for value in values:
            if isinstance(value, ValueFromInput):
                name = value.name
                element = self.modelParametersDialog.model.inputs[name].param
                desc = element.description
            else:
                name = "%s_%s" % (value.alg, value.output)
                alg = self.modelParametersDialog.model.algs[value.alg]
                out = alg.algorithm.getOutputFromName(value.output)
                desc = self.tr("Output '{0}' from algorithm '{1}'").format(
                    out.description(), alg.description)
            variables[name] = desc
        values = self.modelParametersDialog.getAvailableValuesOfType(
            ParameterVector, OutputVector)
        values.extend(
            self.modelParametersDialog.getAvailableValuesOfType(
                ParameterRaster, OutputRaster))
        for value in values:
            if isinstance(value, ValueFromInput):
                name = value.name
                element = self.modelParametersDialog.model.inputs[name].param
                desc = element.description
            else:
                name = "%s_%s" % (value.alg, value.output)
                alg = self.modelParametersDialog.model.algs[value.alg]
                element = alg.algorithm.getOutputFromName(value.output)
                desc = self.tr("Output '{0}' from algorithm '{1}'").format(
                    element.description(), alg.description)
            variables['%s_minx' %
                      name] = self.tr("Minimum X of {0}").format(desc)
            variables['%s_miny' %
                      name] = self.tr("Minimum Y of {0}").format(desc)
            variables['%s_maxx' %
                      name] = self.tr("Maximum X of {0}").format(desc)
            variables['%s_maxy' %
                      name] = self.tr("Maximum Y of {0}").format(desc)
            if isinstance(element, (ParameterRaster, OutputRaster)):
                variables['%s_min' %
                          name] = self.tr("Minimum value of {0}").format(desc)
                variables['%s_max' %
                          name] = self.tr("Maximum value of {0}").format(desc)
                variables['%s_avg' %
                          name] = self.tr("Mean value of {0}").format(desc)
                variables['%s_stddev' % name] = self.tr(
                    "Standard deviation of {0}").format(desc)
        for variable, desc in variables.items():
            dlg.expressionBuilder().registerItem("Modeler",
                                                 variable,
                                                 "@" + variable,
                                                 desc,
                                                 highlightedItem=True)

        dlg.setWindowTitle(self.tr('Expression based input'))
        if dlg.exec_() == QDialog.Accepted:
            exp = QgsExpression(dlg.expressionText())
            if not exp.hasParserError():
                self.setValue(dlg.expressionText())
Example #7
0
    def showExpressionsBuilder(self):
        context = createExpressionContext()
        dlg = QgsExpressionBuilderDialog(None, str(self.leText.text()), self,
                                         'generic', context)

        context.popScope()
        values = self.modelParametersDialog.getAvailableValuesOfType(
            QgsProcessingParameterNumber, QgsProcessingOutputNumber)
        variables = {}
        for value in values:
            if isinstance(value,
                          QgsProcessingModelAlgorithm.ChildParameterSource):
                if value.source(
                ) == QgsProcessingModelAlgorithm.ChildParameterSource.ModelParameter:
                    name = value.parameterName()
                    element = self.modelParametersDialog.model.parameterDefinition(
                        name)
                    desc = element.description()
                elif value.source(
                ) == QgsProcessingModelAlgorithm.ChildParameterSource.ChildOutput:
                    name = "%s_%s" % (value.outputChildId(),
                                      value.outputName())
                    alg = self.modelParametersDialog.model.childAlgorithm(
                        value.outputChildId())
                    out = alg.algorithm().outputDefinition(value.outputName())
                    desc = self.tr("Output '{0}' from algorithm '{1}'").format(
                        out.description(), alg.description())
            variables[name] = desc
        values = self.modelParametersDialog.getAvailableValuesOfType([
            QgsProcessingParameterFeatureSource,
            QgsProcessingParameterRasterLayer
        ], [QgsProcessingOutputVectorLayer, QgsProcessingOutputRasterLayer])
        for value in values:
            if isinstance(value,
                          QgsProcessingModelAlgorithm.ChildParameterSource):
                if value.source(
                ) == QgsProcessingModelAlgorithm.ChildParameterSource.ModelParameter:
                    name = value.parameterName()
                    element = self.modelParametersDialog.model.parameterDefinition(
                        name)
                    desc = element.description()
                elif value.source(
                ) == QgsProcessingModelAlgorithm.ChildParameterSource.ChildOutput:
                    name = "%s_%s" % (value.outputChildId(),
                                      value.outputName())
                    alg = self.modelParametersDialog.model.childAlgorithm(
                        value.outputChildId())
                    out = alg.algorithm().outputDefinition(value.outputName())
                    desc = self.tr("Output '{0}' from algorithm '{1}'").format(
                        out.description(), alg.description())
            variables['%s_minx' %
                      name] = self.tr("Minimum X of {0}").format(desc)
            variables['%s_miny' %
                      name] = self.tr("Minimum Y of {0}").format(desc)
            variables['%s_maxx' %
                      name] = self.tr("Maximum X of {0}").format(desc)
            variables['%s_maxy' %
                      name] = self.tr("Maximum Y of {0}").format(desc)
            if isinstance(element, (QgsProcessingParameterRasterLayer,
                                    QgsProcessingOutputRasterLayer)):
                variables['%s_min' %
                          name] = self.tr("Minimum value of {0}").format(desc)
                variables['%s_max' %
                          name] = self.tr("Maximum value of {0}").format(desc)
                variables['%s_avg' %
                          name] = self.tr("Mean value of {0}").format(desc)
                variables['%s_stddev' % name] = self.tr(
                    "Standard deviation of {0}").format(desc)
        for variable, desc in variables.items():
            dlg.expressionBuilder().registerItem("Modeler",
                                                 variable,
                                                 "@" + variable,
                                                 desc,
                                                 highlightedItem=True)

        dlg.setWindowTitle(self.tr('Expression based input'))
        if dlg.exec_() == QDialog.Accepted:
            exp = QgsExpression(dlg.expressionText())
            if not exp.hasParserError():
                self.setValue(dlg.expressionText())