Fix console detection failing on windows

This commit is contained in:
Kovid Goyal 2017-05-10 22:36:07 +05:30
parent 71c1232fa4
commit f75d939672
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -28,6 +28,7 @@ if iswindows:
def fmt(code): def fmt(code):
return ('\033[%dm'%code).encode('ascii') return ('\033[%dm'%code).encode('ascii')
RATTRIBUTES = dict( RATTRIBUTES = dict(
izip(xrange(1, 9), ( izip(xrange(1, 9), (
'bold', 'bold',
@ -126,7 +127,7 @@ class Detect(object):
if f(self.file_handle, byref(mode)): if f(self.file_handle, byref(mode)):
# Stream is a console # Stream is a console
self.set_console = windll.kernel32.SetConsoleTextAttribute self.set_console = windll.kernel32.SetConsoleTextAttribute
kernel32 = WinDLL('kernel32', use_last_error=True) kernel32 = WinDLL(b'kernel32', use_last_error=True)
self.write_console = kernel32.WriteConsoleW self.write_console = kernel32.WriteConsoleW
self.write_console.argtypes = [wintypes.HANDLE, wintypes.c_wchar_p, wintypes.DWORD, POINTER(wintypes.DWORD), wintypes.LPVOID] self.write_console.argtypes = [wintypes.HANDLE, wintypes.c_wchar_p, wintypes.DWORD, POINTER(wintypes.DWORD), wintypes.LPVOID]
self.write_console.restype = wintypes.BOOL self.write_console.restype = wintypes.BOOL
@ -180,7 +181,7 @@ class Detect(object):
class ColoredStream(Detect): class ColoredStream(Detect):
def __init__(self, stream=None, fg=None, bg=None, bold=False): def __init__(self, stream=None, fg=None, bg=None, bold=False):
super(ColoredStream, self).__init__(stream) Detect.__init__(self, stream)
self.fg, self.bg, self.bold = fg, bg, bold self.fg, self.bg, self.bold = fg, bg, bold
if self.set_console is not None: if self.set_console is not None:
self.wval = to_flag(self.fg, self.bg, bold) self.wval = to_flag(self.fg, self.bg, bold)
@ -402,4 +403,3 @@ def test():
print() print()
s.write_unicode_text(u) s.write_unicode_text(u)
print() print()