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
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())
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())
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())
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())
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())
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())