diff options
-rwxr-xr-x | tcvt.py | 12 |
1 files changed, 5 insertions, 7 deletions
@@ -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() |