class PanelScript(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent) self.intro = "Interactive Phase Retrieval Suite" self.shell = Shell(parent=self, id=wx.ID_ANY, introText=self.intro) self.shell.zoom(2) self.shell.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.shell) self.ih = 0 sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.shell, 1, flag=wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP, border=2) sizer.Fit(self) self.SetSizer(sizer) self.SetAutoLayout(True) self.Layout() def OnKeyDown(self, event): if self.shell.AutoCompActive(): event.Skip() return key = event.GetKeyCode() if key == wx.WXK_RETURN: self.ih = 0 self.shell.processLine() self.shell.clearCommand() elif key == wx.WXK_UP: if self.ih < len(self.shell.history): self.ih += 1 self.shell.clearCommand() self.shell.write(self.shell.history[(self.ih - 1)]) elif key == wx.WXK_DOWN: self.shell.clearCommand() self.ih -= 1 if self.ih > 0: self.shell.write(self.shell.history[self.ih - 1]) else: self.ih = 0 else: event.Skip()