Bläddra i källkod

wxGUI/vdigit: more detailed error message when action fails

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@49167 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 13 år sedan
förälder
incheckning
3de8547c87
2 ändrade filer med 20 tillägg och 5 borttagningar
  1. 3 2
      gui/wxpython/gui_modules/wxvdigit.py
  2. 17 3
      gui/wxpython/gui_modules/wxvdriver.py

+ 3 - 2
gui/wxpython/gui_modules/wxvdigit.py

@@ -29,7 +29,7 @@ from gcmd        import GError
 from debug       import Debug
 from preferences import globalSettings as UserSettings
 
-from wxvdriver   import DisplayDriver
+from wxvdriver   import DisplayDriver, GetLastError
 
 from grass.lib.gis    import *
 from grass.lib.vector import *
@@ -61,7 +61,8 @@ class VDigitError:
         """!Writing line failed
         """
         GError(message = _('Writing new feature failed. '
-                           'Operation cancelled.'),
+                           'Operation cancelled.\n\n'
+                           'Reason: %s') % GetLastError(),
                parent  = self.parent,
                caption = self.caption)
 

+ 17 - 3
gui/wxpython/gui_modules/wxvdriver.py

@@ -29,8 +29,9 @@ from grass.lib.gis    import *
 from grass.lib.vector import *
 from grass.lib.vedit  import *
 
-log      = None
-progress = None
+log       = None
+progress  = None
+last_error = ''
 
 def print_error(msg, type):
     """!Redirect stderr"""
@@ -39,7 +40,9 @@ def print_error(msg, type):
         log.write(msg)
     else:
         print msg
-    
+    global last_error
+    last_error += ' ' + msg
+
     return 0
 
 def print_progress(value):
@@ -52,6 +55,16 @@ def print_progress(value):
     
     return 0
 
+def GetLastError():
+    global last_error
+    ret = last_error
+    if ret[-1] != '.':
+        ret += '.'
+    
+    last_error = '' # reset
+    
+    return ret
+
 errtype = CFUNCTYPE(UNCHECKED(c_int), String, c_int)
 errfunc = errtype(print_error)
 pertype = CFUNCTYPE(UNCHECKED(c_int), c_int)
@@ -76,6 +89,7 @@ class DisplayDriver:
         locale.setlocale(locale.LC_NUMERIC, 'C')
         G_set_error_routine(errfunc) 
         G_set_percent_routine(perfunc)
+        # G_set_fatal_error(FATAL_RETURN)
         
         self.mapInfo   = None     # open vector map (Map_Info structure)
         self.poMapInfo = None     # pointer to self.mapInfo