Fix showing gdal command in algorithm dialog

This commit is contained in:
Nyall Dawson 2017-08-14 05:19:29 +10:00
parent 3d3d2975a4
commit ba6e2dc940
3 changed files with 13 additions and 7 deletions

View File

@ -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("")

View File

@ -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):

View File

@ -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