1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
#------------------------------------------------------------------------------
# Copyright (c) 2005, Enthought, Inc.
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in enthought/LICENSE.txt and may be redistributed only
# under the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
# Thanks for using Enthought open source!
#
# Author: Enthought, Inc.
# Description: <Enthought pyface package component>
#------------------------------------------------------------------------------
""" The interface for an interactive Python shell. """
# Enthought library imports.
from traits.api import Event
# Local imports.
from pyface.key_pressed_event import KeyPressedEvent
from pyface.i_widget import IWidget
class IPythonShell(IWidget):
""" The interface for an interactive Python shell. """
#### 'IPythonShell' interface #############################################
#: A command has been executed.
command_executed = Event
#: A key has been pressed.
key_pressed = Event(KeyPressedEvent)
###########################################################################
# 'IPythonShell' interface.
###########################################################################
def interpreter(self):
""" Get the shell's interpreter
Returns
-------
interpreter : InteractiveInterpreter instance
Returns the InteractiveInterpreter instance.
"""
def bind(self, name, value):
""" Binds a name to a value in the interpreter's namespace.
Parameters
----------
name : str
The python idetifier to bind the value to.
value : any
The python object to be bound into the interpreter's namespace.
"""
def execute_command(self, command, hidden=True):
""" Execute a command in the interpreter.
Parameters
----------
command : str
A Python command to execute.
hidden : bool
If 'hidden' is True then nothing is shown in the shell - not even
a blank line.
"""
def execute_file(self, path, hidden=True):
""" Execute a file in the interpeter.
Parameters
----------
path : str
The path to the Python file to execute.
hidden : bool
If 'hidden' is True then nothing is shown in the shell - not even
a blank line.
"""
def get_history(self):
""" Return the current command history and index.
Returns
-------
history : list of str
The list of commands in the new history.
history_index : int from 0 to len(history)
The current item in the command history navigation.
"""
def set_history(self, history, history_index):
""" Replace the current command history and index with new ones.
Parameters
----------
history : list of str
The list of commands in the new history.
history_index : int
The current item in the command history navigation.
"""
class MPythonShell(object):
""" The mixin class that contains common code for toolkit specific
implementations of the IPythonShell interface.
Implements: bind(), _on_command_executed()
"""
###########################################################################
# 'IPythonShell' interface.
###########################################################################
def bind(self, name, value):
""" Binds a name to a value in the interpreter's namespace.
Parameters
----------
name : str
The python idetifier to bind the value to.
value : any
The python object to be bound into the interpreter's namespace.
"""
self.interpreter().locals[name] = value
###########################################################################
# Private interface.
###########################################################################
def _on_command_executed(self):
""" Called when a command has been executed in the shell. """
self.command_executed = self
|