GRASS Programmer's Manual  6.4.2(2012)
debug.py
Go to the documentation of this file.
00001 """!
00002 @package debug
00003 
00004 @brief Debugging
00005 
00006 Classes:
00007  - DebugMsg
00008 
00009 @code
00010 from debug import Debug as Debug
00011 Debug.msg (3, 'debug message')
00012 @endcode
00013          
00014 COPYRIGHT: (C) 2007-2009, 2011 by the GRASS Development Team
00015 This program is free software under the GNU General Public License
00016 (>=v2). Read the file COPYING that comes with GRASS for details.
00017 
00018 @author Martin Landa <landa.martin gmail.com>
00019 """
00020 
00021 import os
00022 import sys
00023 
00024 import globalvar
00025 
00026 import grass.script as grass
00027 
00028 class DebugMsg:
00029     """!wxGUI debugging
00030 
00031     @code
00032     g.gisenv set=WX_DEBUG=[0-5]
00033     @endcode
00034     """
00035     def __init__(self):
00036         # default level
00037         self.debuglevel = 0
00038         
00039         self.SetLevel()
00040 
00041     def SetLevel(self):
00042         """!Initialize gui debug level
00043         """
00044         self.debuglevel = int(grass.gisenv().get('WX_DEBUG', 0))
00045         
00046     def msg(self, level, message, *args):
00047         """!Print debug message
00048 
00049         @param level debug level (0-5)
00050         @param message message to be printed
00051         @param *args formatting params
00052         """
00053         # self.SetLevel()
00054         if self.debuglevel > 0 and level > 0 and level <= self.debuglevel:
00055             if args:
00056                 sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + \
00057                     message % args + os.linesep)
00058             else:
00059                 sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + \
00060                                      message + os.linesep)
00061             sys.stderr.flush() # force flush (required for MS Windows)
00062         
00063     def GetLevel(self):
00064         """!Return current GUI debug level"""
00065         return self.debuglevel
00066 
00067 # Debug instance
00068 Debug = DebugMsg()
00069 
00070 # testing
00071 if __name__ == "__main__":
00072     import gcmd
00073     gcmd.RunCommand('g.gisenv',
00074                     set = 'DEBUG=3')
00075                 
00076     for level in range (4):
00077         Debug.msg (level, "message level=%d" % level)
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines