def main_twisted(con, my_ns): import gtk from ipython_view import IPythonView import pango import platform if platform.system()=="Windows": FONT = "Lucida Console 9" else: FONT = "Luxi Mono 10" W = gtk.Window() W.set_size_request(750,550) W.set_resizable(True) S = gtk.ScrolledWindow() S.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) V = IPythonView(user_ns=my_ns) shell = V.IP V.modify_font(pango.FontDescription(FONT)) V.set_wrap_mode(gtk.WRAP_CHAR) V.show() S.add(V) S.show() W.add(S) W.show() W.connect('delete_event',lambda x,y:False) W.connect('destroy',lambda x:gtk.main_quit()) globals()['shell'] = shell # for later updating variables in user table globals()['user_ns'] = my_ns pimp_my_shell(shell, con) twisted_banner(print_own_deferred_help = True) # Start the mainloop, and add a hook to display deferred results when they # are available (also affects *any* deferred you try to print) import twisted.internet.defer as defer from IPython.hooks import result_display from IPython.genutils import Term def print_deferred(x): s = str(x) if len(s) > 1000: s = s[:1000] + '...' print >>Term.cout, "deferred: %s" % s shell.user_ns['_d'] = x return x def display_deferred(self, arg): # don't display already called deferreds? if isinstance(arg, defer.Deferred): arg.addCallback(print_deferred) else: result_display(self, arg) shell.set_hook('result_display', display_deferred) start_names_request(my_ns) #gtk.main() from twisted.internet import reactor reactor.run()