@@ -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 ()):
0 commit comments