[IPython-user] Cocoa frontend for ipython1
Barry Wark
barrywark@gmail....
Wed Mar 12 15:26:11 CDT 2008
Hi all,
I've started working on a Cocoa (OS X) front-end for ipython1. I'm
struggling a bit with bzr at the moment (bzr branch
http://bazaar.launchpad.net/~ipython/ipython/ipython1-dev gives me a
ipython1-dev directory with a .bzr folder, but no other contents...)
but will get a branch available ASAP with the code. In the mean time,
I'd like to run a my general strategy and a couple questions questions
by everyone...
General Strategy
----------
I'm planning an NSObject subclass that acts as the Cocoa-side
controller for an IPython engine. This CocoaController maintains an
instance of an ipython1.kernel.engineservice.IEngineBase and mirrors
its interface. The CocoaController also provides a Cocoa bindings
interface for the engine's user_ns (so that a table view of key-values
in the user_ns is easy to create in Interface Builder, ala Matlab's
"Workspace" panel). In addition, I'm writing an NSTextView that
handles taking input and displaying results. Demos soon...
Questions
------------
1. ipython1.core.interpreter's module docstring mentions
ipythyon1.kernel.coreservice. Is that an (old) name for the current
ipython1.kernel.engineservice?
2. I propose an additional IEngineInteractive interface consisting of
deferred wrappers for ipython1.core.interpreter.Interpreter's
feed_block and complete methods. This allows interactive frontends to
do propper line continuation and tab completion. I propose that we
further subclass ipython1.kernel.engineservice.EngineService to
implement this interface as well for use in interactive frontends.
Comments?
3. Have folks thought about how we're going to handle the equivalent
of the ThreadedInterpreter in the new model (i.e. how should I think
about handling matplotlib plotting)?
4. When the user_ns gets big, it would be nice if the IEngineX would
return info about the key/value pairs in user_ns that were
added/removed/changed as a result of a single IEngineCore.execute().
That way the frontend won't have to query the entire user_ns after
every block.
thanks,
Barry
More information about the IPython-user
mailing list