summaryrefslogtreecommitdiff
path: root/tcvt.py
diff options
context:
space:
mode:
Diffstat (limited to 'tcvt.py')
-rwxr-xr-xtcvt.py12
1 files changed, 5 insertions, 7 deletions
diff --git a/tcvt.py b/tcvt.py
index bb614bb..97df94c 100755
--- a/tcvt.py
+++ b/tcvt.py
@@ -342,7 +342,7 @@ class Terminal:
self.lastchar = char
self.screen.addch(char)
- def start(self):
+ def __enter__(self):
self.realscreen = curses.initscr()
self.realscreen.nodelay(1)
self.realscreen.keypad(1)
@@ -353,8 +353,9 @@ class Terminal:
curses.noecho()
curses.raw()
self.graphics_chars = compose_dicts(self.graphics_chars, acs_map())
+ return self
- def stop(self):
+ def __exit__(self, *_):
curses.noraw()
curses.echo()
curses.endwin()
@@ -658,7 +659,6 @@ def main():
help="order last column to the left")
options, args = parser.parse_args()
keymapping, acsc = compute_keymap(symbolic_keymapping)
- t = Terminal(acsc, options.columns, reverse=options.reverse)
errpiper, errpipew = os.pipe()
set_cloexec(errpipew)
@@ -681,8 +681,8 @@ def main():
if data:
print(data)
sys.exit(1)
- try:
- t.start()
+
+ with Terminal(acsc, options.columns, reverse=options.reverse) as t:
t.resizepty(masterfd)
refreshpending = None
while True:
@@ -733,8 +733,6 @@ def main():
if refreshpending is not None and refreshpending < time.time():
t.screen.refresh()
refreshpending = None
- finally:
- t.stop()
if __name__ == '__main__':
main()