]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/listbox.h
Must clear property selection in wxPGProperty::SetChoices() or risk a crash
[wxWidgets.git] / interface / wx / listbox.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: listbox.h
e54c96f1 3// Purpose: interface of wxListBox
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
6// Licence: wxWindows license
7/////////////////////////////////////////////////////////////////////////////
8
9/**
10 @class wxListBox
7c913512 11
320ab87c
FM
12 A listbox is used to select one or more of a list of strings.
13
14 The strings are displayed in a scrolling box, with the selected string(s)
15 marked in reverse video. A listbox can be single selection (if an item is
16 selected, the previous selection is removed) or multiple selection
23324ae1
FM
17 (clicking an item toggles the item on or off independently of other
18 selections).
7c913512 19
320ab87c
FM
20 List box elements are numbered from zero.
21 Their number may be limited under some platforms.
7c913512 22
320ab87c
FM
23 A listbox callback gets an event @c wxEVT_COMMAND_LISTBOX_SELECTED for
24 single clicks, and @c wxEVT_COMMAND_LISTBOX_DOUBLECLICKED for double clicks.
7c913512 25
23324ae1 26 @beginStyleTable
8c6791e4 27 @style{wxLB_SINGLE}
3051a44a 28 Single-selection list.
8c6791e4 29 @style{wxLB_MULTIPLE}
3051a44a
FM
30 Multiple-selection list: the user can toggle multiple items on and off.
31 This is the same as wxLB_EXTENDED in wxGTK2 port.
8c6791e4 32 @style{wxLB_EXTENDED}
3051a44a
FM
33 Extended-selection list: the user can extend the selection by using
34 @c SHIFT or @c CTRL keys together with the cursor movement keys or
35 the mouse.
8c6791e4 36 @style{wxLB_HSCROLL}
3051a44a 37 Create horizontal scrollbar if contents are too wide (Windows only).
8c6791e4 38 @style{wxLB_ALWAYS_SB}
3051a44a 39 Always show a vertical scrollbar.
8c6791e4 40 @style{wxLB_NEEDED_SB}
3051a44a 41 Only create a vertical scrollbar if needed.
58dcd1ae
VZ
42 @style{wxLB_NO_SB}
43 Don't create vertical scrollbar (wxMSW only).
8c6791e4 44 @style{wxLB_SORT}
3051a44a 45 The listbox contents are sorted in alphabetical order.
23324ae1 46 @endStyleTable
7c913512 47
320ab87c
FM
48 Note that @c wxLB_SINGLE, @c wxLB_MULTIPLE and @c wxLB_EXTENDED styles are
49 mutually exclusive and you can specify at most one of them (single selection
50 is the default). See also @ref overview_windowstyles.
51
3051a44a 52 @beginEventEmissionTable{wxCommandEvent}
8c6791e4 53 @event{EVT_LISTBOX(id, func)}
3051a44a
FM
54 Process a wxEVT_COMMAND_LISTBOX_SELECTED event, when an item on the
55 list is selected or the selection changes.
8c6791e4 56 @event{EVT_LISTBOX_DCLICK(id, func)}
dc47e0ad 57 Process a wxEVT_COMMAND_LISTBOX_DOUBLECLICKED event, when the listbox
3051a44a 58 is double-clicked.
23324ae1 59 @endEventTable
7c913512 60
23324ae1
FM
61 @library{wxcore}
62 @category{ctrl}
7e59b885 63 @appearance{listbox.png}
7c913512 64
d23914f8 65 @see wxEditableListBox, wxChoice, wxComboBox, wxListCtrl, wxCommandEvent
23324ae1
FM
66*/
67class wxListBox : public wxControlWithItems
68{
69public:
23324ae1 70 /**
021b6794
RR
71 Default constructor.
72 */
73 wxListBox();
320ab87c 74
021b6794 75 /**
320ab87c 76 Constructor, creating and showing a list box.
3c4f71cc 77
320ab87c
FM
78 @param parent
79 The parent window.
80 @param id
81 The ID of this control. A value of @c wxID_ANY indicates a default value.
82 @param pos
83 The initial position.
dc1b07fd 84 If ::wxDefaultPosition is specified then a default position is chosen.
320ab87c
FM
85 @param size
86 The initial size.
dc1b07fd 87 If ::wxDefaultSize is specified then the window is sized appropriately.
7c913512 88 @param n
4cc4bfaf 89 Number of strings with which to initialise the control.
320ab87c
FM
90 @param choices
91 The strings to use to initialize the control.
7c913512 92 @param style
4cc4bfaf 93 Window style. See wxListBox.
320ab87c
FM
94 @param validator
95 The validator for this control.
96 @param name
97 The name of this class.
1058f652
MB
98
99 @beginWxPerlOnly
100 Not supported by wxPerl.
101 @endWxPerlOnly
23324ae1 102 */
320ab87c 103
7c913512
FM
104 wxListBox(wxWindow* parent, wxWindowID id,
105 const wxPoint& pos = wxDefaultPosition,
106 const wxSize& size = wxDefaultSize,
107 int n = 0,
4cc4bfaf 108 const wxString choices[] = NULL,
7c913512
FM
109 long style = 0,
110 const wxValidator& validator = wxDefaultValidator,
320ab87c
FM
111 const wxString& name = wxListBoxNameStr);
112
021b6794 113 /**
320ab87c 114 Constructor, creating and showing a list box.
021b6794 115
320ab87c
FM
116 See the other wxListBox() constructor; the only difference is that
117 this overload takes a wxArrayString instead of a pointer to an array
118 of wxString.
1058f652
MB
119
120 @beginWxPerlOnly
121 Use an array reference for the @a choices parameter.
122 @endWxPerlOnly
021b6794 123 */
320ab87c 124
7c913512
FM
125 wxListBox(wxWindow* parent, wxWindowID id,
126 const wxPoint& pos,
127 const wxSize& size,
128 const wxArrayString& choices,
129 long style = 0,
130 const wxValidator& validator = wxDefaultValidator,
320ab87c 131 const wxString& name = wxListBoxNameStr);
23324ae1
FM
132
133 /**
134 Destructor, destroying the list box.
135 */
adaaa686 136 virtual ~wxListBox();
23324ae1
FM
137
138 //@{
139 /**
320ab87c
FM
140 Creates the listbox for two-step construction.
141 See wxListBox() for further details.
23324ae1 142 */
57bf907d 143 bool Create(wxWindow *parent, wxWindowID id,
23324ae1
FM
144 const wxPoint& pos = wxDefaultPosition,
145 const wxSize& size = wxDefaultSize,
57bf907d 146 int n = 0, const wxString choices[] = NULL,
23324ae1
FM
147 long style = 0,
148 const wxValidator& validator = wxDefaultValidator,
57bf907d
FM
149 const wxString& name = wxListBoxNameStr);
150 bool Create(wxWindow *parent, wxWindowID id,
7c913512
FM
151 const wxPoint& pos,
152 const wxSize& size,
153 const wxArrayString& choices,
154 long style = 0,
155 const wxValidator& validator = wxDefaultValidator,
57bf907d 156 const wxString& name = wxListBoxNameStr);
23324ae1
FM
157 //@}
158
159 /**
160 Deselects an item in the list box.
3c4f71cc 161
7c913512 162 @param n
4cc4bfaf 163 The zero-based item to deselect.
3c4f71cc 164
23324ae1
FM
165 @remarks This applies to multiple selection listboxes only.
166 */
167 void Deselect(int n);
168
169 /**
170 Fill an array of ints with the positions of the currently selected items.
3c4f71cc 171
7c913512 172 @param selections
4cc4bfaf 173 A reference to an wxArrayInt instance that is used to store the result of
320ab87c 174 the query.
3c4f71cc 175
d29a9a8a 176 @return The number of selections.
3c4f71cc 177
23324ae1 178 @remarks Use this with a multiple selection listbox.
3c4f71cc 179
1058f652
MB
180 @beginWxPerlOnly
181 In wxPerl this method takes no parameters and return the
182 selected items as a list.
183 @endWxPerlOnly
184
4cc4bfaf
FM
185 @see wxControlWithItems::GetSelection, wxControlWithItems::GetStringSelection,
186 wxControlWithItems::SetSelection
23324ae1 187 */
adaaa686 188 virtual int GetSelections(wxArrayInt& selections) const;
23324ae1
FM
189
190 /**
320ab87c
FM
191 Returns the item located at @a point, or @c wxNOT_FOUND if there
192 is no item located at @a point.
3c4f71cc 193
1e24c2af 194 It is currently implemented for wxMSW, wxMac and wxGTK2 ports.
3c4f71cc 195
7c913512 196 @param point
4cc4bfaf 197 Point of item (in client coordinates) to obtain
3c4f71cc 198
d29a9a8a 199 @return Item located at point, or wxNOT_FOUND if unimplemented or the
320ab87c 200 item does not exist.
1e24c2af
VS
201
202 @since 2.7.0
23324ae1 203 */
320ab87c 204 int HitTest(const wxPoint& point) const;
d4624460
FM
205
206 /**
207 @overload
208 */
0a03dc7a 209 int HitTest(int x, int y) const;
23324ae1 210
23324ae1
FM
211 /**
212 Insert the given number of strings before the specified position.
3c4f71cc 213
7c913512 214 @param nItems
4cc4bfaf 215 Number of items in the array items
7c913512 216 @param items
4cc4bfaf 217 Labels of items to be inserted
7c913512 218 @param pos
021b6794
RR
219 Position before which to insert the items: if pos is 0 the
220 items will be inserted in the beginning of the listbox
1058f652
MB
221
222 @beginWxPerlOnly
223 Not supported by wxPerl.
224 @endWxPerlOnly
23324ae1 225 */
0a98423e 226 void InsertItems(unsigned int nItems, const wxString *items,
23324ae1 227 unsigned int pos);
021b6794
RR
228
229 /**
230 Insert the given number of strings before the specified position.
231
232 @param items
233 Labels of items to be inserted
234 @param pos
320ab87c 235 Position before which to insert the items: if pos is @c 0 the
021b6794 236 items will be inserted in the beginning of the listbox
1058f652
MB
237
238 @beginWxPerlOnly
239 Use an array reference for the @a items parameter.
240 @endWxPerlOnly
021b6794
RR
241 */
242 void InsertItems(const wxArrayString& items,
7c913512 243 unsigned int pos);
23324ae1
FM
244
245 /**
246 Determines whether an item is selected.
3c4f71cc 247
7c913512 248 @param n
4cc4bfaf 249 The zero-based item index.
3c4f71cc 250
d29a9a8a 251 @return @true if the given item is selected, @false otherwise.
23324ae1 252 */
adaaa686 253 virtual bool IsSelected(int n) const;
23324ae1 254
23324ae1
FM
255 /**
256 Clears the list box and adds the given strings to it.
3c4f71cc 257
7c913512 258 @param n
4cc4bfaf 259 The number of strings to set.
7c913512 260 @param choices
4cc4bfaf 261 An array of strings to set.
7c913512 262 @param clientData
4cc4bfaf 263 Options array of client data pointers
021b6794 264 */
0a98423e 265 void Set(unsigned int n, const wxString* choices, void *clientData);
3c4f71cc 266
021b6794 267 /**
320ab87c
FM
268 Clears the list box and adds the given strings to it.
269 You may free the array from the calling program after this method
021b6794
RR
270 has been called.
271
272 @param choices
273 An array of strings to set.
274 @param clientData
275 Options array of client data pointers
23324ae1 276 */
0a98423e 277 void Set(const wxArrayString& choices, void *clientData);
23324ae1 278
23324ae1
FM
279 /**
280 Set the specified item to be the first visible item.
3c4f71cc 281
7c913512 282 @param n
021b6794
RR
283 The zero-based item index that should be visible.
284 */
285 void SetFirstItem(int n);
286
287 /**
288 Set the specified item to be the first visible item.
289
7c913512 290 @param string
4cc4bfaf 291 The string that should be visible.
23324ae1 292 */
7c913512 293 void SetFirstItem(const wxString& string);
23324ae1 294};
e54c96f1 295