]> git.saurik.com Git - wxWidgets.git/blame - wxPython/demo/wxListBox.py
Change demo to not try to drop the table when it thinks it is creating it for the...
[wxWidgets.git] / wxPython / demo / wxListBox.py
CommitLineData
cf694132
RD
1
2from wxPython.wx import *
3
185d7c3e
RD
4import string
5
6#---------------------------------------------------------------------------
7
8class wxFindPrefixListBox(wxListBox):
9 def __init__(self, parent, id, pos=wxDefaultPosition, size=wxDefaultSize,
10 choices=[], style=0, validator=wxDefaultValidator):
11 wxListBox.__init__(self, parent, id, pos, size, choices, style, validator)
12 self.typedText = ''
13 EVT_KEY_UP(self, self.OnKey)
14
15
16 def FindPrefix(self, prefix):
17 if prefix:
18 prefix = string.lower(prefix)
19 length = len(prefix)
20 for x in range(self.Number()):
21 text = self.GetString(x)
22 text = string.lower(text)
23 if text[:length] == prefix:
24 return x
25 return -1
26
27
28 def OnKey(self, evt):
29 key = evt.GetKeyCode()
30 if key >= 32 and key <= 127:
31 self.typedText = self.typedText + chr(key)
32 item = self.FindPrefix(self.typedText)
33 if item != -1:
34 self.SetSelection(item)
35
36 elif key == WXK_BACK: # backspace removes one character and backs up
37 self.typedText = self.typedText[:-1]
38 if not self.typedText:
39 self.SetSelection(0)
40 else:
41 item = self.FindPrefix(self.typedText)
42 if item != -1:
43 self.SetSelection(item)
44
45 else:
46 evt.Skip()
47
48
cf694132
RD
49#---------------------------------------------------------------------------
50
51class TestListBox(wxPanel):
52 def __init__(self, parent, log):
53 self.log = log
54 wxPanel.__init__(self, parent, -1)
55
56 sampleList = ['zero', 'one', 'two', 'three', 'four', 'five',
57 'six', 'seven', 'eight', 'nine', 'ten', 'eleven',
58 'twelve', 'thirteen', 'fourteen']
59
60 wxStaticText(self, -1, "This example uses the wxListBox control.",
61 wxPoint(45, 10))
62
63 wxStaticText(self, -1, "Select one:", wxPoint(15, 50), wxSize(65, 18))
bb0054cd 64 self.lb1 = wxListBox(self, 60, wxPoint(80, 50), wxSize(80, 120),
cf694132
RD
65 sampleList, wxLB_SINGLE)
66 EVT_LISTBOX(self, 60, self.EvtListBox)
67 EVT_LISTBOX_DCLICK(self, 60, self.EvtListBoxDClick)
bb0054cd 68 EVT_RIGHT_UP(self.lb1, self.EvtRightButton)
1b62f00d 69 self.lb1.SetSelection(3)
cf694132
RD
70
71
72 wxStaticText(self, -1, "Select many:", wxPoint(200, 50), wxSize(65, 18))
bb0054cd 73 self.lb2 = wxListBox(self, 70, wxPoint(280, 50), wxSize(80, 120),
cf694132
RD
74 sampleList, wxLB_EXTENDED)
75 EVT_LISTBOX(self, 70, self.EvtMultiListBox)
76 EVT_LISTBOX_DCLICK(self, 70, self.EvtListBoxDClick)
bb0054cd 77 self.lb2.SetSelection(0)
cf694132
RD
78
79
185d7c3e
RD
80 sampleList = sampleList + ['test a', 'test aa', 'test aab',
81 'test ab', 'test abc', 'test abcc',
82 'test abcd' ]
83 sampleList.sort()
84 wxStaticText(self, -1, "Find Prefix:", wxPoint(15, 250))
85 fp = wxFindPrefixListBox(self, -1, wxPoint(80, 250), wxSize(80, 120),
86 sampleList, wxLB_SINGLE)
87 fp.SetSelection(0)
88
89
cf694132
RD
90 def EvtListBox(self, event):
91 self.log.WriteText('EvtListBox: %s\n' % event.GetString())
92
93 def EvtListBoxDClick(self, event):
bb0054cd 94 self.log.WriteText('EvtListBoxDClick: %s\n' % self.lb1.GetSelection())
5d1bd859 95 self.lb1.Delete(self.lb1.GetSelection())
cf694132
RD
96
97 def EvtMultiListBox(self, event):
bb0054cd 98 self.log.WriteText('EvtMultiListBox: %s\n' % str(self.lb2.GetSelections()))
cf694132 99
bb0054cd
RD
100 def EvtRightButton(self, event):
101 self.log.WriteText('EvtRightButton: %s\n' % event.GetPosition())
cf694132
RD
102
103#---------------------------------------------------------------------------
104
105def runTest(frame, nb, log):
106 win = TestListBox(nb, log)
107 return win
108
109#---------------------------------------------------------------------------
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124overview = """\
125A listbox is used to select one or more of a list of strings. The strings are displayed in a scrolling box, with the selected string(s) marked in reverse video. A listbox can be single selection (if an item is selected, the previous selection is removed) or multiple selection (clicking an item toggles the item on or off independently of other selections).
126
127List box elements are numbered from zero.
128
129wxListBox()
130---------------------
131
132Default constructor.
133
134wxListBox(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, int n, const wxString choices[] = NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = "listBox")
135
136Constructor, creating and showing a list box.
137
138Parameters
139-------------------
140
141parent = Parent window. Must not be NULL.
142
143id = Window identifier. A value of -1 indicates a default value.
144
145pos = Window position.
146
147size = Window size. If the default size (-1, -1) is specified then the window is sized appropriately.
148
149n = Number of strings with which to initialise the control.
150
151choices = An array of strings with which to initialise the control.
152
153style = Window style. See wxListBox.
154
155validator = Window validator.
156
157name = Window name.
158"""