terminalwriter: move Win32ConsoleWriter definition under win32 conditional
This way non-Windows platforms skip it. It also uses things defined inside the `if`.
This commit is contained in:
		
							parent
							
								
									5e2d820308
								
							
						
					
					
						commit
						1d596b27a7
					
				| 
						 | 
					@ -300,40 +300,6 @@ class TerminalWriter:
 | 
				
			||||||
            self.write(" " * diff2last)
 | 
					            self.write(" " * diff2last)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Win32ConsoleWriter(TerminalWriter):
 | 
					 | 
				
			||||||
    def write(self, msg, **kw):
 | 
					 | 
				
			||||||
        if msg:
 | 
					 | 
				
			||||||
            if not isinstance(msg, (bytes, str)):
 | 
					 | 
				
			||||||
                msg = str(msg)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            self._update_chars_on_current_line(msg)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            oldcolors = None
 | 
					 | 
				
			||||||
            if self.hasmarkup and kw:
 | 
					 | 
				
			||||||
                handle = GetStdHandle(STD_OUTPUT_HANDLE)
 | 
					 | 
				
			||||||
                oldcolors = GetConsoleInfo(handle).wAttributes
 | 
					 | 
				
			||||||
                default_bg = oldcolors & 0x00F0
 | 
					 | 
				
			||||||
                attr = default_bg
 | 
					 | 
				
			||||||
                if kw.pop("bold", False):
 | 
					 | 
				
			||||||
                    attr |= FOREGROUND_INTENSITY
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if kw.pop("red", False):
 | 
					 | 
				
			||||||
                    attr |= FOREGROUND_RED
 | 
					 | 
				
			||||||
                elif kw.pop("blue", False):
 | 
					 | 
				
			||||||
                    attr |= FOREGROUND_BLUE
 | 
					 | 
				
			||||||
                elif kw.pop("green", False):
 | 
					 | 
				
			||||||
                    attr |= FOREGROUND_GREEN
 | 
					 | 
				
			||||||
                elif kw.pop("yellow", False):
 | 
					 | 
				
			||||||
                    attr |= FOREGROUND_GREEN | FOREGROUND_RED
 | 
					 | 
				
			||||||
                else:
 | 
					 | 
				
			||||||
                    attr |= oldcolors & 0x0007
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                SetConsoleTextAttribute(handle, attr)
 | 
					 | 
				
			||||||
            write_out(self._file, msg)
 | 
					 | 
				
			||||||
            if oldcolors:
 | 
					 | 
				
			||||||
                SetConsoleTextAttribute(handle, oldcolors)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class WriteFile:
 | 
					class WriteFile:
 | 
				
			||||||
    def __init__(self, writemethod, encoding=None):
 | 
					    def __init__(self, writemethod, encoding=None):
 | 
				
			||||||
        self.encoding = encoding
 | 
					        self.encoding = encoding
 | 
				
			||||||
| 
						 | 
					@ -353,6 +319,39 @@ if win32_and_ctypes:
 | 
				
			||||||
    from ctypes import wintypes
 | 
					    from ctypes import wintypes
 | 
				
			||||||
    from ctypes import windll  # type: ignore[attr-defined] # noqa: F821
 | 
					    from ctypes import windll  # type: ignore[attr-defined] # noqa: F821
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Win32ConsoleWriter(TerminalWriter):
 | 
				
			||||||
 | 
					        def write(self, msg, **kw):
 | 
				
			||||||
 | 
					            if msg:
 | 
				
			||||||
 | 
					                if not isinstance(msg, (bytes, str)):
 | 
				
			||||||
 | 
					                    msg = str(msg)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                self._update_chars_on_current_line(msg)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                oldcolors = None
 | 
				
			||||||
 | 
					                if self.hasmarkup and kw:
 | 
				
			||||||
 | 
					                    handle = GetStdHandle(STD_OUTPUT_HANDLE)
 | 
				
			||||||
 | 
					                    oldcolors = GetConsoleInfo(handle).wAttributes
 | 
				
			||||||
 | 
					                    default_bg = oldcolors & 0x00F0
 | 
				
			||||||
 | 
					                    attr = default_bg
 | 
				
			||||||
 | 
					                    if kw.pop("bold", False):
 | 
				
			||||||
 | 
					                        attr |= FOREGROUND_INTENSITY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if kw.pop("red", False):
 | 
				
			||||||
 | 
					                        attr |= FOREGROUND_RED
 | 
				
			||||||
 | 
					                    elif kw.pop("blue", False):
 | 
				
			||||||
 | 
					                        attr |= FOREGROUND_BLUE
 | 
				
			||||||
 | 
					                    elif kw.pop("green", False):
 | 
				
			||||||
 | 
					                        attr |= FOREGROUND_GREEN
 | 
				
			||||||
 | 
					                    elif kw.pop("yellow", False):
 | 
				
			||||||
 | 
					                        attr |= FOREGROUND_GREEN | FOREGROUND_RED
 | 
				
			||||||
 | 
					                    else:
 | 
				
			||||||
 | 
					                        attr |= oldcolors & 0x0007
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    SetConsoleTextAttribute(handle, attr)
 | 
				
			||||||
 | 
					                write_out(self._file, msg)
 | 
				
			||||||
 | 
					                if oldcolors:
 | 
				
			||||||
 | 
					                    SetConsoleTextAttribute(handle, oldcolors)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TerminalWriter = Win32ConsoleWriter  # type: ignore[misc] # noqa: F821
 | 
					    TerminalWriter = Win32ConsoleWriter  # type: ignore[misc] # noqa: F821
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # ctypes access to the Windows console
 | 
					    # ctypes access to the Windows console
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue