diff --git a/python/plugins/processing/core/GeoAlgorithm.py b/python/plugins/processing/core/GeoAlgorithm.py index 3e1b6649639b..caee1ca25d12 100644 --- a/python/plugins/processing/core/GeoAlgorithm.py +++ b/python/plugins/processing/core/GeoAlgorithm.py @@ -246,6 +246,21 @@ def execute(self, progress=None, model=None): raise GeoAlgorithmExecutionException( str(e) + self.tr('\nSee log for more details')) + def _checkParameterValuesBeforeExecuting(self): + for param in self.parameters: + if isinstance(param, (ParameterRaster, ParameterVector, + ParameterMultipleInput)): + if param.value: + if isinstance(param, ParameterMultipleInput): + inputlayers = param.value.split(';') + else: + inputlayers = [param.value] + for inputlayer in inputlayers: + obj = dataobjects.getObjectFromUri(inputlayer) + if obj is None: + return "Wrong parameter value: " + param.value + return self.checkParameterValuesBeforeExecuting() + def runPostExecutionScript(self, progress): scriptFile = ProcessingConfig.getSetting( ProcessingConfig.POST_EXECUTION_SCRIPT) diff --git a/python/plugins/processing/core/Processing.py b/python/plugins/processing/core/Processing.py index 1c9f7d31a7ea..e68d8f920c7c 100644 --- a/python/plugins/processing/core/Processing.py +++ b/python/plugins/processing/core/Processing.py @@ -327,7 +327,7 @@ def runAlgorithm(algOrName, onFinish, *args): return i = i + 1 - msg = alg.checkParameterValuesBeforeExecuting() + msg = alg._checkParameterValuesBeforeExecuting() if msg: print 'Unable to execute algorithm\n' + msg return diff --git a/python/plugins/processing/gui/AlgorithmDialog.py b/python/plugins/processing/gui/AlgorithmDialog.py index 5c67b7908a79..e1ae8d5056c8 100644 --- a/python/plugins/processing/gui/AlgorithmDialog.py +++ b/python/plugins/processing/gui/AlgorithmDialog.py @@ -156,7 +156,7 @@ def accept(self): QMessageBox.No) if reply == QMessageBox.No: return - msg = self.alg.checkParameterValuesBeforeExecuting() + msg = self.alg._checkParameterValuesBeforeExecuting() if msg: QMessageBox.warning( self, self.tr('Unable to execute algorithm'), msg)