Skip to content

Commit 1c5250b

Browse files
committed
[processing] Fix some exceptions in batch dialog after refactoring
Fixes #19779, #19786
1 parent 32ee716 commit 1c5250b

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

python/plugins/processing/gui/BatchPanel.py

+19-4
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ def initWidgets(self):
135135
self.tblParameters.horizontalHeader().setStretchLastSection(True)
136136

137137
def load(self):
138+
context = dataobjects.createContext()
138139
settings = QgsSettings()
139140
last_path = settings.value("/Processing/LastBatchPath", QDir.homePath())
140141
filename, selected_filter = QFileDialog.getOpenFileName(self,
@@ -164,7 +165,7 @@ def load(self):
164165
if param.name() in params:
165166
value = eval(params[param.name()])
166167
wrapper = self.wrappers[row][column]
167-
wrapper.setValue(value)
168+
wrapper.setParameterValue(value, context)
168169
column += 1
169170

170171
for out in self.alg.destinationParameterDefinitions():
@@ -195,12 +196,24 @@ def save(self):
195196
if param.isDestination():
196197
continue
197198
wrapper = self.wrappers[row][col]
198-
if not param.checkValueIsAcceptable(wrapper.value(), context):
199+
200+
# For compatibility with 3.x API, we need to check whether the wrapper is
201+
# the deprecated WidgetWrapper class. If not, it's the newer
202+
# QgsAbstractProcessingParameterWidgetWrapper class
203+
# TODO QGIS 4.0 - remove
204+
if issubclass(wrapper.__class__, WidgetWrapper):
205+
widget = wrapper.widget
206+
else:
207+
widget = wrapper.wrappedWidget()
208+
209+
value = wrapper.parameterValue()
210+
211+
if not param.checkValueIsAcceptable(value, context):
199212
self.parent.messageBar().pushMessage("", self.tr('Wrong or missing parameter value: {0} (row {1})').format(
200213
param.description(), row + 1),
201214
level=Qgis.Warning, duration=5)
202215
return
203-
algParams[param.name()] = param.valueAsPythonString(wrapper.value(), context)
216+
algParams[param.name()] = param.valueAsPythonString(value, context)
204217
col += 1
205218
for out in alg.destinationParameterDefinitions():
206219
if out.flags() & QgsProcessingParameterDefinition.FlagHidden:
@@ -289,13 +302,15 @@ def removeRows(self):
289302
self.tblParameters.setRowCount(self.tblParameters.rowCount() - 1)
290303

291304
def fillParameterValues(self, column):
305+
context = dataobjects.createContext()
306+
292307
wrapper = self.wrappers[0][column]
293308
if wrapper is None:
294309
# e.g. double clicking on a destination header
295310
return
296311

297312
for row in range(1, self.tblParameters.rowCount()):
298-
self.wrappers[row][column].setValue(wrapper.value())
313+
self.wrappers[row][column].setParameterValue(wrapper.value(), context)
299314

300315
def toggleAdvancedMode(self, checked):
301316
for column, param in enumerate(self.alg.parameterDefinitions()):

python/plugins/processing/gui/wrappers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1286,7 +1286,7 @@ def setValue(self, value):
12861286
self.setComboValue(value)
12871287

12881288
def value(self):
1289-
if self.dialogType in DIALOG_STANDARD:
1289+
if self.dialogType == DIALOG_STANDARD:
12901290
if self.parameterDefinition().multiLine():
12911291
text = self.widget.toPlainText()
12921292
else:

0 commit comments

Comments
 (0)