Skip to content

Commit b3b4101

Browse files
committed
Merge pull request #2804 from Gustry/processing-error
[Bugfix] [Processing] Catch some python errors in batch mode
2 parents 193fedf + 3039f13 commit b3b4101

File tree

2 files changed

+35
-24
lines changed

2 files changed

+35
-24
lines changed

python/plugins/processing/gui/BatchPanel.py

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
from PyQt4 import uic
3232
from PyQt4.QtGui import (QWidget, QIcon, QTableWidgetItem, QComboBox, QLineEdit,
33-
QHeaderView, QFileDialog)
33+
QHeaderView, QFileDialog, QMessageBox)
3434

3535
from qgis.core import QgsApplication
3636

@@ -184,30 +184,39 @@ def load(self):
184184
if filename:
185185
with open(filename) as f:
186186
values = json.load(f)
187+
else:
188+
# If the user clicked on the cancel button.
189+
return
187190

188191
self.tblParameters.setRowCount(0)
189-
for row, alg in enumerate(values):
190-
self.addRow()
191-
params = alg[self.PARAMETERS]
192-
outputs = alg[self.OUTPUTS]
193-
column = 0
194-
for param in self.alg.parameters:
195-
if param.hidden:
196-
continue
197-
widget = self.tblParameters.cellWidget(row, column)
198-
if param.name in params:
199-
value = params[param.name]
200-
self.setValueInWidget(widget, value)
201-
column += 1
202-
203-
for out in self.alg.outputs:
204-
if out.hidden:
205-
continue
206-
widget = self.tblParameters.cellWidget(row, column)
207-
if out.name in outputs:
208-
value = outputs[out.name]
209-
self.setValueInWidget(widget, value)
210-
column += 1
192+
try:
193+
for row, alg in enumerate(values):
194+
self.addRow()
195+
params = alg[self.PARAMETERS]
196+
outputs = alg[self.OUTPUTS]
197+
column = 0
198+
for param in self.alg.parameters:
199+
if param.hidden:
200+
continue
201+
widget = self.tblParameters.cellWidget(row, column)
202+
if param.name in params:
203+
value = params[param.name]
204+
self.setValueInWidget(widget, value)
205+
column += 1
206+
207+
for out in self.alg.outputs:
208+
if out.hidden:
209+
continue
210+
widget = self.tblParameters.cellWidget(row, column)
211+
if out.name in outputs:
212+
value = outputs[out.name]
213+
self.setValueInWidget(widget, value)
214+
column += 1
215+
except TypeError:
216+
QMessageBox.critical(
217+
self,
218+
self.tr('Error'),
219+
self.tr('An error occured while reading your file.'))
211220

212221
def setValueInWidget(self, widget, value):
213222
if isinstance(widget, (BatchInputSelectionPanel, QLineEdit, FileSelectionPanel)):

python/plugins/processing/modeler/ModelerAlgorithm.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,9 @@ def prepareAlgorithm(self, alg):
397397
if not param.setValue(value) and not isinstance(param,
398398
ParameterDataObject):
399399
raise GeoAlgorithmExecutionException(
400-
self.tr('Wrong value: %s', 'ModelerAlgorithm') % value)
400+
self.tr('Wrong value %s for %s %s', 'ModelerAlgorithm')
401+
% (value, param.__class__.__name__, param.name))
402+
401403
for out in algInstance.outputs:
402404
if not out.hidden:
403405
if out.name in alg.outputs:

0 commit comments

Comments
 (0)