home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 October / maximum-cd-2011-10.iso / DiscContents / digsby_setup.exe / lib / gui / native / win / console.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-06-22  |  2.7 KB  |  96 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import contextlib
  5. import ctypes
  6. from ctypes import byref
  7. from ctypes.wintypes import SHORT, WORD
  8. STD_INPUT_HANDLE = -10
  9. STD_OUTPUT_HANDLE = -11
  10. STD_ERROR_HANDLE = -12
  11. FOREGROUND_BLUE = 1
  12. FOREGROUND_GREEN = 2
  13. FOREGROUND_RED = 4
  14. FOREGROUND_INTENSITY = 8
  15. BACKGROUND_BLUE = 16
  16. BACKGROUND_GREEN = 32
  17. BACKGROUND_RED = 64
  18. BACKGROUND_INTENSITY = 128
  19. kernel32 = ctypes.windll.kernel32
  20. SetConsoleTextAttribute = kernel32.SetConsoleTextAttribute
  21. GetConsoleScreenBufferInfo = kernel32.GetConsoleScreenBufferInfo
  22. std_out_handle = kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
  23.  
  24. class COORD(ctypes.Structure):
  25.     _fields_ = [
  26.         ('X', SHORT),
  27.         ('Y', SHORT)]
  28.  
  29.  
  30. class SMALL_RECT(ctypes.Structure):
  31.     _fields_ = [
  32.         ('Left', SHORT),
  33.         ('Top', SHORT),
  34.         ('Right', SHORT),
  35.         ('Bottom', SHORT)]
  36.  
  37.  
  38. class CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure):
  39.     _fields_ = [
  40.         ('dwSize', COORD),
  41.         ('dwCursorPosition', COORD),
  42.         ('wAttributes', WORD),
  43.         ('srWindow', SMALL_RECT),
  44.         ('dwMaximumWindowSize', COORD)]
  45.  
  46. screen_info = CONSOLE_SCREEN_BUFFER_INFO()
  47.  
  48. def set_color(color, handle = std_out_handle):
  49.     return SetConsoleTextAttribute(handle, color)
  50.  
  51. colormap = dict(grey = 8, white = 7, red = FOREGROUND_RED, green = FOREGROUND_GREEN, blue = FOREGROUND_BLUE, yellow = FOREGROUND_RED | FOREGROUND_GREEN, bold = FOREGROUND_INTENSITY)
  52.  
  53. def color(color):
  54.     color_int = 0
  55.     for c in color.split():
  56.         color_int |= colormap.get(c)
  57.     
  58.     GetConsoleScreenBufferInfo(std_out_handle, byref(screen_info))
  59.     set_color(color_int)
  60.     
  61.     try:
  62.         yield None
  63.     finally:
  64.         set_color(screen_info.wAttributes)
  65.  
  66.  
  67. color = contextlib.contextmanager(color)
  68.  
  69. def main():
  70.     color('bold red').__enter__()
  71.     
  72.     try:
  73.         print 'red'
  74.     finally:
  75.         pass
  76.  
  77.     color('grey').__enter__()
  78.     
  79.     try:
  80.         print 'grey'
  81.     finally:
  82.         pass
  83.  
  84.     color('white').__enter__()
  85.     
  86.     try:
  87.         print 'white'
  88.     finally:
  89.         pass
  90.  
  91.     print 'normal'
  92.  
  93. if __name__ == '__main__':
  94.     main()
  95.  
  96.