[IPython-dev] Curses Frontend
Thu Mar 4 12:19:45 CST 2010
On 03/04/2010 06:21 PM, Brian Granger wrote:
> Fantastic, this would be a great addition to IPython! This comes at
> a great time.
Thank you for your enthusiasm!
> Currently, IPython trunk has done away with the old Shell class. Our
> core class is not iplib.InteractiveShell. Thus, I would start by
> looking there.
I have only in the past few weeks started even looking through the
ipython code, but it was my understanding that
IPython.core.iplib.InteractiveShell was now the main class - a
significant difference from before, but still the main class. I've
noticed as well the Magic class and Application class, but I'm not sure
I would need to do much with those, except instantiate them, and
eventually play nicely with the pager/editor/etc. In fact, even with the
InteractiveShell class, I believe I need to replace the raw_input
function and Term.cout and Term.cerr, but other than that, I believe
that I will mainly just have a separate input object that interacts with
'InteractiveShell' and asks for completions, docstrings, source, etc. as
Anyways, I am starting right now with building objects on top of curses
- a window that looks like a terminal and accepts terminal escapes and
scrolls, a scrolling text input box, a pop-up window. I want these to be
dependent on only curses - while I would make them with curses in mind,
it makes sense to make these separate; maybe someone will reuse them.
> * Some of your work will likely be on the IPython core itself.
> While we have done a lot of work on it you will quickly find areas
> that need to be updated in order for you to do what you want. For
> this part of it, I would simply create a branch on launchpad of the
> IPython trunk. This will allow us to merge your work on the IPython
> core quickly into trunk.
You are probably right, although I do not yet see a need to change
anything in the core, although, of course, I haven't looked at it that
deeply nor started in.
And I think I will go on launchpad and branch ipython trunk soon.
> I think having as clean of a design as possible is best, so I would
> try to minimize the stuff at the top. But, the challenge is that
> some completions and help strings are quite long. I am not sure how
> to handle that in a clean way.
As for the design, I liked the idea of a separate text box below for
input - that seems to make sense to me. There is then the challenge that
when help strings/etc. pop up, they must, in order of importance, 1)
avoid the input box, 2) avoid last output, 3) be in an otherwise logical
position. I thought that perhaps having last output always directly
above the input box (with blank space on top) would mean that the top
would always be available for the help/completions/etc. However, I think
you are right - the completions/help do not need to be there when they
are blank, so it can just be a pop-up that starts from the top and
expands downwards as necessary/directed. However... there is much code
to be written before that is relevant; in the end, the code should make
it easy to redesign (perhaps config-based) where the pop-ups appear.
Thanks for your help,
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the IPython-dev