From ab50ebaf61368c8ffdf4457371c055fb36af7a13 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Fri, 9 Dec 2016 09:15:14 +0100 Subject: simplify Terminal start and stop using a context manager --- tcvt.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'tcvt.py') 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() -- cgit v1.2.3