Exemple #1
0
class _Win32Colorizer:
    """
    See _AnsiColorizer docstring.
    """

    def __init__(self, stream):
        from win32console import (  # type: ignore[import]
            FOREGROUND_BLUE,
            FOREGROUND_GREEN,
            FOREGROUND_INTENSITY,
            FOREGROUND_RED,
            STD_OUTPUT_HANDLE,
            GetStdHandle,
        )

        red, green, blue, bold = (
            FOREGROUND_RED,
            FOREGROUND_GREEN,
            FOREGROUND_BLUE,
            FOREGROUND_INTENSITY,
        )
        self.stream = stream
        self.screenBuffer = GetStdHandle(STD_OUTPUT_HANDLE)
        self._colors = {
            "normal": red | green | blue,
            "red": red | bold,
            "green": green | bold,
            "blue": blue | bold,
            "yellow": red | green | bold,
            "magenta": red | blue | bold,
            "cyan": green | blue | bold,
            "white": red | green | blue | bold,
        }

    @classmethod
    def supported(cls, stream=sys.stdout):
        try:
            import win32console

            screenBuffer = win32console.GetStdHandle(win32console.STD_OUTPUT_HANDLE)
        except ImportError:
            return False
        import pywintypes  # type: ignore[import]

        try:
            screenBuffer.SetConsoleTextAttribute(
                win32console.FOREGROUND_RED
                | win32console.FOREGROUND_GREEN
                | win32console.FOREGROUND_BLUE
            )
        except pywintypes.error:
            return False
        else:
            return True

    def write(self, text, color):
        color = self._colors[color]
        self.screenBuffer.SetConsoleTextAttribute(color)
        self.stream.write(text)
        self.screenBuffer.SetConsoleTextAttribute(self._colors["normal"])
Exemple #2
0
class _Win32Colorizer(object):
    """
    See _AnsiColorizer docstring.
    """
    def __init__(self, stream):
        from win32console import FOREGROUND_BLUE
        from win32console import FOREGROUND_GREEN
        from win32console import FOREGROUND_INTENSITY
        from win32console import FOREGROUND_RED
        from win32console import GetStdHandle
        from win32console import STD_OUT_HANDLE

        red, green, blue, bold = (FOREGROUND_RED, FOREGROUND_GREEN,
                                  FOREGROUND_BLUE, FOREGROUND_INTENSITY)
        self.stream = stream
        self.screenBuffer = GetStdHandle(STD_OUT_HANDLE)
        self._colors = {
            'normal': red | green | blue,
            'red': red | bold,
            'green': green | bold,
            'blue': blue | bold,
            'yellow': red | green | bold,
            'magenta': red | blue | bold,
            'cyan': green | blue | bold,
            'white': red | green | blue | bold
            }

    def supported(cls, stream=sys.stdout):
        try:
            import win32console
            screenBuffer = win32console.GetStdHandle(
                win32console.STD_OUT_HANDLE)
        except ImportError:
            return False
        import pywintypes
        try:
            screenBuffer.SetConsoleTextAttribute(
                win32console.FOREGROUND_RED |
                win32console.FOREGROUND_GREEN |
                win32console.FOREGROUND_BLUE)
        except pywintypes.error:
            return False
        else:
            return True
    supported = classmethod(supported)

    def write(self, text, color):
        color = self._colors[color]
        self.screenBuffer.SetConsoleTextAttribute(color)
        self.stream.write(text)
        self.screenBuffer.SetConsoleTextAttribute(self._colors['normal'])