Files
wxWidgets/wxPython/demo/wxTextCtrl.py
Robin Dunn 64dfb023eb Switched to using True/False in the wxPython lib and demo instead of
true/false or TRUE/FALSE to prepare for the new boolean type and
constants being added to Python.  Added code to wx.py to test for the
existence of the new constants and to create suitable values if not
present.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@19335 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-02-26 18:38:37 +00:00

166 lines
5.4 KiB
Python

import sys
from wxPython.wx import *
#---------------------------------------------------------------------------
class TestPanel(wxPanel):
def OnSetFocus(self, evt):
print "OnSetFocus"
evt.Skip()
def OnKillFocus(self, evt):
print "OnKillFocus"
evt.Skip()
def OnWindowDestroy(self, evt):
print "OnWindowDestroy"
evt.Skip()
def __init__(self, parent, log):
wxPanel.__init__(self, parent, -1)
self.log = log
l1 = wxStaticText(self, -1, "wxTextCtrl")
t1 = wxTextCtrl(self, -1, "Test it out and see", size=(125, -1))
t1.SetInsertionPoint(0)
self.tc1 = t1
EVT_TEXT(self, t1.GetId(), self.EvtText)
EVT_CHAR(t1, self.EvtChar)
EVT_SET_FOCUS(t1, self.OnSetFocus)
EVT_KILL_FOCUS(t1, self.OnKillFocus)
EVT_WINDOW_DESTROY(t1, self.OnWindowDestroy)
l2 = wxStaticText(self, -1, "Passsword")
t2 = wxTextCtrl(self, -1, "", size=(125, -1), style=wxTE_PASSWORD)
EVT_TEXT(self, t2.GetId(), self.EvtText)
l3 = wxStaticText(self, -1, "Multi-line")
t3 = wxTextCtrl(self, -1,
"Here is a looooooooooooooong line of text set in the control.\n\n"
"The quick brown fox jumped over the lazy dog...",
size=(200, 100), style=wxTE_MULTILINE)
t3.SetInsertionPoint(0)
EVT_TEXT(self, t3.GetId(), self.EvtText)
b = wxButton(self, -1, "Test Replace")
EVT_BUTTON(self, b.GetId(), self.OnTestReplace)
b2 = wxButton(self, -1, "Test GetSelection")
EVT_BUTTON(self, b2.GetId(), self.OnTestGetSelection)
b3 = wxButton(self, -1, "Test WriteText")
EVT_BUTTON(self, b3.GetId(), self.OnTestWriteText)
self.tc = t3
b4 = wxButton(self, -1, "Test Simulated Event")
EVT_BUTTON(self, b4.GetId(), self.OnTestEvent)
l4 = wxStaticText(self, -1, "Rich Text")
t4 = wxTextCtrl(self, -1, "If supported by the native control, this is red, and this is a different font.",
size=(200, 100), style=wxTE_MULTILINE|wxTE_RICH2)
t4.SetInsertionPoint(0)
t4.SetStyle(44, 47, wxTextAttr("RED", "YELLOW"))
points = t4.GetFont().GetPointSize() # get the current size
f = wxFont(points+3, wxROMAN, wxITALIC, wxBOLD, True)
t4.SetStyle(63, 77, wxTextAttr("BLUE", wxNullColour, f))
l5 = wxStaticText(self, -1, "Test Positions")
t5 = wxTextCtrl(self, -1, "0123456789\n" * 5, size=(200, 100),
style = wxTE_MULTILINE
#| wxTE_RICH
| wxTE_RICH2
)
EVT_LEFT_DOWN(t5, self.OnT5LeftDown)
self.t5 = t5
bsizer = wxBoxSizer(wxVERTICAL)
bsizer.Add(b, 0, wxGROW|wxALL, 4)
bsizer.Add(b2, 0, wxGROW|wxALL, 4)
bsizer.Add(b3, 0, wxGROW|wxALL, 4)
bsizer.Add(b4, 0, wxGROW|wxALL, 4)
sizer = wxFlexGridSizer(cols=3, hgap=6, vgap=6)
sizer.AddMany([ l1, t1, (0,0),
l2, t2, (0,0),
l3, t3, bsizer,
l4, t4, (0,0),
l5, t5, (0,0),
])
border = wxBoxSizer(wxVERTICAL)
border.Add(sizer, 0, wxALL, 25)
self.SetSizer(border)
self.SetAutoLayout(True)
def EvtText(self, event):
self.log.WriteText('EvtText: %s\n' % event.GetString())
def EvtChar(self, event):
self.log.WriteText('EvtChar: %d\n' % event.GetKeyCode())
event.Skip()
def OnTestReplace(self, evt):
self.tc.Replace(5, 9, "IS A")
#self.tc.Remove(5, 9)
def OnTestWriteText(self, evt):
self.tc.WriteText("TEXT")
def OnTestGetSelection(self, evt):
start, end = self.tc.GetSelection()
text = self.tc.GetValue()
if wxPlatform == "__WXMSW__": # This is why GetStringSelection was added
text = text.replace('\n', '\r\n')
self.log.write("GetSelection(): (%d, %d)\n"
"\tGetStringSelection(): %s\n"
"\tSelectedText: %s\n" %
(start, end,
self.tc.GetStringSelection(),
repr(text[start:end])))
def OnT5LeftDown(self, evt):
evt.Skip()
wxCallAfter(self.LogT5Position, evt)
def LogT5Position(self, evt):
text = self.t5.GetValue()
ip = self.t5.GetInsertionPoint()
lp = self.t5.GetLastPosition()
self.log.write("LogT5Position:\n"
"\tGetInsertionPoint:\t%d\n"
"\ttext[insertionpoint]:\t%s\n"
"\tGetLastPosition:\t%d\n"
"\tlen(text):\t\t%d\n"
% (ip, text[ip], lp, len(text)))
def OnTestEvent(self, evt):
ke = wxKeyEvent(wxEVT_CHAR)
ke.SetEventObject(self.tc1)
ke.SetId(self.tc1.GetId())
ke.m_keyCode = ord('A')
self.tc1.GetEventHandler().ProcessEvent(ke)
#---------------------------------------------------------------------------
def runTest(frame, nb, log):
win = TestPanel(nb, log)
return win
#---------------------------------------------------------------------------
overview = """\
"""
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])])