diff --git a/wxPython/demo/StyledTextCtrl_1.py b/wxPython/demo/StyledTextCtrl_1.py index eda33f43a4..a6e325e61c 100644 --- a/wxPython/demo/StyledTextCtrl_1.py +++ b/wxPython/demo/StyledTextCtrl_1.py @@ -174,6 +174,7 @@ def runTest(frame, nb, log): #ed.StyleClearAll() #ed.SetScrollWidth(800) #ed.SetWrapMode(True) + #ed.SetUseAntiAliasing(False) ed.SetText(demoText) diff --git a/wxPython/demo/StyledTextCtrl_2.py b/wxPython/demo/StyledTextCtrl_2.py index 8d82fc1c68..2258172d02 100644 --- a/wxPython/demo/StyledTextCtrl_2.py +++ b/wxPython/demo/StyledTextCtrl_2.py @@ -59,7 +59,8 @@ class PythonSTC(stc.StyledTextCtrl): self.SetViewWhiteSpace(False) #self.SetBufferedDraw(False) #self.SetViewEOL(True) - + #self.SetUseAntiAliasing(True) + self.SetEdgeMode(stc.STC_EDGE_BACKGROUND) self.SetEdgeColumn(78) diff --git a/wxPython/docs/CHANGES.txt b/wxPython/docs/CHANGES.txt index 5e55eadda6..c692febd9a 100644 --- a/wxPython/docs/CHANGES.txt +++ b/wxPython/docs/CHANGES.txt @@ -55,6 +55,16 @@ Updated the AnalogClockWindow with many enhancements from E. A. Tac wxMac now has wx.ToggleButton! +wx.stc.StyledTextCtrl has been update to version 1.58 of Scintilla. + +To help with the wx.stc.StyledTextCtrl performance issues on wxMac +I've added a SetUseAntiAliasing method (and GetUseAntiAliasing) too +that will turn off the use of antialiased fonts in the wxSTC, allowing +it to bypass the slow text measuring routines and use the fast and +simple one instead. By default the setting is turned off. When run +on OSX The Py* apps have a new item on the Options menu for +controlling this setting if you would like to experiment with it. + diff --git a/wxPython/wx/py/editor.py b/wxPython/wx/py/editor.py index 6a6293ca22..671ede9e0b 100644 --- a/wxPython/wx/py/editor.py +++ b/wxPython/wx/py/editor.py @@ -607,15 +607,18 @@ class Editor: def getStatus(self): """Return (filepath, line, column) status tuple.""" - pos = self.window.GetCurrentPos() - line = self.window.LineFromPosition(pos) + 1 - col = self.window.GetColumn(pos) - if self.buffer: - name = self.buffer.doc.filepath or self.buffer.name + if self.window: + pos = self.window.GetCurrentPos() + line = self.window.LineFromPosition(pos) + 1 + col = self.window.GetColumn(pos) + if self.buffer: + name = self.buffer.doc.filepath or self.buffer.name + else: + name = '' + status = (name, line, col) + return status else: - name = '' - status = (name, line, col) - return status + return ('', 0, 0) def getText(self): """Return contents of editor.""" diff --git a/wxPython/wx/py/frame.py b/wxPython/wx/py/frame.py index ddcfa688e3..600f2bd1b9 100644 --- a/wxPython/wx/py/frame.py +++ b/wxPython/wx/py/frame.py @@ -35,6 +35,7 @@ ID_COPY_PLUS = wx.NewId() ID_NAMESPACE = wx.NewId() ID_PASTE_PLUS = wx.NewId() ID_WRAP = wx.NewId() +ID_USEAA = wx.NewId() class Frame(wx.Frame): @@ -106,18 +107,18 @@ class Frame(wx.Frame): m = self.autocompMenu = wx.Menu() m.Append(ID_AUTOCOMP_SHOW, 'Show Auto Completion', - 'Show auto completion list', 1) + 'Show auto completion list', wx.ITEM_CHECK) m.Append(ID_AUTOCOMP_MAGIC, 'Include Magic Attributes', 'Include attributes visible to __getattr__ and __setattr__', - 1) + wx.ITEM_CHECK) m.Append(ID_AUTOCOMP_SINGLE, 'Include Single Underscores', - 'Include attibutes prefixed by a single underscore', 1) + 'Include attibutes prefixed by a single underscore', wx.ITEM_CHECK) m.Append(ID_AUTOCOMP_DOUBLE, 'Include Double Underscores', - 'Include attibutes prefixed by a double underscore', 1) + 'Include attibutes prefixed by a double underscore', wx.ITEM_CHECK) m = self.calltipsMenu = wx.Menu() m.Append(ID_CALLTIPS_SHOW, 'Show Call Tips', - 'Show call tips with argument signature and docstring', 1) + 'Show call tips with argument signature and docstring', wx.ITEM_CHECK) m = self.optionsMenu = wx.Menu() m.AppendMenu(ID_AUTOCOMP, '&Auto Completion', self.autocompMenu, @@ -125,7 +126,10 @@ class Frame(wx.Frame): m.AppendMenu(ID_CALLTIPS, '&Call Tips', self.calltipsMenu, 'Call Tip Options') m.Append(ID_WRAP, '&Wrap Lines', - 'Wrap lines at right edge', 1) + 'Wrap lines at right edge', wx.ITEM_CHECK) + if wx.Platform == "__WXMAC__": + m.Append(ID_USEAA, '&Use AntiAliasing', + 'Use anti-aliased fonts', wx.ITEM_CHECK) m = self.helpMenu = wx.Menu() m.AppendSeparator() @@ -163,6 +167,7 @@ class Frame(wx.Frame): wx.EVT_MENU(self, ID_AUTOCOMP_DOUBLE, self.OnAutoCompleteDouble) wx.EVT_MENU(self, ID_CALLTIPS_SHOW, self.OnCallTipsShow) wx.EVT_MENU(self, ID_WRAP, self.OnWrap) + wx.EVT_MENU(self, ID_USEAA, self.OnUseAA) wx.EVT_UPDATE_UI(self, ID_NEW, self.OnUpdateMenu) wx.EVT_UPDATE_UI(self, ID_OPEN, self.OnUpdateMenu) @@ -187,6 +192,7 @@ class Frame(wx.Frame): wx.EVT_UPDATE_UI(self, ID_AUTOCOMP_DOUBLE, self.OnUpdateMenu) wx.EVT_UPDATE_UI(self, ID_CALLTIPS_SHOW, self.OnUpdateMenu) wx.EVT_UPDATE_UI(self, ID_WRAP, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, ID_USEAA, self.OnUpdateMenu) def OnFileNew(self, event): self.bufferNew() @@ -284,6 +290,11 @@ class Frame(wx.Frame): win = wx.Window_FindFocus() win.SetWrapMode(event.IsChecked()) + def OnUseAA(self, event): + win = wx.Window_FindFocus() + win.SetUseAntiAliasing(event.IsChecked()) + + def OnUpdateMenu(self, event): """Update menu items based on current status and context.""" win = wx.Window_FindFocus() @@ -342,6 +353,8 @@ class Frame(wx.Frame): event.Check(win.autoCallTip) elif id == ID_WRAP: event.Check(win.GetWrapMode()) + elif id == ID_USEAA: + event.Check(win.GetUseAntiAliasing()) else: event.Enable(False) except AttributeError: