Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1a11ea3
Conversion of Segments to legacy Windows API calls
darrenburns Mar 1, 2022
fe57132
Add None windll definition for mypy
darrenburns Mar 1, 2022
ffc5813
Attempting to appease mypy on non-Windows platforms
darrenburns Mar 1, 2022
fb227b8
Use type of Any for windll
darrenburns Mar 1, 2022
e384106
On legacy Windows, we sometimes still need ANSI output...
darrenburns Mar 1, 2022
78fc8d9
Only calling Windows legacy console API if Console.file is stdout
darrenburns Mar 1, 2022
1d38b45
Handling utf-8 error in check_buffer consistently across Windows & Unix
darrenburns Mar 1, 2022
6779e51
Don't default to outputting ANSI just because Console.record=True
darrenburns Mar 1, 2022
bb9ab3c
Merge branch 'master' of https://github.com/Textualize/rich into ansi…
darrenburns Mar 1, 2022
501dcbd
Add tests for LegacyWindowsTerm
darrenburns Mar 1, 2022
97d05f5
Fixing test module on non-Windows platforms
darrenburns Mar 1, 2022
7d08e0a
Fixing test module on non-Windows platforms
darrenburns Mar 1, 2022
151276b
Run legacy Windows tests on Windows only
darrenburns Mar 2, 2022
862416a
Fix typing issues
darrenburns Mar 2, 2022
7525377
Use Python 3.6 & 3.7 compatible means of acceessing mock call args/kw…
darrenburns Mar 2, 2022
80912a5
Update CHANGELOG.md
darrenburns Mar 2, 2022
28786c7
Merge branch 'ansi-to-win32' of https://github.com/Textualize/rich in…
darrenburns Mar 2, 2022
ceef724
Use Windows Console API to write text
darrenburns Mar 3, 2022
1122501
Use WriteConsoleW instead of file.write(...) in LegacyWindowsTerm
darrenburns Mar 3, 2022
d87498b
Use bitwise operators in LegacyWindowsTerm, fix formatting
darrenburns Mar 3, 2022
5a051f9
Make GetConsoleMode Windows Console wrapper more Pythonic
darrenburns Mar 3, 2022
8f738c7
Support reverse, bold (bright), and dim
darrenburns Mar 3, 2022
ca3e966
Handle legacy windows error
darrenburns Mar 3, 2022
81c4dc4
Add docstrings to Windows console wrapper functions
darrenburns Mar 3, 2022
9b76da2
Merge pull request #2019 from Textualize/ansi-to-win32_pull-request-f…
darrenburns Mar 7, 2022
8fe170a
Merge branch 'master' into ansi-to-win32
willmcgugan Mar 9, 2022
91e0146
check win32
willmcgugan Mar 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use bitwise operators in LegacyWindowsTerm, fix formatting
  • Loading branch information
darrenburns committed Mar 3, 2022
commit d87498bf3600dadc294c0b6058683dba54f5fb2c
12 changes: 4 additions & 8 deletions rich/_win32_console.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,19 +253,15 @@ class LegacyWindowsTerm:
15, # bright white
]

def __init__(self, file: IO[str] = sys.stdout):
self.file = file
def __init__(self) -> None:
handle = GetStdHandle(STDOUT)
self._handle = handle
default_text = GetConsoleScreenBufferInfo(handle).wAttributes
self._default_text = default_text

self._default_fore = default_text & 7
self._default_back = (default_text >> 4) & 7
self._default_attrs = self._default_fore + self._default_back * 16

self.write = file.write
self.flush = file.flush
self._default_attrs = self._default_fore | (self._default_back << 4)

@property
def cursor_position(self) -> WindowsCoordinates:
Expand Down Expand Up @@ -322,7 +318,7 @@ def write_styled(self, text: str, style: Style) -> None:
assert back is not None

SetConsoleTextAttribute(
self._handle, attributes=ctypes.c_ushort(fore + back * 16)
self._handle, attributes=ctypes.c_ushort(fore | (back << 4))
)
self.write_text(text)
SetConsoleTextAttribute(self._handle, attributes=self._default_text)
Expand Down Expand Up @@ -462,7 +458,7 @@ def set_title(self, title: str) -> None:

console = Console()

term = LegacyWindowsTerm(console.file)
term = LegacyWindowsTerm()
term.set_title("Win32 Console Examples")

style = Style(color="black", bgcolor="red")
Expand Down
4 changes: 1 addition & 3 deletions rich/console.py
Original file line number Diff line number Diff line change
Expand Up @@ -1921,9 +1921,7 @@ def _check_buffer(self) -> None:
from rich._win32_console import LegacyWindowsTerm
from rich._windows_renderer import legacy_windows_render

legacy_windows_render(
self._buffer[:], LegacyWindowsTerm(self.file)
)
legacy_windows_render(self._buffer[:], LegacyWindowsTerm())

output_capture_enabled = bool(self._buffer_index)
if not legacy_windows_stdout or output_capture_enabled:
Expand Down