def setParamValues(self): params = self.alg.parameters outputs = self.alg.outputs for param in params: if param.hidden: continue if isinstance(param, ParameterExtent): continue if not self.setParamValue(param, self.mainWidget.valueItems[param.name]): raise AlgorithmDialogBase.InvalidParameterValue( param, self.mainWidget.valueItems[param.name]) for param in params: if isinstance(param, ParameterExtent): if not self.setParamValue( param, self.mainWidget.valueItems[param.name]): raise AlgorithmDialogBase.InvalidParameterValue( param, self.mainWidget.valueItems[param.name]) for output in outputs: if output.hidden: continue output.value = self.mainWidget.valueItems[output.name].getValue() if isinstance(output, (OutputRaster, OutputVector, OutputTable)): output.open = self.mainWidget.checkBoxes[ output.name].isChecked() return True
def getParameterValues(self): parameters = {} if self.mainWidget() is None: return parameters for param in self.algorithm().parameterDefinitions(): if param.flags() & QgsProcessingParameterDefinition.FlagHidden: continue if not param.isDestination(): wrapper = self.mainWidget().wrappers[param.name()] value = None if wrapper.widget: value = wrapper.value() parameters[param.name()] = value if not param.checkValueIsAcceptable(value): raise AlgorithmDialogBase.InvalidParameterValue(param, wrapper.widget) else: dest_project = None if not param.flags() & QgsProcessingParameterDefinition.FlagHidden and \ isinstance(param, (QgsProcessingParameterRasterDestination, QgsProcessingParameterFeatureSink, QgsProcessingParameterVectorDestination)): if self.mainWidget().checkBoxes[param.name()].isChecked(): dest_project = QgsProject.instance() value = self.mainWidget().outputWidgets[param.name()].getValue() if value and isinstance(value, QgsProcessingOutputLayerDefinition): value.destinationProject = dest_project if value: parameters[param.name()] = value return self.algorithm().preprocessParameters(parameters)
def getParameterValues(self): parameters = {} if self.mainWidget() is None: return parameters for param in self.algorithm().parameterDefinitions(): if param.flags() & QgsProcessingParameterDefinition.FlagHidden: continue if not param.isDestination(): if self.in_place and param.name() == 'INPUT': parameters[param.name()] = self.active_layer continue try: wrapper = self.mainWidget().wrappers[param.name()] except KeyError: continue # 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() if widget is None: continue value = wrapper.parameterValue() parameters[param.name()] = value if not param.checkValueIsAcceptable(value): raise AlgorithmDialogBase.InvalidParameterValue( param, widget) else: if self.in_place and param.name() == 'OUTPUT': parameters[param.name()] = 'memory:' continue dest_project = None if not param.flags() & QgsProcessingParameterDefinition.FlagHidden and \ isinstance(param, (QgsProcessingParameterRasterDestination, QgsProcessingParameterFeatureSink, QgsProcessingParameterVectorDestination)): if self.mainWidget().checkBoxes[param.name()].isChecked(): dest_project = QgsProject.instance() value = self.mainWidget().outputWidgets[ param.name()].getValue() if value and isinstance(value, QgsProcessingOutputLayerDefinition): value.destinationProject = dest_project if value: parameters[param.name()] = value return self.algorithm().preprocessParameters(parameters)
def createProcessingParameters(self, include_default=True): parameters = {} for p, v in self.extra_parameters.items(): parameters[p] = v for param in self.algorithm().parameterDefinitions(): if param.flags() & QgsProcessingParameterDefinition.FlagHidden: continue if not param.isDestination(): try: wrapper = self.wrappers[param.name()] except KeyError: continue # 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() if not isinstance( wrapper, QgsProcessingHiddenWidgetWrapper) and widget is None: continue value = wrapper.parameterValue() if param.defaultValue() != value or include_default: parameters[param.name()] = value if not param.checkValueIsAcceptable(value): raise AlgorithmDialogBase.InvalidParameterValue( param, widget) else: if self.in_place and param.name() == 'OUTPUT': parameters[param.name()] = 'memory:' continue try: wrapper = self.wrappers[param.name()] except KeyError: continue widget = wrapper.wrappedWidget() value = wrapper.parameterValue() dest_project = None if wrapper.customProperties().get('OPEN_AFTER_RUNNING'): dest_project = QgsProject.instance() if value and isinstance(value, QgsProcessingOutputLayerDefinition): value.destinationProject = dest_project if value and (param.defaultValue() != value or include_default): parameters[param.name()] = value context = createContext() ok, error = param.isSupportedOutputValue(value, context) if not ok: raise AlgorithmDialogBase.InvalidOutputExtension( widget, error) return self.algorithm().preprocessParameters(parameters)