<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
  <title></title>
</head>
<body text="#000000" bgcolor="#ffffff">
On 03/04/2010 06:21 PM, Brian Granger wrote:<br>
<span style="white-space: pre;">&gt; Fantastic, this would be a great
addition to IPython!&nbsp; This comes at<br>
&gt; a great time.</span><br>
<br>
Thank you for your enthusiasm!<br>
<br>
<span style="white-space: pre;">&gt; Currently, IPython trunk has done
away with the old Shell class. Our<br>
&gt; core class is not iplib.InteractiveShell.&nbsp; Thus, I would start by<br>
&gt; looking there.</span><br>
<br>
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 it goes.<br>
<br>
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.<br>
<br>
<span style="white-space: pre;">&gt; * Some of your work will likely be
on the IPython core itself.<br>
&gt; While we have done a lot of work on it you will quickly find areas<br>
&gt; that need to be updated in order for you to do what you want.&nbsp; For<br>
&gt; this part of it, I would simply create a branch on launchpad of the<br>
&gt; IPython trunk.&nbsp; This will allow us to merge your work on the
IPython<br>
&gt; core quickly into trunk.<br>
</span><br>
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.<br>
And I think I will go on launchpad and branch ipython trunk soon.<br>
<span style="white-space: pre;"><br>
&gt; I think having as clean of a design as possible is best, so I
would <br>
&gt; try to minimize the stuff at the top.&nbsp; But, the challenge is that<br>
&gt; some completions and help strings are quite long.&nbsp; I am not sure
how<br>
&gt; to handle that in a clean way.</span><br>
<br>
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.<br>
<br>
Thanks for your help,<br>
Wendell<br>
<br>
</body>
</html>