X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c0ab3f7fbbecf490e197dc345beea8d1f7c8418c..68fc5c8025e38b9d827383fbfe7ce509ae331c1f:/wxPython/wx/py/crust.py diff --git a/wxPython/wx/py/crust.py b/wxPython/wx/py/crust.py index 371638f604..d3715d50ef 100644 --- a/wxPython/wx/py/crust.py +++ b/wxPython/wx/py/crust.py @@ -35,6 +35,14 @@ class Crust(wx.SplitterWindow): *args, **kwds): """Create Crust instance.""" wx.SplitterWindow.__init__(self, parent, id, pos, size, style, name) + + # Turn off the tab-traversal style that is automatically + # turned on by wx.SplitterWindow. We do this because on + # Windows the event for Ctrl-Enter is stolen and used as a + # navigation key, but the Shell window uses it to insert lines. + style = self.GetWindowStyle() + self.SetWindowStyle(style & ~wx.TAB_TRAVERSAL) + self.shell = Shell(parent=self, introText=intro, locals=locals, InterpClass=InterpClass, startupScript=startupScript, @@ -63,7 +71,7 @@ class Crust(wx.SplitterWindow): self.notebook.AddPage(page=self.calltip, text='Calltip') self.sessionlisting = SessionListing(parent=self.notebook) - self.notebook.AddPage(page=self.sessionlisting, text='Session') + self.notebook.AddPage(page=self.sessionlisting, text='History') self.dispatcherlisting = DispatcherListing(parent=self.notebook) self.notebook.AddPage(page=self.dispatcherlisting, text='Dispatcher') @@ -162,6 +170,10 @@ class Calltip(wx.TextCtrl): self.SetBackgroundColour(wx.Colour(255, 255, 208)) dispatcher.connect(receiver=self.display, signal='Shell.calltip') + df = self.GetFont() + font = wx.Font(df.GetPointSize(), wx.TELETYPE, wx.NORMAL, wx.NORMAL) + self.SetFont(font) + def display(self, calltip): """Receiver for Shell.calltip signal.""" ## self.SetValue(calltip) # Caused refresh problem on Windows. @@ -177,17 +189,29 @@ class SessionListing(wx.TextCtrl): style = (wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_RICH2 | wx.TE_DONTWRAP) wx.TextCtrl.__init__(self, parent, id, style=style) - dispatcher.connect(receiver=self.push, signal='Interpreter.push') + dispatcher.connect(receiver=self.addHistory, signal="Shell.addHistory") + dispatcher.connect(receiver=self.clearHistory, signal="Shell.clearHistory") + dispatcher.connect(receiver=self.loadHistory, signal="Shell.loadHistory") + + df = self.GetFont() + font = wx.Font(df.GetPointSize(), wx.TELETYPE, wx.NORMAL, wx.NORMAL) + self.SetFont(font) + + def loadHistory(self, history): + # preload the existing history, if any + hist = history[:] + hist.reverse() + self.SetValue('\n'.join(hist) + '\n') + self.SetInsertionPointEnd() - def push(self, command, more): - """Receiver for Interpreter.push signal.""" - if command and not more: + def addHistory(self, command): + if command: self.SetInsertionPointEnd() - start, end = self.GetSelection() - if start != end: - self.SetSelection(0, 0) self.AppendText(command + '\n') + def clearHistory(self): + self.SetValue("") + class DispatcherListing(wx.TextCtrl): """Text control containing all dispatches for session.""" @@ -198,6 +222,10 @@ class DispatcherListing(wx.TextCtrl): wx.TextCtrl.__init__(self, parent, id, style=style) dispatcher.connect(receiver=self.spy) + df = self.GetFont() + font = wx.Font(df.GetPointSize(), wx.TELETYPE, wx.NORMAL, wx.NORMAL) + self.SetFont(font) + def spy(self, signal, sender): """Receiver for Any signal from Any sender.""" text = '%r from %s' % (signal, sender)