##// END OF EJS Templates
Isolate the displayhook created by ipython0. This fixes a test not...
Isolate the displayhook created by ipython0. This fixes a test not passing due to the side-effects of testing the prefilterfrontend.

File last commit:

r1472:dddf1831
r1472:dddf1831
Show More
ipythonx.py
78 lines | 2.0 KiB | text/x-python | PythonLexer
"""
Entry point for a simple application giving a graphical frontend to
ipython.
"""
import wx
from wx_frontend import WxController
import __builtin__
class IPythonXController(WxController):
""" Sub class of WxController that adds some application-specific
bindings.
"""
debug = True
def __init__(self, *args, **kwargs):
WxController.__init__(self, *args, **kwargs)
self.ipython0.ask_exit = self.do_exit
def _on_key_down(self, event, skip=True):
# Intercept Ctrl-D to quit
if event.KeyCode == ord('D') and event.ControlDown() and \
self.input_buffer == '' and \
self._input_state == 'readline':
wx.CallAfter(self.ask_exit)
else:
WxController._on_key_down(self, event, skip=skip)
def ask_exit(self):
""" Ask the user whether to exit.
"""
self.write('\n')
self.capture_output()
self.ipython0.shell.exit()
self.release_output()
wx.Yield()
if not self.ipython0.exit_now:
self.new_prompt(self.input_prompt_template.substitute(
number=self.last_result['number'] + 1))
def do_exit(self):
""" Exits the interpreter, kills the windows.
"""
WxController.do_exit(self)
self.release_output()
wx.CallAfter(wx.Exit)
class IPythonX(wx.Frame):
""" Main frame of the IPythonX app.
"""
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(300,250))
self._sizer = wx.BoxSizer(wx.VERTICAL)
self.shell = IPythonXController(self)
self._sizer.Add(self.shell, 1, wx.EXPAND)
self.SetSizer(self._sizer)
self.SetAutoLayout(1)
self.Show(True)
def main():
app = wx.PySimpleApp()
frame = IPythonX(None, wx.ID_ANY, 'IPythonX')
frame.shell.SetFocus()
frame.shell.app = app
frame.SetSize((680, 460))
app.MainLoop()
if __name__ == '__main__':
main()