]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/listbox.h
wxTextEntry::SetMargins(), GetMargins() - implemented on wxMSW and wxGTK (GTK+ 2...
[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)}
3051a44a
FM
57 Process a wxEVT_COMMAND_LISTBOXDOUBLECLICKED event, when the listbox
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.
23324ae1 98 */
320ab87c 99
7c913512
FM
100 wxListBox(wxWindow* parent, wxWindowID id,
101 const wxPoint& pos = wxDefaultPosition,
102 const wxSize& size = wxDefaultSize,
103 int n = 0,
4cc4bfaf 104 const wxString choices[] = NULL,
7c913512
FM
105 long style = 0,
106 const wxValidator& validator = wxDefaultValidator,
320ab87c
FM
107 const wxString& name = wxListBoxNameStr);
108
021b6794 109 /**
320ab87c 110 Constructor, creating and showing a list box.
021b6794 111
320ab87c
FM
112 See the other wxListBox() constructor; the only difference is that
113 this overload takes a wxArrayString instead of a pointer to an array
114 of wxString.
021b6794 115 */
320ab87c 116
7c913512
FM
117 wxListBox(wxWindow* parent, wxWindowID id,
118 const wxPoint& pos,
119 const wxSize& size,
120 const wxArrayString& choices,
121 long style = 0,
122 const wxValidator& validator = wxDefaultValidator,
320ab87c 123 const wxString& name = wxListBoxNameStr);
23324ae1
FM
124
125 /**
126 Destructor, destroying the list box.
127 */
adaaa686 128 virtual ~wxListBox();
23324ae1
FM
129
130 //@{
131 /**
320ab87c
FM
132 Creates the listbox for two-step construction.
133 See wxListBox() for further details.
23324ae1 134 */
57bf907d 135 bool Create(wxWindow *parent, wxWindowID id,
23324ae1
FM
136 const wxPoint& pos = wxDefaultPosition,
137 const wxSize& size = wxDefaultSize,
57bf907d 138 int n = 0, const wxString choices[] = NULL,
23324ae1
FM
139 long style = 0,
140 const wxValidator& validator = wxDefaultValidator,
57bf907d
FM
141 const wxString& name = wxListBoxNameStr);
142 bool Create(wxWindow *parent, wxWindowID id,
7c913512
FM
143 const wxPoint& pos,
144 const wxSize& size,
145 const wxArrayString& choices,
146 long style = 0,
147 const wxValidator& validator = wxDefaultValidator,
57bf907d 148 const wxString& name = wxListBoxNameStr);
23324ae1
FM
149 //@}
150
151 /**
152 Deselects an item in the list box.
3c4f71cc 153
7c913512 154 @param n
4cc4bfaf 155 The zero-based item to deselect.
3c4f71cc 156
23324ae1
FM
157 @remarks This applies to multiple selection listboxes only.
158 */
159 void Deselect(int n);
160
161 /**
162 Fill an array of ints with the positions of the currently selected items.
3c4f71cc 163
7c913512 164 @param selections
4cc4bfaf 165 A reference to an wxArrayInt instance that is used to store the result of
320ab87c 166 the query.
3c4f71cc 167
d29a9a8a 168 @return The number of selections.
3c4f71cc 169
23324ae1 170 @remarks Use this with a multiple selection listbox.
3c4f71cc 171
4cc4bfaf
FM
172 @see wxControlWithItems::GetSelection, wxControlWithItems::GetStringSelection,
173 wxControlWithItems::SetSelection
23324ae1 174 */
adaaa686 175 virtual int GetSelections(wxArrayInt& selections) const;
23324ae1
FM
176
177 /**
320ab87c
FM
178 Returns the item located at @a point, or @c wxNOT_FOUND if there
179 is no item located at @a point.
3c4f71cc 180
1e24c2af 181 It is currently implemented for wxMSW, wxMac and wxGTK2 ports.
3c4f71cc 182
7c913512 183 @param point
4cc4bfaf 184 Point of item (in client coordinates) to obtain
3c4f71cc 185
d29a9a8a 186 @return Item located at point, or wxNOT_FOUND if unimplemented or the
320ab87c 187 item does not exist.
1e24c2af
VS
188
189 @since 2.7.0
23324ae1 190 */
320ab87c 191 int HitTest(const wxPoint& point) const;
d4624460
FM
192
193 /**
194 @overload
195 */
0a03dc7a 196 int HitTest(int x, int y) const;
23324ae1 197
23324ae1
FM
198 /**
199 Insert the given number of strings before the specified position.
3c4f71cc 200
7c913512 201 @param nItems
4cc4bfaf 202 Number of items in the array items
7c913512 203 @param items
4cc4bfaf 204 Labels of items to be inserted
7c913512 205 @param pos
021b6794
RR
206 Position before which to insert the items: if pos is 0 the
207 items will be inserted in the beginning of the listbox
23324ae1 208 */
0a98423e 209 void InsertItems(unsigned int nItems, const wxString *items,
23324ae1 210 unsigned int pos);
021b6794
RR
211
212 /**
213 Insert the given number of strings before the specified position.
214
215 @param items
216 Labels of items to be inserted
217 @param pos
320ab87c 218 Position before which to insert the items: if pos is @c 0 the
021b6794
RR
219 items will be inserted in the beginning of the listbox
220 */
221 void InsertItems(const wxArrayString& items,
7c913512 222 unsigned int pos);
23324ae1
FM
223
224 /**
225 Determines whether an item is selected.
3c4f71cc 226
7c913512 227 @param n
4cc4bfaf 228 The zero-based item index.
3c4f71cc 229
d29a9a8a 230 @return @true if the given item is selected, @false otherwise.
23324ae1 231 */
adaaa686 232 virtual bool IsSelected(int n) const;
23324ae1 233
23324ae1
FM
234 /**
235 Clears the list box and adds the given strings to it.
3c4f71cc 236
7c913512 237 @param n
4cc4bfaf 238 The number of strings to set.
7c913512 239 @param choices
4cc4bfaf 240 An array of strings to set.
7c913512 241 @param clientData
4cc4bfaf 242 Options array of client data pointers
021b6794 243 */
0a98423e 244 void Set(unsigned int n, const wxString* choices, void *clientData);
3c4f71cc 245
021b6794 246 /**
320ab87c
FM
247 Clears the list box and adds the given strings to it.
248 You may free the array from the calling program after this method
021b6794
RR
249 has been called.
250
251 @param choices
252 An array of strings to set.
253 @param clientData
254 Options array of client data pointers
23324ae1 255 */
0a98423e 256 void Set(const wxArrayString& choices, void *clientData);
23324ae1 257
23324ae1
FM
258 /**
259 Set the specified item to be the first visible item.
3c4f71cc 260
7c913512 261 @param n
021b6794
RR
262 The zero-based item index that should be visible.
263 */
264 void SetFirstItem(int n);
265
266 /**
267 Set the specified item to be the first visible item.
268
7c913512 269 @param string
4cc4bfaf 270 The string that should be visible.
23324ae1 271 */
7c913512 272 void SetFirstItem(const wxString& string);
23324ae1 273};
e54c96f1 274