mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	svn+ssh://pythondev@svn.python.org/python/trunk ........ r60990 | eric.smith | 2008-02-23 17:05:26 +0100 (Sat, 23 Feb 2008) | 1 line Removed duplicate Py_CHARMASK define. It's already defined in Python.h. ........ r60991 | andrew.kuchling | 2008-02-23 17:23:05 +0100 (Sat, 23 Feb 2008) | 4 lines #1330538: Improve comparison of xmlrpclib.DateTime and datetime instances. Remove automatic handling of datetime.date and datetime.time. This breaks backward compatibility, but python-dev discussion was strongly against this automatic conversion; see the bug for a link. ........ r60994 | andrew.kuchling | 2008-02-23 17:39:43 +0100 (Sat, 23 Feb 2008) | 1 line #835521: Add index entries for various pickle-protocol methods and attributes ........ r60995 | andrew.kuchling | 2008-02-23 18:10:46 +0100 (Sat, 23 Feb 2008) | 2 lines #1433694: minidom's .normalize() failed to set .nextSibling for last element. Fix by Malte Helmert ........ r61000 | christian.heimes | 2008-02-23 18:40:11 +0100 (Sat, 23 Feb 2008) | 1 line Patch #2167 from calvin: Remove unused imports ........ r61001 | christian.heimes | 2008-02-23 18:42:31 +0100 (Sat, 23 Feb 2008) | 1 line Patch #1957: syslogmodule: Release GIL when calling syslog(3) ........ r61002 | christian.heimes | 2008-02-23 18:52:07 +0100 (Sat, 23 Feb 2008) | 2 lines Issue #2051 and patch from Alexander Belopolsky: Permission for pyc and pyo files are inherited from the py file. ........
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""curses.wrapper
 | 
						|
 | 
						|
Contains one function, wrapper(), which runs another function which
 | 
						|
should be the rest of your curses-based application.  If the
 | 
						|
application raises an exception, wrapper() will restore the terminal
 | 
						|
to a sane state so you can read the resulting traceback.
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
import 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()
 |