mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
|
|
from . import win32
|
|
|
|
|
|
# from wincon.h
|
|
class WinColor(object):
|
|
BLACK = 0
|
|
BLUE = 1
|
|
GREEN = 2
|
|
CYAN = 3
|
|
RED = 4
|
|
MAGENTA = 5
|
|
YELLOW = 6
|
|
GREY = 7
|
|
|
|
# from wincon.h
|
|
class WinStyle(object):
|
|
NORMAL = 0x00 # dim text, dim background
|
|
BRIGHT = 0x08 # bright text, dim background
|
|
|
|
|
|
class WinTerm(object):
|
|
|
|
def __init__(self):
|
|
self._default = \
|
|
win32.GetConsoleScreenBufferInfo(win32.STDOUT).wAttributes
|
|
self.set_attrs(self._default)
|
|
self._default_fore = self._fore
|
|
self._default_back = self._back
|
|
self._default_style = self._style
|
|
|
|
def get_attrs(self):
|
|
return self._fore + self._back * 16 + self._style
|
|
|
|
def set_attrs(self, value):
|
|
self._fore = value & 7
|
|
self._back = (value >> 4) & 7
|
|
self._style = value & WinStyle.BRIGHT
|
|
|
|
def reset_all(self, on_stderr=None):
|
|
self.set_attrs(self._default)
|
|
self.set_console(attrs=self._default)
|
|
|
|
def fore(self, fore=None, on_stderr=False):
|
|
if fore is None:
|
|
fore = self._default_fore
|
|
self._fore = fore
|
|
self.set_console(on_stderr=on_stderr)
|
|
|
|
def back(self, back=None, on_stderr=False):
|
|
if back is None:
|
|
back = self._default_back
|
|
self._back = back
|
|
self.set_console(on_stderr=on_stderr)
|
|
|
|
def style(self, style=None, on_stderr=False):
|
|
if style is None:
|
|
style = self._default_style
|
|
self._style = style
|
|
self.set_console(on_stderr=on_stderr)
|
|
|
|
def set_console(self, attrs=None, on_stderr=False):
|
|
if attrs is None:
|
|
attrs = self.get_attrs()
|
|
handle = win32.STDOUT
|
|
if on_stderr:
|
|
handle = win32.STDERR
|
|
win32.SetConsoleTextAttribute(handle, attrs)
|
|
|