mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	[processing] Fix some exceptions in batch dialog after refactoring
Fixes #19779, #19786
This commit is contained in:
		
							parent
							
								
									32ee71634f
								
							
						
					
					
						commit
						1c5250b147
					
				@ -135,6 +135,7 @@ class BatchPanel(BASE, WIDGET):
 | 
			
		||||
        self.tblParameters.horizontalHeader().setStretchLastSection(True)
 | 
			
		||||
 | 
			
		||||
    def load(self):
 | 
			
		||||
        context = dataobjects.createContext()
 | 
			
		||||
        settings = QgsSettings()
 | 
			
		||||
        last_path = settings.value("/Processing/LastBatchPath", QDir.homePath())
 | 
			
		||||
        filename, selected_filter = QFileDialog.getOpenFileName(self,
 | 
			
		||||
@ -164,7 +165,7 @@ class BatchPanel(BASE, WIDGET):
 | 
			
		||||
                    if param.name() in params:
 | 
			
		||||
                        value = eval(params[param.name()])
 | 
			
		||||
                        wrapper = self.wrappers[row][column]
 | 
			
		||||
                        wrapper.setValue(value)
 | 
			
		||||
                        wrapper.setParameterValue(value, context)
 | 
			
		||||
                    column += 1
 | 
			
		||||
 | 
			
		||||
                for out in self.alg.destinationParameterDefinitions():
 | 
			
		||||
@ -195,12 +196,24 @@ class BatchPanel(BASE, WIDGET):
 | 
			
		||||
                if param.isDestination():
 | 
			
		||||
                    continue
 | 
			
		||||
                wrapper = self.wrappers[row][col]
 | 
			
		||||
                if not param.checkValueIsAcceptable(wrapper.value(), context):
 | 
			
		||||
 | 
			
		||||
                # For compatibility with 3.x API, we need to check whether the wrapper is
 | 
			
		||||
                # the deprecated WidgetWrapper class. If not, it's the newer
 | 
			
		||||
                # QgsAbstractProcessingParameterWidgetWrapper class
 | 
			
		||||
                # TODO QGIS 4.0 - remove
 | 
			
		||||
                if issubclass(wrapper.__class__, WidgetWrapper):
 | 
			
		||||
                    widget = wrapper.widget
 | 
			
		||||
                else:
 | 
			
		||||
                    widget = wrapper.wrappedWidget()
 | 
			
		||||
 | 
			
		||||
                value = wrapper.parameterValue()
 | 
			
		||||
 | 
			
		||||
                if not param.checkValueIsAcceptable(value, context):
 | 
			
		||||
                    self.parent.messageBar().pushMessage("", self.tr('Wrong or missing parameter value: {0} (row {1})').format(
 | 
			
		||||
                        param.description(), row + 1),
 | 
			
		||||
                        level=Qgis.Warning, duration=5)
 | 
			
		||||
                    return
 | 
			
		||||
                algParams[param.name()] = param.valueAsPythonString(wrapper.value(), context)
 | 
			
		||||
                algParams[param.name()] = param.valueAsPythonString(value, context)
 | 
			
		||||
                col += 1
 | 
			
		||||
            for out in alg.destinationParameterDefinitions():
 | 
			
		||||
                if out.flags() & QgsProcessingParameterDefinition.FlagHidden:
 | 
			
		||||
@ -289,13 +302,15 @@ class BatchPanel(BASE, WIDGET):
 | 
			
		||||
            self.tblParameters.setRowCount(self.tblParameters.rowCount() - 1)
 | 
			
		||||
 | 
			
		||||
    def fillParameterValues(self, column):
 | 
			
		||||
        context = dataobjects.createContext()
 | 
			
		||||
 | 
			
		||||
        wrapper = self.wrappers[0][column]
 | 
			
		||||
        if wrapper is None:
 | 
			
		||||
            # e.g. double clicking on a destination header
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        for row in range(1, self.tblParameters.rowCount()):
 | 
			
		||||
            self.wrappers[row][column].setValue(wrapper.value())
 | 
			
		||||
            self.wrappers[row][column].setParameterValue(wrapper.value(), context)
 | 
			
		||||
 | 
			
		||||
    def toggleAdvancedMode(self, checked):
 | 
			
		||||
        for column, param in enumerate(self.alg.parameterDefinitions()):
 | 
			
		||||
 | 
			
		||||
@ -1286,7 +1286,7 @@ class StringWidgetWrapper(WidgetWrapper):
 | 
			
		||||
                self.setComboValue(value)
 | 
			
		||||
 | 
			
		||||
    def value(self):
 | 
			
		||||
        if self.dialogType in DIALOG_STANDARD:
 | 
			
		||||
        if self.dialogType == DIALOG_STANDARD:
 | 
			
		||||
            if self.parameterDefinition().multiLine():
 | 
			
		||||
                text = self.widget.toPlainText()
 | 
			
		||||
            else:
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user