New typemaps for wxString when compiling for Python 2.0 and beyond
that allow Unicode objects to be passed as well as String objects. If a Unicode object is passed PyString_AsStringAndSize is used to convert it to a wxString using the default encoding. Fixed the generic buttons so tool tips work for them. Fixed a bug in the demo's tree control. Added a listbox to the listbox demo that shows how to find items with a patching prefix as keys are typed. Added code to the wxListCtrl demo to show how to get text from a column in report mode. Added code to the toolbar demo to clear the long help from the status bar after 2 seconds. Added wxJoystick. Fixed wxTimer so it can be used as described in the docs, either with a Notify method in a subclass, or sending an event to a wxEvtHandler object, (usually a window.) Added wxNotifyEvent.Allow() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8764 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1,6 +1,51 @@
|
||||
|
||||
from wxPython.wx import *
|
||||
|
||||
import string
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
class wxFindPrefixListBox(wxListBox):
|
||||
def __init__(self, parent, id, pos=wxDefaultPosition, size=wxDefaultSize,
|
||||
choices=[], style=0, validator=wxDefaultValidator):
|
||||
wxListBox.__init__(self, parent, id, pos, size, choices, style, validator)
|
||||
self.typedText = ''
|
||||
EVT_KEY_UP(self, self.OnKey)
|
||||
|
||||
|
||||
def FindPrefix(self, prefix):
|
||||
if prefix:
|
||||
prefix = string.lower(prefix)
|
||||
length = len(prefix)
|
||||
for x in range(self.Number()):
|
||||
text = self.GetString(x)
|
||||
text = string.lower(text)
|
||||
if text[:length] == prefix:
|
||||
return x
|
||||
return -1
|
||||
|
||||
|
||||
def OnKey(self, evt):
|
||||
key = evt.GetKeyCode()
|
||||
if key >= 32 and key <= 127:
|
||||
self.typedText = self.typedText + chr(key)
|
||||
item = self.FindPrefix(self.typedText)
|
||||
if item != -1:
|
||||
self.SetSelection(item)
|
||||
|
||||
elif key == WXK_BACK: # backspace removes one character and backs up
|
||||
self.typedText = self.typedText[:-1]
|
||||
if not self.typedText:
|
||||
self.SetSelection(0)
|
||||
else:
|
||||
item = self.FindPrefix(self.typedText)
|
||||
if item != -1:
|
||||
self.SetSelection(item)
|
||||
|
||||
else:
|
||||
evt.Skip()
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
class TestListBox(wxPanel):
|
||||
@@ -32,6 +77,16 @@ class TestListBox(wxPanel):
|
||||
self.lb2.SetSelection(0)
|
||||
|
||||
|
||||
sampleList = sampleList + ['test a', 'test aa', 'test aab',
|
||||
'test ab', 'test abc', 'test abcc',
|
||||
'test abcd' ]
|
||||
sampleList.sort()
|
||||
wxStaticText(self, -1, "Find Prefix:", wxPoint(15, 250))
|
||||
fp = wxFindPrefixListBox(self, -1, wxPoint(80, 250), wxSize(80, 120),
|
||||
sampleList, wxLB_SINGLE)
|
||||
fp.SetSelection(0)
|
||||
|
||||
|
||||
def EvtListBox(self, event):
|
||||
self.log.WriteText('EvtListBox: %s\n' % event.GetString())
|
||||
|
||||
|
Reference in New Issue
Block a user