50 lines · 1.6 KB · Python
RawDownload
"""curses.wrapper Contains one function, wrapper(), which runs another function whichshould be the rest of your curses-based application.  If theapplication raises an exception, wrapper() will restore the terminalto a sane state so you can read the resulting traceback. """ import sys, curses def wrapper(func, *args, **kwds):    """Wrapper function that initializes curses and calls another function,    restoring normal keyboard/screen behavior on error.    The callable object 'func' is then passed the main window 'stdscr'    as its first argument, followed by any other arguments passed to    wrapper().    """     res = None    try:        # Initialize curses        stdscr=curses.initscr()         # Turn off echoing of keys, and enter cbreak mode,        # where no buffering is performed on keyboard input        curses.noecho()        curses.cbreak()         # In keypad mode, escape sequences for special keys        # (like the cursor keys) will be interpreted and        # a special value like curses.KEY_LEFT will be returned        stdscr.keypad(1)         # Start color, too.  Harmless if the terminal doesn't have        # color; user can test with has_color() later on.  The try/catch        # works around a minor bit of over-conscientiousness in the curses        # module -- the error return from C start_color() is ignorable.        try:            curses.start_color()        except:            pass         return func(stdscr, *args, **kwds)    finally:        # Set everything back to normal        stdscr.keypad(0)        curses.echo()        curses.nocbreak()        curses.endwin()