Skip to content

Commit

Permalink
[Processing] Improve the robustness of models when the parameters in …
Browse files Browse the repository at this point in the history
…the included algorithms change
  • Loading branch information
radosuav committed Mar 25, 2015
1 parent 7019db8 commit d1985b3
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
10 changes: 9 additions & 1 deletion python/plugins/processing/modeler/ModelerAlgorithm.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
from PyQt4.QtCore import QCoreApplication, QPointF
from PyQt4.QtGui import QIcon
from qgis.core import QgsRasterLayer, QgsVectorLayer
from qgis.gui import QgsMessageBar
from qgis.utils import iface
from processing.core.GeoAlgorithm import GeoAlgorithm
from processing.modeler.WrongModelException import WrongModelException
from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
Expand Down Expand Up @@ -332,7 +334,13 @@ def prepareAlgorithm(self, alg):
algInstance = alg.algorithm
for param in algInstance.parameters:
if not param.hidden:
value = self.resolveValue(alg.params[param.name])
if param.name in alg.params:
value = self.resolveValue(alg.params[param.name])
else:
iface.messageBar().pushMessage(self.tr("Warning"),
self.tr("Parameter %s in algorithm %s in the model is run with default value! Edit the model to make sure that this is correct." % (param.name, alg.name)),
QgsMessageBar.WARNING, 4)
value = None
if value is None and isinstance(param, ParameterExtent):
value = self.getMinCoveringExtent()
# We allow unexistent filepaths, since that allows
Expand Down
5 changes: 4 additions & 1 deletion python/plugins/processing/modeler/ModelerParametersDialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,10 @@ def setPreviousValues(self):
if param.hidden:
continue
widget = self.valueItems[param.name]
value = alg.params[param.name]
if param.name in alg.params:
value = alg.params[param.name]
else:
value = None
if isinstance(param, (
ParameterRaster,
ParameterVector,
Expand Down
5 changes: 4 additions & 1 deletion python/plugins/processing/modeler/ModelerScene.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,10 @@ def paintModel(self, model):
idx = 0
for parameter in alg.algorithm.parameters:
if not parameter.hidden:
value = alg.params[parameter.name]
if parameter.name in alg.params:
value = alg.params[parameter.name]
else:
value = None
sourceItems = self.getItemsFromParamValue(value)
for sourceItem, sourceIdx in sourceItems:
arrow = ModelerArrowItem(sourceItem, sourceIdx, self.algItems[alg.name], idx)
Expand Down

0 comments on commit d1985b3

Please sign in to comment.