@@ -82,7 +82,7 @@ def __init__(self, dialog):
82
82
83
83
def insert (self ):
84
84
if self .mExpressionWidget .currentText ():
85
- exp = '[% {} %]' .format (self .mExpressionWidget .currentText ())
85
+ exp = '[%{} %]' .format (self .mExpressionWidget .currentText ())
86
86
self .mText .insertPlainText (exp )
87
87
88
88
def setValue (self , value ):
@@ -95,6 +95,17 @@ def setValue(self, value):
95
95
and v .source () == QgsProcessingModelChildParameterSource .ExpressionText :
96
96
text = v .expressionText ()
97
97
98
+ # replace parameter's name by expression (diverging after model save)
99
+ names = QgsExpression .referencedVariables (text )
100
+
101
+ strings = self .dialog .getAvailableValuesOfType (
102
+ [QgsProcessingParameterString , QgsProcessingParameterNumber ], [])
103
+ model_params = [(self .dialog .resolveValueDescription (s ), s ) for s in strings ]
104
+
105
+ for k , v in model_params :
106
+ if v .parameterName () in names :
107
+ text = text .replace ('[% @{} %]' .format (v .parameterName ()), '[% @{} %]' .format (k ))
108
+
98
109
self .mText .setPlainText (text )
99
110
100
111
def value (self ):
@@ -113,8 +124,19 @@ def _expressionValues(self, text):
113
124
model_params = [(self .dialog .resolveValueDescription (s ), s ) for s in strings ]
114
125
115
126
variables = QgsExpression .referencedVariables (text )
127
+
128
+ # replace description by parameter's name (diverging after model save)
129
+ descriptions = QgsExpression .referencedVariables (text )
130
+
131
+ for k , v in model_params :
132
+ if k in descriptions :
133
+ text = text .replace ('[% @{} %]' .format (k ), '[% @{} %]' .format (v .parameterName ()))
134
+
135
+ src = QgsProcessingModelChildParameterSource .fromExpressionText (text )
136
+
137
+ # add parameters currently used by the expression
116
138
expression_values = []
117
- expression_values .append (QgsProcessingModelChildParameterSource . fromExpressionText ( text ) )
139
+ expression_values .append (src )
118
140
119
141
for k , v in model_params :
120
142
if k in variables :
0 commit comments