Skip to content

Commit 3f9cfe0

Browse files
committed
Fix setting number parameters to expressions
1 parent 82ef7d2 commit 3f9cfe0

File tree

2 files changed

+10
-17
lines changed

2 files changed

+10
-17
lines changed

python/plugins/processing/gui/NumberInputPanel.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -89,30 +89,20 @@ def showExpressionsBuilder(self):
8989

9090
def getValue(self):
9191
value = self.leText.text()
92-
values = []
93-
#for param in self.modelParametersDialog.model.parameterDefinitions():
94-
# if isinstance(param, QgsProcessingParameterNumber):
95-
# if "@" + param.name() in value:
96-
# values.append(ValueFromInput(param.name()))
97-
#for alg in list(self.modelParametersDialog.model.algs.values()):
98-
# for out in alg.algorithm.outputDefinitions():
99-
# if isinstance(out, QgsProcessingOutputNumber) and "@%s_%s" % (alg.modeler_name, out.name) in value:
100-
# values.append(ValueFromOutput(alg.modeler_name, out.name()))
101-
10292
for param in self.modelParametersDialog.model.parameterDefinitions():
10393
if isinstance(param, QgsProcessingParameterNumber):
104-
if "@" + param.name() == value:
94+
if "@" + param.name() == value.strip():
10595
return QgsProcessingModelAlgorithm.ChildParameterSource.fromModelParameter(param.name())
10696

10797
for alg in list(self.modelParametersDialog.model.childAlgorithms().values()):
10898
for out in alg.algorithm().outputDefinitions():
109-
if isinstance(out, QgsProcessingOutputNumber) and "@%s_%s" % (alg.childId(), out.name()) == value:
99+
if isinstance(out, QgsProcessingOutputNumber) and "@%s_%s" % (alg.childId(), out.name()) == value.strip():
110100
return QgsProcessingModelAlgorithm.ChildParameterSource.fromChildOutput(alg.childId(), out.outputName())
111101

112-
if values:
113-
return CompoundValue(values, value)
114-
else:
115-
return value
102+
try:
103+
return float(value.strip())
104+
except:
105+
return QgsProcessingModelAlgorithm.ChildParameterSource.fromExpression(self.leText.text())
116106

117107
def setValue(self, value):
118108
if isinstance(value, QgsProcessingModelAlgorithm.ChildParameterSource):
@@ -121,6 +111,8 @@ def setValue(self, value):
121111
elif value.source() == QgsProcessingModelAlgorithm.ChildParameterSource.ChildOutput:
122112
name = "%s_%s" % (value.outputChildId(), value.outputName())
123113
self.leText.setText(name)
114+
elif value.source() == QgsProcessingModelAlgorithm.ChildParameterSource.Expression:
115+
self.leText.setText(value.expression())
124116
else:
125117
self.leText.setText(str(value.staticValue()))
126118
else:

python/plugins/processing/modeler/ModelerScene.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
from qgis.PyQt.QtCore import QPointF, Qt
3030
from qgis.PyQt.QtWidgets import QGraphicsItem, QGraphicsScene
3131
from qgis.core import (QgsProcessingParameterDefinition,
32-
QgsProcessingModelAlgorithm)
32+
QgsProcessingModelAlgorithm,
33+
QgsExpression)
3334
from processing.modeler.ModelerGraphicItem import ModelerGraphicItem
3435
from processing.modeler.ModelerArrowItem import ModelerArrowItem
3536

0 commit comments

Comments
 (0)