Quellcode durchsuchen

wxGUI: skip map layers which failed to be rendered

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@65320 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa vor 10 Jahren
Ursprung
Commit
18874e6272
1 geänderte Dateien mit 15 neuen und 2 gelöschten Zeilen
  1. 15 2
      gui/wxpython/core/render.py

+ 15 - 2
gui/wxpython/core/render.py

@@ -36,6 +36,7 @@ from grass.script import core as grass
 from grass.script.utils import try_remove
 from grass.script.task import cmdlist_to_tuple, cmdtuple_to_list
 from grass.pydispatch.signal import Signal
+from grass.exceptions import CalledModuleError
 
 from core          import utils
 from core.utils import _
@@ -378,7 +379,10 @@ class RenderLayerMgr(wx.EvtHandler):
         self.layer.forceRender = False
 
     def _render(self, cmd, env):
-        return grass.run_command(cmd[0], env=env, **cmd[1])
+        try:
+            return grass.run_command(cmd[0], env=env, **cmd[1])
+        except CalledModuleError as e:
+            return 1
     
     def Abort(self):
         """Abort rendering process"""
@@ -399,6 +403,12 @@ class RenderLayerMgr(wx.EvtHandler):
         """
         Debug.msg(1, "RenderLayerMgr.OnRenderDone(%s): ret=%d time=%f" % \
                       (self.layer, event.ret, time.time() - self._startTime))
+        if event.ret != 0:
+            try:
+                os.remove(self.layer.mapfile)
+            except:
+                pass
+        
         self.updateProgress.emit(layer=self.layer)
         
 class RenderMapMgr(wx.EvtHandler):
@@ -516,7 +526,10 @@ class RenderMapMgr(wx.EvtHandler):
         opacities = list()
         
         for layer in self.layers:
-            if layer.GetType() != 'overlay':
+            if layer.GetType() == 'overlay':
+                continue
+
+            if os.path.isfile(layer.mapfile):
                 maps.append(layer.mapfile)
                 masks.append(layer.maskfile)
                 opacities.append(str(layer.opacity))