diff --git a/python/plugins/processing/algs/gdal/GdalAlgorithmDialog.py b/python/plugins/processing/algs/gdal/GdalAlgorithmDialog.py index ce56c8205d5..8575ec8cb9a 100644 --- a/python/plugins/processing/algs/gdal/GdalAlgorithmDialog.py +++ b/python/plugins/processing/algs/gdal/GdalAlgorithmDialog.py @@ -37,6 +37,7 @@ from qgis.PyQt.QtWidgets import (QWidget, QSizePolicy, QDialogButtonBox) +from qgis.core import QgsProcessingFeedback from qgis.gui import QgsMessageBar from processing.gui.AlgorithmDialog import AlgorithmDialog @@ -44,6 +45,7 @@ from processing.gui.AlgorithmDialogBase import AlgorithmDialogBase from processing.gui.ParametersPanel import ParametersPanel from processing.gui.MultipleInputPanel import MultipleInputPanel from processing.gui.NumberInputPanel import NumberInputPanel +from processing.tools.dataobjects import createContext class GdalAlgorithmDialog(AlgorithmDialog): @@ -102,15 +104,15 @@ class GdalParametersPanel(ParametersPanel): w.hasChanged.connect(self.parametersHaveChanged) def parametersHaveChanged(self): + context = createContext() + feedback = QgsProcessingFeedback() try: parameters = self.parent.getParamValues() for output in self.alg.destinationParameterDefinitions(): - if parameters[output.name()] is None: + if not output.name() in parameters or parameters[output.name()] is None: parameters[output.name()] = self.tr("[temporary file]") - commands = self.alg.getConsoleCommands(parameters) + commands = self.alg.getConsoleCommands(parameters, context, feedback) commands = [c for c in commands if c not in ['cmd.exe', '/C ']] self.text.setPlainText(" ".join(commands)) except AlgorithmDialogBase.InvalidParameterValue as e: self.text.setPlainText(self.tr("Invalid value for parameter '{0}'").format(e.parameter.description())) - except: - self.text.setPlainText("") diff --git a/python/plugins/processing/algs/gdal/GdalUtils.py b/python/plugins/processing/algs/gdal/GdalUtils.py index 053efe6015b..f5e5923ca7a 100755 --- a/python/plugins/processing/algs/gdal/GdalUtils.py +++ b/python/plugins/processing/algs/gdal/GdalUtils.py @@ -198,7 +198,8 @@ class GdalUtils(object): + '"' else: escaped = s - joined += escaped + ' ' + if escaped is not None: + joined += escaped + ' ' return joined.strip() @staticmethod @@ -245,7 +246,7 @@ class GdalUtils(object): if layer is None: path, ext = os.path.splitext(uri) format = QgsVectorFileWriter.driverForExtension(ext) - return '"' + uri + '"', format + return '"' + uri + '"', '"' + format + '"' provider = layer.dataProvider().name() if provider == 'spatialite': @@ -317,7 +318,7 @@ class GdalUtils(object): path, ext = os.path.splitext(ogrstr) format = QgsVectorFileWriter.driverForExtension(ext) - return '"' + ogrstr + '"', format + return '"' + ogrstr + '"', '"' + format + '"' @staticmethod def ogrLayerName(uri): diff --git a/python/plugins/processing/gui/AlgorithmDialog.py b/python/plugins/processing/gui/AlgorithmDialog.py index 3b9a32ea30d..9d21a1fd6ad 100644 --- a/python/plugins/processing/gui/AlgorithmDialog.py +++ b/python/plugins/processing/gui/AlgorithmDialog.py @@ -93,6 +93,9 @@ class AlgorithmDialog(AlgorithmDialogBase): def getParamValues(self): parameters = {} + if not hasattr(self, 'mainWidget') or self.mainWidget is None: + return parameters + for param in self.alg.parameterDefinitions(): if param.flags() & QgsProcessingParameterDefinition.FlagHidden: continue