Handle exceptions in the tui context managers
This commit is contained in:
@@ -315,23 +315,29 @@ def reset_state(normal_screen: bool = True) -> str:
|
|||||||
@contextmanager
|
@contextmanager
|
||||||
def pending_update(write: Callable[[str], None]) -> Generator[None, None, None]:
|
def pending_update(write: Callable[[str], None]) -> Generator[None, None, None]:
|
||||||
write(set_mode(Mode.PENDING_UPDATE))
|
write(set_mode(Mode.PENDING_UPDATE))
|
||||||
yield
|
try:
|
||||||
write(reset_mode(Mode.PENDING_UPDATE))
|
yield
|
||||||
|
finally:
|
||||||
|
write(reset_mode(Mode.PENDING_UPDATE))
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def cursor(write: Callable[[str], None]) -> Generator[None, None, None]:
|
def cursor(write: Callable[[str], None]) -> Generator[None, None, None]:
|
||||||
write(SAVE_CURSOR)
|
write(SAVE_CURSOR)
|
||||||
yield
|
try:
|
||||||
write(RESTORE_CURSOR)
|
yield
|
||||||
|
finally:
|
||||||
|
write(RESTORE_CURSOR)
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def alternate_screen(f: Optional[IO[str]] = None) -> Generator[None, None, None]:
|
def alternate_screen(f: Optional[IO[str]] = None) -> Generator[None, None, None]:
|
||||||
f = f or sys.stdout
|
f = f or sys.stdout
|
||||||
print(set_mode(Mode.ALTERNATE_SCREEN), end='', file=f)
|
print(set_mode(Mode.ALTERNATE_SCREEN), end='', file=f)
|
||||||
yield
|
try:
|
||||||
print(reset_mode(Mode.ALTERNATE_SCREEN), end='', file=f)
|
yield
|
||||||
|
finally:
|
||||||
|
print(reset_mode(Mode.ALTERNATE_SCREEN), end='', file=f)
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
|
|||||||
Reference in New Issue
Block a user