debug.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. """!
  2. @package core.debug
  3. @brief wxGUI debugging
  4. Classes:
  5. - debug::DebugMsg
  6. @code
  7. from core.debug import Debug
  8. Debug.msg (3, 'debug message')
  9. @endcode
  10. (C) 2007-2009, 2011-2012 by the GRASS Development Team
  11. This program is free software under the GNU General Public License
  12. (>=v2). Read the file COPYING that comes with GRASS for details.
  13. @author Martin Landa <landa.martin gmail.com>
  14. """
  15. import os
  16. import sys
  17. class DebugMsg:
  18. """!wxGUI debugging
  19. @code
  20. g.gisenv set=WX_DEBUG=[0-5]
  21. @endcode
  22. """
  23. def __init__(self):
  24. self.SetLevel() # -> default debug level
  25. def SetLevel(self):
  26. """!Initialize gui debug level
  27. """
  28. try:
  29. import grass.script as grass
  30. except ImportError:
  31. self.debuglevel = 0
  32. return
  33. self.debuglevel = int(grass.gisenv().get('WX_DEBUG', 0))
  34. def msg(self, level, message, *args):
  35. """!Print debug message
  36. @param level debug level (0-5)
  37. @param message message to be printed
  38. @param *args formatting params
  39. """
  40. # self.SetLevel()
  41. if self.debuglevel > 0 and level > 0 and level <= self.debuglevel:
  42. if args:
  43. sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + \
  44. message % args + os.linesep)
  45. else:
  46. sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + \
  47. message + os.linesep)
  48. sys.stderr.flush() # force flush (required for MS Windows)
  49. def GetLevel(self):
  50. """!Return current GUI debug level"""
  51. return self.debuglevel
  52. # Debug instance
  53. Debug = DebugMsg()