Source code for enaml.widgets.ipython_console

#------------------------------------------------------------------------------
# Copyright (c) 2014, Nucleic Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
#------------------------------------------------------------------------------
from atom.api import Dict, Event, Typed, ForwardTyped, set_default

from enaml.core.declarative import d_

from .control import Control, ProxyControl


class ProxyIPythonConsole(ProxyControl):
    """ The abstract definition of a proxy IPythonConsole object.

    """
    #: A reference to the IPythonConsole declaration.
    declaration = ForwardTyped(lambda: IPythonConsole)

    def get_var(self, name, default):
        raise NotImplementedError

    def update_ns(self, ns):
        raise NotImplementedError


[docs] class IPythonConsole(Control): """ A widget which hosts an embedded IPython console. """ #: The initial namespace to apply to the console. Runtime changes #: to this value will be ignored. Use 'update_ns' to add variables #: to the console at runtime. initial_ns = d_(Dict()) #: An event fired when the user invokes a console exit command. exit_requested = d_(Event(), writable=False) #: The ipython console expands freely by default. hug_width = set_default('ignore') hug_height = set_default('ignore') #: A reference to the ProxyIPythonConsole object. proxy = Typed(ProxyIPythonConsole)
[docs] def get_var(self, name, default=None): """ Get a variable from the console namespace. Parameters ---------- name : basestring The name of the variable to retrieve. default : object, optional The value to return if the variable does not exist. The default is None. Returns ------- result : object The variable in the namespace, or the provided default. """ if self.proxy_is_active: return self.proxy.get_var(name, default) return default
[docs] def update_ns(self, **kwargs): """ Update the variables in the console namespace. Parameters ---------- **kwargs The variables to update in the console namespace. """ if self.proxy_is_active: self.proxy.update_ns(kwargs)