debug.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. @code
  21. g.gisenv set=WX_DEBUG=[0-5]
  22. @endcode
  23. """
  24. def __init__(self):
  25. # default level
  26. self.debuglevel = 0
  27. self.SetLevel()
  28. def SetLevel(self):
  29. """!Initialize gui debug level
  30. """
  31. self.debuglevel = int(grass.gisenv().get('WX_DEBUG', 0))
  32. def msg(self, level, message, *args):
  33. """!Print debug message
  34. @param level debug level (0-5)
  35. @param message message to be printed
  36. @param *args formatting params
  37. """
  38. # self.SetLevel()
  39. if self.debuglevel > 0 and level > 0 and level <= self.debuglevel:
  40. if args:
  41. sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + \
  42. message % args + os.linesep)
  43. else:
  44. sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + \
  45. message + os.linesep)
  46. sys.stderr.flush() # force flush (required for MS Windows)
  47. def GetLevel(self):
  48. """!Return current GUI debug level"""
  49. return self.debuglevel
  50. # Debug instance
  51. Debug = DebugMsg()
  52. # testing
  53. if __name__ == "__main__":
  54. from core import cmd as gcmd
  55. gcmd.RunCommand('g.gisenv',
  56. set = 'DEBUG=3')
  57. for level in range (4):
  58. Debug.msg (level, "message level=%d" % level)