debug.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 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. import grass.script as grass
  18. class DebugMsg:
  19. """wxGUI debugging
  20. g.gisenv set=WX_DEBUG=[0-5]
  21. """
  22. def __init__(self):
  23. # default level
  24. self.debuglevel = 0
  25. self.SetLevel()
  26. def SetLevel(self):
  27. """Initialize gui debug level"""
  28. try:
  29. self.debuglevel = int(grass.gisenv().get("WX_DEBUG", 0))
  30. if self.debuglevel < 0 or self.debuglevel > 5:
  31. raise ValueError(_("Wx debug level {0}.").format(self.debuglevel))
  32. except ValueError as e:
  33. self.debuglevel = 0
  34. sys.stderr.write(
  35. _(
  36. "WARNING: Ignoring unsupported wx debug level (must be >=0 and <=5). {0}\n"
  37. ).format(e)
  38. )
  39. def msg(self, level, message, *args):
  40. """Print debug message
  41. :param level: debug level (0-5)
  42. :param message: message to be printed
  43. :param args: formatting params
  44. """
  45. # self.SetLevel()
  46. if self.debuglevel > 0 and level > 0 and level <= self.debuglevel:
  47. if args:
  48. sys.stderr.write(
  49. "GUI D%d/%d: " % (level, self.debuglevel)
  50. + message % args
  51. + os.linesep
  52. )
  53. else:
  54. sys.stderr.write(
  55. "GUI D%d/%d: " % (level, self.debuglevel) + message + os.linesep
  56. )
  57. sys.stderr.flush() # force flush (required for MS Windows)
  58. def GetLevel(self):
  59. """Return current GUI debug level"""
  60. return self.debuglevel
  61. # Debug instance
  62. Debug = DebugMsg()