فهرست منبع

fix pythonlib and GUI when debug/wx_debug value is invalid (do not fail, just print warning message)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@67609 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 9 سال پیش
والد
کامیت
8dd743772a
3فایلهای تغییر یافته به همراه18 افزوده شده و 5 حذف شده
  1. 7 1
      gui/wxpython/core/debug.py
  2. 1 1
      gui/wxpython/core/gconsole.py
  3. 10 3
      lib/python/script/core.py

+ 7 - 1
gui/wxpython/core/debug.py

@@ -39,7 +39,13 @@ class DebugMsg:
     def SetLevel(self):
         """Initialize gui debug level
         """
-        self.debuglevel = int(grass.gisenv().get('WX_DEBUG', 0))
+        try:
+            self.debuglevel = int(grass.gisenv().get('WX_DEBUG', 0))
+            if self.debuglevel < 0 or self.debuglevel > 5:
+                raise ValueError(_("Wx debug level {}.").format(self.debuglevel))
+        except ValueError as e:
+            self.debuglevel = 0
+            sys.stderr.write(_("WARNING: Ignoring unsupported wx debug level (must be >=0 and <=5). {}\n").format(e))
         
     def msg(self, level, message, *args):
         """Print debug message

+ 1 - 1
gui/wxpython/core/gconsole.py

@@ -381,7 +381,7 @@ class GConsole(wx.EvtHandler):
     def Redirect(self):
         """Redirect stdout/stderr
         """
-        if Debug.GetLevel() == 0 and int(grass.gisenv().get('DEBUG', 0)) == 0:
+        if Debug.GetLevel() == 0 and grass.debug_level(force=True) == 0:
             # don't redirect when debugging is enabled
             sys.stdout = self.cmdStdOut
             sys.stderr = self.cmdStdErr

+ 10 - 3
lib/python/script/core.py

@@ -1525,13 +1525,20 @@ def version():
 _debug_level = None
 
 
-def debug_level():
+def debug_level(force=False):
     global _debug_level
-    if _debug_level is not None:
+    if not force and _debug_level is not None:
         return _debug_level
     _debug_level = 0
     if find_program('g.gisenv', '--help'):
-        _debug_level = int(gisenv().get('DEBUG', 0))
+        try:
+            _debug_level = int(gisenv().get('DEBUG', 0))
+            if _debug_level < 0 or _debug_level > 5:
+                raise ValueError(_("Debug level {}").format(_debug_level))
+        except ValueError as e:
+            _debug_level = 0
+            sys.stderr.write(_("WARNING: Ignoring unsupported debug level (must be >=0 and <=5). {}\n").format(e))
+            
     return _debug_level