1""" 2@package core.debug 3 4@brief wxGUI debugging 5 6Classes: 7 - debug::DebugMsg 8 9@code 10from core.debug import Debug 11Debug.msg (3, 'debug message') 12@endcode 13 14(C) 2007-2009, 2011 by the GRASS Development Team 15 16This program is free software under the GNU General Public License 17(>=v2). Read the file COPYING that comes with GRASS for details. 18 19@author Martin Landa <landa.martin gmail.com> 20""" 21 22import os 23import sys 24 25import grass.script as grass 26 27 28class DebugMsg: 29 """wxGUI debugging 30 31 g.gisenv set=WX_DEBUG=[0-5] 32 33 """ 34 35 def __init__(self): 36 # default level 37 self.debuglevel = 0 38 39 self.SetLevel() 40 41 def SetLevel(self): 42 """Initialize gui debug level 43 """ 44 try: 45 self.debuglevel = int(grass.gisenv().get('WX_DEBUG', 0)) 46 if self.debuglevel < 0 or self.debuglevel > 5: 47 raise ValueError( 48 _("Wx debug level {0}.").format( 49 self.debuglevel)) 50 except ValueError as e: 51 self.debuglevel = 0 52 sys.stderr.write( 53 _("WARNING: Ignoring unsupported wx debug level (must be >=0 and <=5). {0}\n").format(e)) 54 55 def msg(self, level, message, *args): 56 """Print debug message 57 58 :param level: debug level (0-5) 59 :param message: message to be printed 60 :param args: formatting params 61 """ 62 # self.SetLevel() 63 if self.debuglevel > 0 and level > 0 and level <= self.debuglevel: 64 if args: 65 sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + 66 message % args + os.linesep) 67 else: 68 sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + 69 message + os.linesep) 70 sys.stderr.flush() # force flush (required for MS Windows) 71 72 def GetLevel(self): 73 """Return current GUI debug level""" 74 return self.debuglevel 75 76# Debug instance 77Debug = DebugMsg() 78