##// END OF EJS Templates
Work on QtConsole Menu...
Work on QtConsole Menu * add new_frontend_factory, slave_frontend_factory callable arguments to MainWindow constructor, decoupling MainWindow and the IPythonApp a bit * create *all* menu items in MainWindow.init_menubar, rather than some in the IPythonApp * split init_menu_bar into methods for each menu, to ease organization * attach all menu bar actions to the MainWindow as well, so that they are still accessible when Menu Bar is invisible * add View menu for Fullscreen and Fonts * organized menu items to match standard patterns * Fewer platform-dependent menu items

File last commit:

r4755:c14b594e
r5135:5e65a460
Show More
nested_context.py
50 lines | 1.5 KiB | text/x-python | PythonLexer
Thomas Kluyver
Backwards compatibility hack to use nested() in Python 3.2
r4751 """Backwards compatibility - we use contextlib.nested to support Python 2.6,
but it's removed in Python 3.2."""
# TODO : Remove this once we drop support for Python 2.6, and use
# "with a, b:" instead.
Thomas Kluyver
Fix for nested()
r4755 import sys
Thomas Kluyver
Backwards compatibility hack to use nested() in Python 3.2
r4751 from contextlib import contextmanager
@contextmanager
def nested(*managers):
"""Combine multiple context managers into a single nested context manager.
This function has been deprecated in favour of the multiple manager form
of the with statement.
The one advantage of this function over the multiple manager form of the
with statement is that argument unpacking allows it to be
used with a variable number of context managers as follows:
with nested(*managers):
do_something()
"""
exits = []
vars = []
exc = (None, None, None)
try:
for mgr in managers:
exit = mgr.__exit__
enter = mgr.__enter__
vars.append(enter())
exits.append(exit)
yield vars
except:
exc = sys.exc_info()
finally:
while exits:
exit = exits.pop()
try:
if exit(*exc):
exc = (None, None, None)
except:
exc = sys.exc_info()
if exc != (None, None, None):
# Don't rely on sys.exc_info() still containing
# the right information. Another exception may
# have been raised and caught by an exit method
raise exc[0], exc[1], exc[2]