<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7172470157573247254</id><updated>2012-02-16T10:10:38.886-05:00</updated><title type='text'>IPythonQt</title><subtitle type='html'>I will implement a Qt-based Graphical User Interface (GUI) to execute Python code with an interpreter that runs in a separate process and the two systems (GUI frontend and interpreter kernel) communicating via the ZeroMQ Messaging library.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-646457923374460207</id><published>2010-08-09T14:08:00.003-05:00</published><updated>2010-08-11T10:57:47.197-05:00</updated><title type='text'>IPythonQt end of GSoC status</title><content type='html'>Enthought approved some funding for our mentors to develop the basis of this big projects that are rising. Yay!&lt;br /&gt;Fernando Perez and Brian Granger (and I think Evan Patterson too) are working on a new communication interface between the kernel and any frontend(kernelmanager or kernel proxy in the diagram), to ease and standarize the work done by every frontend developer.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://github.com/ipython/ipython/raw/master/docs/source/development/frontend-kernel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://github.com/ipython/ipython/raw/master/docs/source/development/frontend-kernel.png" width="303" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;There're some changes also in the kernel by Fernando and Bryan.&lt;br /&gt;And a reimplementation of the kernel manager by Evan using qt signals instead of callbacks for messages handling.&lt;br /&gt;The floor is a little loose so the building of this scyscraper has to be more careful, and slow written and designed, but it will be for a greater good since its core it's getting robust and&amp;nbsp;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, verdana, sans-serif; font-size: 12px;"&gt;trustworthy&lt;/span&gt;.&lt;br /&gt;Since the way to communicate with the kernel, and the kernel itself has changed, almost every part of the development before mid-term had to be written again, with a few stones in the way 'cause it depends on a bunch of people (just to mention that Evan and I are sharing QtKernelManager).&lt;br /&gt;A new branch was created&amp;nbsp;http://github.com/muzgash/ipython/tree/ipythonqt-km to implement kernelmanager.&lt;br /&gt;&lt;br /&gt;Yesterday I was beginning the tooltip and tab completion support, it's not trivial, and since today is the 'suggested pencils down' date I'm going to improve the documentation and write some tests to fulfill Google and IPython's requirements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-646457923374460207?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/646457923374460207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/08/ipythonqt-end-of-gsoc-status.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/646457923374460207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/646457923374460207'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/08/ipythonqt-end-of-gsoc-status.html' title='IPythonQt end of GSoC status'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-4994960600711671243</id><published>2010-07-14T17:38:00.002-05:00</published><updated>2010-07-19T17:16:49.114-05:00</updated><title type='text'>8th week log, Mid-term evaluation!</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;A lot of details about pdb support and the organization of the output cells were discussed this week.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;The characteristics added are:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;The output cells are appended as they appear in the space between th executed cell and the next executable cell. i.e.&lt;/span&gt;&lt;/li&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;for&lt;/b&gt; i &lt;b&gt;in&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt; range&lt;/span&gt;(3):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;print&lt;/b&gt; i**2&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;0&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;1&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;When you execute again a cell the previous output cells are erased(if any)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;If a new cell is created by the program (not the user) the scroll bar goes to its maximum value. This is not the right way to approach the automatic movement of the viewport I know, I'll work on it on the weekend.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;You can clean the notebook of output cells by clicking a button in evaluate menu.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;The last one is part of the details &amp;nbsp;usually&amp;nbsp;add when my brain is stuck, I try to add a little thing every couple of days.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Today I'm working on subprocess, i.e. communication with the shell. I think I need to create an ipython's instance or inherit InteractiveShell, I'm waiting a hand from Fernando but this shouldn't be too dificult.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;I also hope to finish everything planned round next week to put some effort on the highlighting and autoindentation.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-4994960600711671243?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/4994960600711671243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/07/8th-week-log-mid-term-evaluation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/4994960600711671243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/4994960600711671243'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/07/8th-week-log-mid-term-evaluation.html' title='8th week log, Mid-term evaluation!'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-5936275989784525090</id><published>2010-07-11T19:58:00.001-05:00</published><updated>2010-07-11T20:02:30.894-05:00</updated><title type='text'>Behind raw_input</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;This was a pretty heavy week.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;there were two ways of approaching the raw_input problem, the right one, and the wrong one(lol):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;To fill the widget definition with signals and slots which will&amp;nbsp;communicate&amp;nbsp;the different IOs to the mainwindow and this one then will communicate those IOs to the kernel.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;To import zmq in the ipqt_popup module and manage the communication directly with the kernel.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;I&amp;nbsp;innocently&amp;nbsp;chose the fist one (FAIL),&lt;i&gt;&amp;nbsp;"entia non sunt multiplicanda praeter necessitatem".&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;The widget was almost done when Fernando corrected me the design stating that it will be better to print all the messages from raw_input or pdb in the mainwidow not in a popped up widget.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Fortunately I managed to understand the mechanisms required for this to work correctly and I'm finishing it right now.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-5936275989784525090?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/5936275989784525090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/07/behind-rawinput.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/5936275989784525090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/5936275989784525090'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/07/behind-rawinput.html' title='Behind raw_input'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-5306916042856673988</id><published>2010-06-30T01:52:00.002-05:00</published><updated>2010-06-30T15:13:17.668-05:00</updated><title type='text'>Some screenshots</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;Bryan suggested some screen shots of what's working. Just a pair of very, very simple examples:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ma3glBxYD9k/TCrmndxTOvI/AAAAAAAAACI/xzQYY3T0wYY/s1600/IPQt_ss1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/_ma3glBxYD9k/TCrmndxTOvI/AAAAAAAAACI/xzQYY3T0wYY/s400/IPQt_ss1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Here we can see the main function of the frontend (run code) and some of its code in the back. (Yes, I'm very used to graphical editors)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ma3glBxYD9k/TCrnZ6_8_-I/AAAAAAAAACY/hP_LwPRHZe8/s1600/IPQt_ss2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_ma3glBxYD9k/TCrnZ6_8_-I/AAAAAAAAACY/hP_LwPRHZe8/s400/IPQt_ss2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;And here we can see my yakuake terminal with some useless stuff and a terminal frontend for ipython&amp;nbsp;which&amp;nbsp;connects to the same kernel (i.e.communicate through the same ports), this one changing the value of 'a' which has been already assigned&amp;nbsp;in the IPythonQt window, so a message appears in the new widget on the right (plz don't heed the preview).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-5306916042856673988?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/5306916042856673988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/06/some-screenshots.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/5306916042856673988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/5306916042856673988'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/06/some-screenshots.html' title='Some screenshots'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ma3glBxYD9k/TCrmndxTOvI/AAAAAAAAACI/xzQYY3T0wYY/s72-c/IPQt_ss1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-3765565268103614826</id><published>2010-06-29T04:38:00.000-05:00</published><updated>2010-06-29T04:38:57.359-05:00</updated><title type='text'>Added features to June 29</title><content type='html'>&lt;b&gt;What can you do?&lt;/b&gt;&lt;br /&gt;When you open IPythonQt you see a menubar and a (still undeletable) input cell in which you can write ipython/python code.&lt;br /&gt;&lt;div&gt;You can execute the code written by pressing Ctrl+Return (shift doesn't work, I dunno why), or just go to the menu 'evaluate'.&lt;/div&gt;&lt;div&gt;You can call a context menu inside the cell which besides the standard buttons it has a new one to delete the cell.&lt;/div&gt;&lt;div&gt;If you right-click somewhere else in the notebook, a tiny context menu should appear to append a new input cell or to delete the last focused cell. A focused cell is the last you clicked, not the last you hover.&lt;/div&gt;&lt;div&gt;If you connect another frontend to the same kernel, another widget will come out with the info of the variables that changed and the user.&lt;/div&gt;&lt;div&gt;Some shortcuts has been created for the keyboard lover:&lt;/div&gt;&lt;div&gt;Ctrl+UpArrow goes to the previous cell&lt;/div&gt;&lt;div&gt;Ctrl+DownArrow goes to the next cell&lt;/div&gt;&lt;div&gt;Ctrl+Shift+UpArrow goes to the previous executable cell&lt;/div&gt;&lt;div&gt;Ctrl+Shift+DownArrow goes tot he next executable cell&lt;/div&gt;&lt;div&gt;Ctrl+Shift+N appends a new cell&lt;/div&gt;&lt;div&gt;Ctrl+Shift+Delete removes the current cell&lt;/div&gt;&lt;div&gt;Ctrl+Return Executes the current cell if it's executable&lt;/div&gt;&lt;div&gt;Ctrl+Q Quits&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;What you cannot do (yet):&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The code still doesn't capture pyout, so code like:&lt;/div&gt;&lt;div&gt;_cell__&lt;/div&gt;&lt;div&gt;|a=10 &amp;nbsp;|&lt;/div&gt;&lt;div&gt;|&lt;u&gt;a &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/u&gt;|&lt;/div&gt;&lt;div&gt;won't produce any output.&lt;/div&gt;&lt;div&gt;Calls to raw_input, %, !, system commands, tab completion, function tooltips, gdb and help.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Work right in progress:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Stdin support, since I have to have it finished for the mid-term evaluation, it's the main concern. The popup widget it's finished but there's still the raw_input function in the kernel that needs to be implemented correctly.&lt;/div&gt;&lt;div&gt;There's a new output cell if the same input cell is modified.&lt;/div&gt;&lt;div&gt;There's a discussion in the mailing list about if the different outputs from the same input should be on different cells (packable) or in the same cell.&lt;/div&gt;&lt;div&gt;The resizing of the cell when the block(line without '/n') is larger than the size of the window. For what I've seen this is not trivial.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-3765565268103614826?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/3765565268103614826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/06/added-features-to-june-29.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/3765565268103614826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/3765565268103614826'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/06/added-features-to-june-29.html' title='Added features to June 29'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-3870290885927620424</id><published>2010-06-29T03:38:00.003-05:00</published><updated>2010-07-14T10:57:39.499-05:00</updated><title type='text'>Testing IPythonQt</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;For you to test IPythonQt you first need to set up some stuff first:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Install the following:&amp;nbsp;git g++ cython uuid-dev&amp;nbsp;python-qt4-dev&amp;nbsp;pyqt4-dev-tools , I think that would be enough.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;You also need to install zeromq and pyzmq from sources &lt;a href="http://ipythonzmq.blogspot.com/2010/04/how-to-test-ipython-zmq-code-just-under.html"&gt;here's&lt;/a&gt; a good guide to do that.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Take into account that you need python2.6. &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Now you can download IPythonQt's code from&amp;nbsp;http://github.com/muzgash/ipython/tree/ipythonqt&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;check if you are in the right_branch (ipythonqt, not master): git branch&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;b&gt;if not&lt;/b&gt; right_branch:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;git checkout ipythonqt&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;cd ipython/IPython/gui/qt&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;run ./kernel.py&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Open a new terminal and run ./ipythonqt.py&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Obviously it's not working with all its features, I just remove some dock widgets that were in the original design of the main view, but they're just commented because they don't do anything yet.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-3870290885927620424?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/3870290885927620424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/06/testing-ipythonqt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/3870290885927620424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/3870290885927620424'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/06/testing-ipythonqt.html' title='Testing IPythonQt'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-4374552518782385470</id><published>2010-06-01T20:10:00.001-05:00</published><updated>2010-06-01T20:11:27.315-05:00</updated><title type='text'>Repositories GitHub</title><content type='html'>You can check the progress at GitHub:&lt;br /&gt;http://github.com/muzgash/ipython&lt;br /&gt;&lt;br /&gt;The commits are a little slow because some issues with GitHub and its ssh keys&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-4374552518782385470?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/4374552518782385470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/06/repositorias-github.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/4374552518782385470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/4374552518782385470'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/06/repositorias-github.html' title='Repositories GitHub'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-5545348372488238329</id><published>2010-04-18T18:13:00.002-05:00</published><updated>2010-04-18T18:22:32.178-05:00</updated><title type='text'>Possible future directions</title><content type='html'>The near future will bring the feature of saving and loading sessions, also importing and exporting to different formats like rst, html, pdf and python/ipython code, a discussion about this is taking place in the &lt;a href="http://mail.scipy.org/mailman/listinfo/ipython-dev"&gt;ipython-dev mailing list&lt;/a&gt;.&amp;nbsp;Also the interaction with a remote kernel and distributed computation which is an IPython's &lt;a href="http://ipython.scipy.org/moin/GSoC2010/IPythonZmq"&gt;project&lt;/a&gt; already in development.&lt;br /&gt;&lt;br /&gt;The idea of a mathematica-like help widget (i.e. there will be parts of it that will execute as a native session of IPythonQt) is still to be discussed in the development mailing list but it's&amp;nbsp;definitively&amp;nbsp;a great idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-5545348372488238329?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/5545348372488238329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/possible-future-directions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/5545348372488238329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/5545348372488238329'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/possible-future-directions.html' title='Possible future directions'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-7788264912806975009</id><published>2010-04-16T12:02:00.003-05:00</published><updated>2010-04-16T17:50:34.125-05:00</updated><title type='text'>Preliminary work</title><content type='html'>I have already developed a prototype using Qt that provides individual QTextEdit widgets for each block of user input. This makes it possible to have an editable cell be independent from the area where output or errors are displayed (which can't be achieved if a single widget like QTableWidget is used for the entire UI). The screenshot above shows this basic interface, where formatting and write control are handled independently for each area.&lt;br /&gt;I also explored other tools such as QScintilla and OpenModelica (wrapping its interface with Cython) but due to license incompatibilities (GPL) decided against using these and will rely solely on Qt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-7788264912806975009?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/7788264912806975009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/preliminary-work.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/7788264912806975009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/7788264912806975009'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/preliminary-work.html' title='Preliminary work'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-64381696680491929</id><published>2010-04-16T12:01:00.000-05:00</published><updated>2010-04-16T12:01:56.153-05:00</updated><title type='text'>Schedule</title><content type='html'>&lt;ul&gt;&lt;li&gt;Week 1: Simple client/server pyzmq module implemented from the previous work to the GUI needs.&lt;/li&gt;&lt;li&gt;Week 2 and 3: Multiline input in a cell form that is sent to the kernel as a string, each cell has its own widget so they can be edited indepently.&lt;/li&gt;&lt;li&gt;Week 4-5: Capture all output streams from kernel and properly format exceptions and errors. Display streams corresponding to other clients that may be connected to the same kernel in a separate widget so they don't confuse the user. This output will be asynchronous, so it should be handled in the GUI without blocking the user input widget.&lt;/li&gt;&lt;li&gt;Week 6: Stdin support: only one frontend at a time can communicate with raw_input calls made by the kernel. API for frontends to grab stdin.&lt;/li&gt;&lt;li&gt;Week 7: debugger support. IPython calls a modified pdb, which reads from stdin using raw_input. So once raw_input handling is ready, it becomes possible to redirect the pdb session from the kernel to the GUI.&lt;/li&gt;&lt;li&gt;Week 8: Subprocess support (print output of 'ls' in gui, for example).&lt;/li&gt;&lt;li&gt;Week 9: Tab completion and function tooltips (GUI popup with the function details). Must gracefully timeout and avoid trying if kernel is busy&lt;/li&gt;&lt;li&gt;Week 10: padding for any slip in previous schedule.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-64381696680491929?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/64381696680491929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/schedule.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/64381696680491929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/64381696680491929'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/schedule.html' title='Schedule'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-5504389468501795679</id><published>2010-04-16T11:46:00.010-05:00</published><updated>2010-04-18T17:13:12.240-05:00</updated><title type='text'>More details</title><content type='html'>&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;2-PROCESS MODEL PYZMQ BASE&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Since the necessity of a user to keep his data safe, the design is based in a 2-process model that will be achieved with a simple client/server system with &lt;/span&gt;&lt;a href="http://www.zeromq.org/bindings:python"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;pyzmq&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, so the GUI session do not crash if the the kernel process does. This will be achieved using this test &lt;/span&gt;&lt;a href="http://github.com/fperez/pyzmq/blob/completer/examples/kernel/kernel.py"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;code&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; and customizing it to the necessities of the GUI such as queue management with discrimination for different frontends connected to the same kernel and tab completion. A piece of drafted code for the kernel (server) should look like this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;def main():&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;c = zmq.Context(1, 1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ip = '127.0.0.1'&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;port_base = 5555&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;connection = ('tcp://%s' % ip) + ':%i'&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rep_conn = connection % port_base&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pub_conn = connection % (port_base+1)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;print &amp;gt;&amp;gt;sys.__stdout__, "Starting the kernel..."&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;print &amp;gt;&amp;gt;sys.__stdout__, "On:",rep_conn, pub_conn&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;session = Session(username=u'kernel')&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;reply_socket = c.socket(zmq.XREP)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;reply_socket.bind(rep_conn)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pub_socket = c.socket(zmq.PUB)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pub_socket.bind(pub_conn)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;stdout = OutStream(session, pub_socket, u'stdout')&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;stderr = OutStream(session, pub_socket, u'stderr')&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sys.stdout = stdout&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sys.stderr = stderr&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;display_hook = DisplayHook(session, pub_socket)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sys.displayhook = display_hook&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;kernel = Kernel(session, reply_socket, pub_socket)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;This kernel will use two queues (output and input), the input queue will have id of the process(frontend) making the request, type(execute, complete, help, etc) and id of the request itself and the string of code to be executed, the output queue will have basically the same information just that the string is the to be displayed. This model is because the kernel needs to maintain control of timeouts when multiple requests are sent and keep them indexed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;QT BASED GUI&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Design of the interface is going to be based in cells of code executed on the previous defined kernel. It will also have GUI facilities such toolboxes, tooltips to autocomplete code and function summary, highlighting and autoindentation. It will have the cell kind of multiline edition mode so each block of code can be edited and executed independently, this can be achieved queuing QTextEdit objects (the cell) giving them format so we can discriminate outputs from inputs. One of the main characteristics will be the debug support that will show the requested outputs as the debugger (that will be on a popup widget) "walks" through the code, this design is to be reviewed with the mentor.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The GUI will check continuously the output queue from the kernel for new information to handle. This information have to be handled with care since any output will come at anytime and possibly in a different order than requested or maybe not appear at all, this could be possible due to a variety of reasons(for example tab completion request while the kernel is busy processing another frontend's request). This is, if the kernel is busy it won't be possible to fulfill the request for a while so the GUI will be prepared to abandon waiting for the reply if the user moves on or a certain timeout expires.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-5504389468501795679?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/5504389468501795679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/more-details.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/5504389468501795679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/5504389468501795679'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/more-details.html' title='More details'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-6616115376141109950</id><published>2010-04-12T20:32:00.001-05:00</published><updated>2010-04-12T20:33:30.637-05:00</updated><title type='text'>Main window proposal</title><content type='html'>This is a tentative view of the main window.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://gfif.udea.edu.co/IPythonQt_snapshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://gfif.udea.edu.co/IPythonQt_snapshot.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I hope to see your comments on this.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-6616115376141109950?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/6616115376141109950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/main-window-proposal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/6616115376141109950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/6616115376141109950'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/main-window-proposal.html' title='Main window proposal'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7172470157573247254.post-794806677895131281</id><published>2010-04-12T17:04:00.001-05:00</published><updated>2010-05-10T22:22:47.621-05:00</updated><title type='text'>IPython Qt interface - GSoC 2010 Proposal</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span style="color: #990000;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;ABSTRACT&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I will implement a Qt-based Graphical  User Interface (GUI) to execute Python code with an interpreter that  runs in a separate process and the two systems (GUI frontend and  interpreter kernel) communicating via the ZeroMQ Messaging library.  The  bulk of the implementation will be done without dependencies on IPython  (only on Zmq). Once the key features are ready, IPython-specific  features can be added using the IPython codebase.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #990000; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;PROJECT DETAILS&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For a long time  there has been demand for a graphical user interface for IPython, and  the project already ships Wx-based prototypes thereof.  But these run  all code in a single process, making them extremely brittle, as a crash  of the Python interpreter kills the entire user session.  Here I propose  to build a Qt-based GUI that will communicate with a separate process  for the code execution, so that if the interpreter kernel dies, the  frontend can continue to function after restarting a new kernel (and  offering the user the option to re-execute all inputs, which the  frontend can know).&lt;br /&gt;&lt;br /&gt;This GUI will allow for the easy editing of  multi-line input and the convenient re-editing of previous blocks of  input, which can be displayed in a 2-d workspace instead of a  line-driven one like today's IPython. This makes it much easier to  incrementally build and tune a code, by combining the rapid feedback  cycle of IPython with the ability to edit multiline code with good  graphical support.&lt;br /&gt;&lt;br /&gt;More info: &lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: verdana, sans-serif;"&gt;&lt;a href="http://ipython.scipy.org/moin/GSoC2010/IPythonQt" target="_blank"&gt;http://ipython.scipy.org/moin/&lt;wbr&gt;&lt;/wbr&gt;GSoC2010/IPythonQt&lt;/a&gt; (it's sometimes down)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7172470157573247254-794806677895131281?l=ipythonqt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipythonqt.blogspot.com/feeds/794806677895131281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/ipython-qt-interface-gsoc-2010-proposal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/794806677895131281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7172470157573247254/posts/default/794806677895131281'/><link rel='alternate' type='text/html' href='http://ipythonqt.blogspot.com/2010/04/ipython-qt-interface-gsoc-2010-proposal.html' title='IPython Qt interface - GSoC 2010 Proposal'/><author><name>Muzgash</name><uri>http://www.blogger.com/profile/14472666280767880156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ma3glBxYD9k/S8OcfxcVCPI/AAAAAAAAABk/ANRTqrW7MVw/s1600-R/n719384417_917830_5396.jpg'/></author><thr:total>0</thr:total></entry></feed>
