From 4123a7a9b82f66ba80292faae0f9c449a46a7ab2 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 26 Sep 2006 17:26:23 +0000 Subject: [PATCH] Workaround some platform differences git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41466 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/demo/ExpandoTextCtrl.py | 36 +++++++++++++++++++++++++++++--- wxPython/wx/lib/expando.py | 16 +++++++++++++- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/wxPython/demo/ExpandoTextCtrl.py b/wxPython/demo/ExpandoTextCtrl.py index 9c967e8287..b9ba309162 100644 --- a/wxPython/demo/ExpandoTextCtrl.py +++ b/wxPython/demo/ExpandoTextCtrl.py @@ -5,8 +5,9 @@ from wx.lib.expando import ExpandoTextCtrl, EVT_ETC_LAYOUT_NEEDED #---------------------------------------------------------------------- class TestFrame(wx.Frame): - def __init__(self, parent): + def __init__(self, parent, log): wx.Frame.__init__(self, parent, title="Test ExpandoTextCtrl") + self.log = log self.pnl = p = wx.Panel(self) self.eom = ExpandoTextCtrl(p, size=(250,-1), value="This control will expand as you type") @@ -28,14 +29,28 @@ class TestFrame(wx.Frame): self.Bind(wx.EVT_BUTTON, self.OnWriteText, btn) vBtnSizer.Add(btn, 0, wx.ALL|wx.EXPAND, 5) - for x in range(5): + btn = wx.Button(p, -1, "Append Text") + self.Bind(wx.EVT_BUTTON, self.OnAppendText, btn) + vBtnSizer.Add(btn, 0, wx.ALL|wx.EXPAND, 5) + + btn = wx.Button(p, -1, "Set Value") + self.Bind(wx.EVT_BUTTON, self.OnSetValue, btn) + vBtnSizer.Add(btn, 0, wx.ALL|wx.EXPAND, 5) + + btn = wx.Button(p, -1, "Get Value") + self.Bind(wx.EVT_BUTTON, self.OnGetValue, btn) + vBtnSizer.Add(btn, 0, wx.ALL|wx.EXPAND, 5) + + for x in range(3): btn = wx.Button(p, -1, " ") vBtnSizer.Add(btn, 0, wx.ALL|wx.EXPAND, 5) + self.Bind(wx.EVT_BUTTON, self.OnOtherBtn, btn) hBtnSizer = wx.BoxSizer(wx.HORIZONTAL) for x in range(3): btn = wx.Button(p, -1, " ") hBtnSizer.Add(btn, 0, wx.ALL, 5) + self.Bind(wx.EVT_BUTTON, self.OnOtherBtn, btn) sizer = wx.BoxSizer(wx.HORIZONTAL) col1 = wx.BoxSizer(wx.VERTICAL) @@ -61,6 +76,7 @@ class TestFrame(wx.Frame): # just resize the frame to fit the new needs of the sizer. self.Fit() + def OnSetMaxHeight(self, evt): mh = self.eom.GetMaxHeight() dlg = wx.NumberEntryDialog(self, "", "Enter new max height:", @@ -83,7 +99,21 @@ class TestFrame(wx.Frame): "been a real emergency you would have seen the " "quick brown fox jump over the lazy dog.\n") + def OnAppendText(self, evt): + self.eom.AppendText("\nAppended text.") + def OnSetValue(self, evt): + self.eom.SetValue("A new value.") + + def OnGetValue(self, evt): + self.log.write("-----------------\n" + self.eom.GetValue()) + + def OnOtherBtn(self, evt): + # just for testing... + #print self.eom.numLines, + self.eom._adjustCtrl() + #print self.eom.numLines + #---------------------------------------------------------------------- class TestPanel(wx.Panel): @@ -96,7 +126,7 @@ class TestPanel(wx.Panel): def OnButton(self, evt): - self.win = TestFrame(self) + self.win = TestFrame(self, self.log) self.win.Show(True) diff --git a/wxPython/wx/lib/expando.py b/wxPython/wx/lib/expando.py index f16e5e1d52..a66112b37f 100644 --- a/wxPython/wx/lib/expando.py +++ b/wxPython/wx/lib/expando.py @@ -90,7 +90,21 @@ class ExpandoTextCtrl(wx.TextCtrl): wx.TextCtrl.SetFont(self, font) self.numLines = -1 self._adjustCtrl() - + + def WriteText(self, text): + # work around a bug of a lack of a EVT_TEXT when calling + # WriteText on wxMac + wx.TextCtrl.WriteText(self, text) + self._adjustCtrl() + + def AppendText(self, text): + # Instead of using wx.TextCtrl.AppendText append and set the + # insertion point ourselves. This works around a bug on wxMSW + # where it scrolls the old text out of view, and since there + # is no scrollbar there is no way to get back to it. + self.SetValue(self.GetValue() + text) + self.SetInsertionPointEnd() + def OnTextChanged(self, evt): # check if any adjustments are needed on every text update -- 2.47.2