diff --git a/IPython/kernel/zmq/eventloops.py b/IPython/kernel/zmq/eventloops.py index 835a4e0..70da2ab 100644 --- a/IPython/kernel/zmq/eventloops.py +++ b/IPython/kernel/zmq/eventloops.py @@ -209,7 +209,8 @@ loop_map = { def enable_gui(gui, kernel=None): """Enable integration with a given GUI""" if gui not in loop_map: - raise ValueError("GUI %r not supported" % gui) + e = "Invalid GUI request %r, valid ones are:%s" % (gui, loop_map.keys()) + raise ValueError(e) if kernel is None: if Application.initialized(): kernel = getattr(Application.instance(), 'kernel', None) diff --git a/IPython/kernel/zmq/zmqshell.py b/IPython/kernel/zmq/zmqshell.py index 82a4aff..422c0c8 100644 --- a/IPython/kernel/zmq/zmqshell.py +++ b/IPython/kernel/zmq/zmqshell.py @@ -503,8 +503,13 @@ class ZMQInteractiveShell(InteractiveShell): # Over ZeroMQ, GUI control isn't done with PyOS_InputHook as there is no # interactive input being read; we provide event loop support in ipkernel - from .eventloops import enable_gui - enable_gui = staticmethod(enable_gui) + @staticmethod + def enable_gui(gui): + from .eventloops import enable_gui as real_enable_gui + try: + real_enable_gui(gui) + except ValueError as e: + raise UsageError("%s" % e) def init_environment(self): """Configure the user's environment. diff --git a/IPython/terminal/interactiveshell.py b/IPython/terminal/interactiveshell.py index fb2032d..32a6c17 100644 --- a/IPython/terminal/interactiveshell.py +++ b/IPython/terminal/interactiveshell.py @@ -304,7 +304,10 @@ class TerminalInteractiveShell(InteractiveShell): """ # Deferred import from IPython.lib.inputhook import enable_gui as real_enable_gui - return real_enable_gui(gui, app) + try: + return real_enable_gui(gui, app) + except ValueError as e: + raise UsageError("%s" % e) def __init__(self, config=None, ipython_dir=None, profile_dir=None, user_ns=None, user_module=None, custom_exceptions=((),None),