]> git.saurik.com Git - wxWidgets.git/blame - samples/widgets/combobox.cpp
fixed incorrectly reported WXWIN_COMPATIBILITY_2_6 value in summary
[wxWidgets.git] / samples / widgets / combobox.cpp
CommitLineData
32b8ec41 1/////////////////////////////////////////////////////////////////////////////
be5a51fb 2// Program: wxWidgets Widgets Sample
32b8ec41
VZ
3// Name: combobox.cpp
4// Purpose: Part of the widgets sample showing wxComboBox
5// Author: Vadim Zeitlin
6// Created: 27.03.01
7// Id: $Id$
8// Copyright: (c) 2001 Vadim Zeitlin
9// License: wxWindows license
10/////////////////////////////////////////////////////////////////////////////
11
12// ============================================================================
13// declarations
14// ============================================================================
15
16// ----------------------------------------------------------------------------
17// headers
18// ----------------------------------------------------------------------------
19
20// for compilers that support precompilation, includes "wx/wx.h".
21#include "wx/wxprec.h"
22
23#ifdef __BORLANDC__
24 #pragma hdrstop
25#endif
26
3379ed37
VZ
27#if wxUSE_COMBOBOX
28
32b8ec41
VZ
29// for all others, include the necessary headers
30#ifndef WX_PRECOMP
31 #include "wx/log.h"
32
3bb70c40 33 #include "wx/bitmap.h"
32b8ec41
VZ
34 #include "wx/button.h"
35 #include "wx/checkbox.h"
36 #include "wx/combobox.h"
37 #include "wx/radiobox.h"
38 #include "wx/statbox.h"
39 #include "wx/textctrl.h"
40#endif
41
42#include "wx/sizer.h"
43
44#include "widgets.h"
7b127900 45#if 1
32b8ec41
VZ
46#include "icons/combobox.xpm"
47
48// ----------------------------------------------------------------------------
49// constants
50// ----------------------------------------------------------------------------
51
52// control ids
53enum
54{
f0fa4312 55 ComboPage_Reset = wxID_HIGHEST,
32b8ec41 56 ComboPage_CurText,
9849a944 57 ComboPage_InsertionPointText,
243dbf1a
VZ
58 ComboPage_Insert,
59 ComboPage_InsertText,
32b8ec41
VZ
60 ComboPage_Add,
61 ComboPage_AddText,
62 ComboPage_AddSeveral,
63 ComboPage_AddMany,
64 ComboPage_Clear,
65 ComboPage_Change,
66 ComboPage_ChangeText,
67 ComboPage_Delete,
68 ComboPage_DeleteText,
69 ComboPage_DeleteSel,
70 ComboPage_Combo
71};
72
73// kinds of comboboxes
74enum
75{
76 ComboKind_Default,
77 ComboKind_Simple,
78 ComboKind_DropDown
79};
80
81// ----------------------------------------------------------------------------
82// ComboboxWidgetsPage
83// ----------------------------------------------------------------------------
84
85class ComboboxWidgetsPage : public WidgetsPage
86{
87public:
f2fdc4d5 88 ComboboxWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist);
32b8ec41 89
195df7a7 90 virtual wxControl *GetWidget() const { return m_combobox; }
1301e228 91 virtual void RecreateWidget() { CreateCombo(); }
195df7a7 92
453535a7
WS
93 // lazy creation of the content
94 virtual void CreateContent();
95
32b8ec41
VZ
96protected:
97 // event handlers
98 void OnButtonReset(wxCommandEvent& event);
99 void OnButtonChange(wxCommandEvent& event);
100 void OnButtonDelete(wxCommandEvent& event);
101 void OnButtonDeleteSel(wxCommandEvent& event);
102 void OnButtonClear(wxCommandEvent& event);
243dbf1a 103 void OnButtonInsert(wxCommandEvent &event);
32b8ec41
VZ
104 void OnButtonAdd(wxCommandEvent& event);
105 void OnButtonAddSeveral(wxCommandEvent& event);
106 void OnButtonAddMany(wxCommandEvent& event);
107
108 void OnComboBox(wxCommandEvent& event);
109 void OnComboText(wxCommandEvent& event);
110
111 void OnCheckOrRadioBox(wxCommandEvent& event);
112
113 void OnUpdateUICurText(wxUpdateUIEvent& event);
9849a944 114 void OnUpdateUIInsertionPointText(wxUpdateUIEvent& event);
32b8ec41 115
243dbf1a 116 void OnUpdateUIInsert(wxUpdateUIEvent& event);
32b8ec41
VZ
117 void OnUpdateUIAddSeveral(wxUpdateUIEvent& event);
118 void OnUpdateUIClearButton(wxUpdateUIEvent& event);
119 void OnUpdateUIDeleteButton(wxUpdateUIEvent& event);
120 void OnUpdateUIDeleteSelButton(wxUpdateUIEvent& event);
121 void OnUpdateUIResetButton(wxUpdateUIEvent& event);
122
123 // reset the combobox parameters
124 void Reset();
125
126 // (re)create the combobox
127 void CreateCombo();
128
129 // the controls
130 // ------------
131
132 // the sel mode radiobox
133 wxRadioBox *m_radioKind;
134
135 // the checkboxes for styles
136 wxCheckBox *m_chkSort,
5f6475c1
VZ
137 *m_chkReadonly,
138 *m_chkFilename;
32b8ec41
VZ
139
140 // the combobox itself and the sizer it is in
141 wxComboBox *m_combobox;
142 wxSizer *m_sizerCombo;
143
144 // the text entries for "Add/change string" and "Delete" buttons
243dbf1a
VZ
145 wxTextCtrl *m_textInsert,
146 *m_textAdd,
32b8ec41
VZ
147 *m_textChange,
148 *m_textDelete;
149
150private:
5e173f35
GD
151 DECLARE_EVENT_TABLE()
152 DECLARE_WIDGETS_PAGE(ComboboxWidgetsPage)
32b8ec41
VZ
153};
154
155// ----------------------------------------------------------------------------
156// event tables
157// ----------------------------------------------------------------------------
158
159BEGIN_EVENT_TABLE(ComboboxWidgetsPage, WidgetsPage)
160 EVT_BUTTON(ComboPage_Reset, ComboboxWidgetsPage::OnButtonReset)
161 EVT_BUTTON(ComboPage_Change, ComboboxWidgetsPage::OnButtonChange)
162 EVT_BUTTON(ComboPage_Delete, ComboboxWidgetsPage::OnButtonDelete)
163 EVT_BUTTON(ComboPage_DeleteSel, ComboboxWidgetsPage::OnButtonDeleteSel)
164 EVT_BUTTON(ComboPage_Clear, ComboboxWidgetsPage::OnButtonClear)
243dbf1a 165 EVT_BUTTON(ComboPage_Insert, ComboboxWidgetsPage::OnButtonInsert)
32b8ec41
VZ
166 EVT_BUTTON(ComboPage_Add, ComboboxWidgetsPage::OnButtonAdd)
167 EVT_BUTTON(ComboPage_AddSeveral, ComboboxWidgetsPage::OnButtonAddSeveral)
168 EVT_BUTTON(ComboPage_AddMany, ComboboxWidgetsPage::OnButtonAddMany)
169
243dbf1a 170 EVT_TEXT_ENTER(ComboPage_InsertText, ComboboxWidgetsPage::OnButtonInsert)
32b8ec41
VZ
171 EVT_TEXT_ENTER(ComboPage_AddText, ComboboxWidgetsPage::OnButtonAdd)
172 EVT_TEXT_ENTER(ComboPage_DeleteText, ComboboxWidgetsPage::OnButtonDelete)
173
174 EVT_UPDATE_UI(ComboPage_CurText, ComboboxWidgetsPage::OnUpdateUICurText)
9849a944 175 EVT_UPDATE_UI(ComboPage_InsertionPointText, ComboboxWidgetsPage::OnUpdateUIInsertionPointText)
32b8ec41
VZ
176
177 EVT_UPDATE_UI(ComboPage_Reset, ComboboxWidgetsPage::OnUpdateUIResetButton)
243dbf1a 178 EVT_UPDATE_UI(ComboPage_Insert, ComboboxWidgetsPage::OnUpdateUIInsert)
32b8ec41
VZ
179 EVT_UPDATE_UI(ComboPage_AddSeveral, ComboboxWidgetsPage::OnUpdateUIAddSeveral)
180 EVT_UPDATE_UI(ComboPage_Clear, ComboboxWidgetsPage::OnUpdateUIClearButton)
181 EVT_UPDATE_UI(ComboPage_DeleteText, ComboboxWidgetsPage::OnUpdateUIClearButton)
182 EVT_UPDATE_UI(ComboPage_Delete, ComboboxWidgetsPage::OnUpdateUIDeleteButton)
183 EVT_UPDATE_UI(ComboPage_Change, ComboboxWidgetsPage::OnUpdateUIDeleteSelButton)
184 EVT_UPDATE_UI(ComboPage_ChangeText, ComboboxWidgetsPage::OnUpdateUIDeleteSelButton)
185 EVT_UPDATE_UI(ComboPage_DeleteSel, ComboboxWidgetsPage::OnUpdateUIDeleteSelButton)
186
187 EVT_COMBOBOX(ComboPage_Combo, ComboboxWidgetsPage::OnComboBox)
188 EVT_TEXT(ComboPage_Combo, ComboboxWidgetsPage::OnComboText)
243dbf1a 189 EVT_TEXT_ENTER(ComboPage_Combo, ComboboxWidgetsPage::OnComboText)
32b8ec41 190
206d3a16
JS
191 EVT_CHECKBOX(wxID_ANY, ComboboxWidgetsPage::OnCheckOrRadioBox)
192 EVT_RADIOBOX(wxID_ANY, ComboboxWidgetsPage::OnCheckOrRadioBox)
32b8ec41
VZ
193END_EVENT_TABLE()
194
195// ============================================================================
196// implementation
197// ============================================================================
198
f0fa4312
WS
199#if defined(__WXUNIVERSAL__)
200 #define FAMILY_CTRLS UNIVERSAL_CTRLS
201#else
202 #define FAMILY_CTRLS NATIVE_CTRLS
203#endif
204
f2fdc4d5 205IMPLEMENT_WIDGETS_PAGE(ComboboxWidgetsPage, _T("Combobox"),
f0fa4312 206 FAMILY_CTRLS | WITH_ITEMS_CTRLS | COMBO_CTRLS
f2fdc4d5 207 );
32b8ec41 208
f2fdc4d5 209ComboboxWidgetsPage::ComboboxWidgetsPage(WidgetsBookCtrl *book,
61c083e7 210 wxImageList *imaglist)
261357eb 211 : WidgetsPage(book, imaglist, combobox_xpm)
32b8ec41 212{
32b8ec41
VZ
213 // init everything
214 m_chkSort =
5f6475c1
VZ
215 m_chkReadonly =
216 m_chkFilename = (wxCheckBox *)NULL;
32b8ec41
VZ
217
218 m_combobox = (wxComboBox *)NULL;
219 m_sizerCombo = (wxSizer *)NULL;
453535a7 220}
32b8ec41 221
453535a7
WS
222void ComboboxWidgetsPage::CreateContent()
223{
32b8ec41
VZ
224 /*
225 What we create here is a frame having 3 panes: style pane is the
226 leftmost one, in the middle the pane with buttons allowing to perform
227 miscellaneous combobox operations and the pane containing the combobox
228 itself to the right
229 */
230 wxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL);
231
232 // left pane
206d3a16 233 wxStaticBox *box = new wxStaticBox(this, wxID_ANY, _T("&Set style"));
32b8ec41
VZ
234
235 // should be in sync with ComboKind_XXX values
236 static const wxString kinds[] =
237 {
238 _T("default"),
239 _T("simple"),
240 _T("drop down"),
241 };
242
206d3a16 243 m_radioKind = new wxRadioBox(this, wxID_ANY, _T("Combobox &kind:"),
32b8ec41
VZ
244 wxDefaultPosition, wxDefaultSize,
245 WXSIZEOF(kinds), kinds,
246 1, wxRA_SPECIFY_COLS);
247
248 wxSizer *sizerLeft = new wxStaticBoxSizer(box, wxVERTICAL);
249
250 m_chkSort = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Sort items"));
251 m_chkReadonly = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Read only"));
5f6475c1 252 m_chkFilename = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&File name"));
55b43eaa 253 m_chkFilename->Disable(); // not implemented yet
32b8ec41
VZ
254
255 sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer
256 sizerLeft->Add(m_radioKind, 0, wxGROW | wxALL, 5);
257
258 wxButton *btn = new wxButton(this, ComboPage_Reset, _T("&Reset"));
259 sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15);
260
261 // middle pane
206d3a16
JS
262 wxStaticBox *box2 = new wxStaticBox(this, wxID_ANY,
263 _T("&Change combobox contents"));
32b8ec41
VZ
264 wxSizer *sizerMiddle = new wxStaticBoxSizer(box2, wxVERTICAL);
265
266 wxSizer *sizerRow;
267
268 wxTextCtrl *text;
269 sizerRow = CreateSizerWithTextAndLabel(_T("Current selection"),
270 ComboPage_CurText,
271 &text);
206d3a16 272 text->SetEditable(false);
32b8ec41
VZ
273
274 sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
275
9849a944
VZ
276 sizerRow = CreateSizerWithTextAndLabel(_T("Insertion Point"),
277 ComboPage_InsertionPointText,
278 &text);
279 text->SetEditable(false);
280
281 sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
282
243dbf1a
VZ
283 sizerRow = CreateSizerWithTextAndButton(ComboPage_Insert,
284 _T("&Insert this string"),
285 ComboPage_InsertText,
286 &m_textInsert);
287 sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
288
32b8ec41
VZ
289 sizerRow = CreateSizerWithTextAndButton(ComboPage_Add,
290 _T("&Add this string"),
291 ComboPage_AddText,
292 &m_textAdd);
293 sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
294
243dbf1a 295 btn = new wxButton(this, ComboPage_AddSeveral, _T("&Append a few strings"));
32b8ec41
VZ
296 sizerMiddle->Add(btn, 0, wxALL | wxGROW, 5);
297
243dbf1a 298 btn = new wxButton(this, ComboPage_AddMany, _T("Append &many strings"));
32b8ec41
VZ
299 sizerMiddle->Add(btn, 0, wxALL | wxGROW, 5);
300
301 sizerRow = CreateSizerWithTextAndButton(ComboPage_Change,
302 _T("C&hange current"),
303 ComboPage_ChangeText,
304 &m_textChange);
305 sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
306
307 sizerRow = CreateSizerWithTextAndButton(ComboPage_Delete,
308 _T("&Delete this item"),
309 ComboPage_DeleteText,
310 &m_textDelete);
311 sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
312
313 btn = new wxButton(this, ComboPage_DeleteSel, _T("Delete &selection"));
314 sizerMiddle->Add(btn, 0, wxALL | wxGROW, 5);
315
316 btn = new wxButton(this, ComboPage_Clear, _T("&Clear"));
317 sizerMiddle->Add(btn, 0, wxALL | wxGROW, 5);
318
319 // right pane
320 wxSizer *sizerRight = new wxBoxSizer(wxVERTICAL);
206d3a16 321 m_combobox = new wxComboBox(this, ComboPage_Combo, wxEmptyString,
32b8ec41
VZ
322 wxDefaultPosition, wxDefaultSize,
323 0, NULL,
324 0);
6f002df4 325 sizerRight->Add(m_combobox, 0, wxGROW | wxALL, 5);
7b127900 326 sizerRight->SetMinSize(150, 0);
32b8ec41
VZ
327 m_sizerCombo = sizerRight; // save it to modify it later
328
329 // the 3 panes panes compose the window
330 sizerTop->Add(sizerLeft, 0, wxGROW | (wxALL & ~wxLEFT), 10);
331 sizerTop->Add(sizerMiddle, 1, wxGROW | wxALL, 10);
332 sizerTop->Add(sizerRight, 1, wxGROW | (wxALL & ~wxRIGHT), 10);
333
334 // final initializations
335 Reset();
336
32b8ec41 337 SetSizer(sizerTop);
32b8ec41
VZ
338}
339
340// ----------------------------------------------------------------------------
341// operations
342// ----------------------------------------------------------------------------
343
344void ComboboxWidgetsPage::Reset()
345{
206d3a16
JS
346 m_chkSort->SetValue(false);
347 m_chkReadonly->SetValue(false);
5f6475c1 348 m_chkFilename->SetValue(false);
32b8ec41
VZ
349}
350
351void ComboboxWidgetsPage::CreateCombo()
352{
1301e228 353 int flags = ms_defaultFlags;
32b8ec41
VZ
354
355 if ( m_chkSort->GetValue() )
356 flags |= wxCB_SORT;
357 if ( m_chkReadonly->GetValue() )
358 flags |= wxCB_READONLY;
359
360 switch ( m_radioKind->GetSelection() )
361 {
362 default:
363 wxFAIL_MSG( _T("unknown combo kind") );
364 // fall through
365
366 case ComboKind_Default:
367 break;
368
369 case ComboKind_Simple:
370 flags |= wxCB_SIMPLE;
371 break;
372
373 case ComboKind_DropDown:
374 flags = wxCB_DROPDOWN;
375 break;
376 }
377
378 wxArrayString items;
379 if ( m_combobox )
380 {
aa61d352
VZ
381 unsigned int count = m_combobox->GetCount();
382 for ( unsigned int n = 0; n < count; n++ )
32b8ec41
VZ
383 {
384 items.Add(m_combobox->GetString(n));
385 }
386
12a3f227 387 m_sizerCombo->Detach( m_combobox );
32b8ec41
VZ
388 delete m_combobox;
389 }
390
206d3a16 391 m_combobox = new wxComboBox(this, ComboPage_Combo, wxEmptyString,
32b8ec41
VZ
392 wxDefaultPosition, wxDefaultSize,
393 0, NULL,
394 flags);
395
55b43eaa
VZ
396#if 0
397 if ( m_chkFilename->GetValue() )
398 ;
399#endif // TODO
400
aa61d352
VZ
401 unsigned int count = items.GetCount();
402 for ( unsigned int n = 0; n < count; n++ )
32b8ec41
VZ
403 {
404 m_combobox->Append(items[n]);
405 }
406
407 m_sizerCombo->Add(m_combobox, 1, wxGROW | wxALL, 5);
408 m_sizerCombo->Layout();
409}
410
411// ----------------------------------------------------------------------------
412// event handlers
413// ----------------------------------------------------------------------------
414
415void ComboboxWidgetsPage::OnButtonReset(wxCommandEvent& WXUNUSED(event))
416{
417 Reset();
418
419 CreateCombo();
420}
421
422void ComboboxWidgetsPage::OnButtonChange(wxCommandEvent& WXUNUSED(event))
423{
424 int sel = m_combobox->GetSelection();
453535a7 425 if ( sel != wxNOT_FOUND )
32b8ec41
VZ
426 {
427#ifndef __WXGTK__
428 m_combobox->SetString(sel, m_textChange->GetValue());
429#else
430 wxLogMessage(_T("Not implemented in wxGTK"));
431#endif
432 }
433}
434
435void ComboboxWidgetsPage::OnButtonDelete(wxCommandEvent& WXUNUSED(event))
436{
437 unsigned long n;
438 if ( !m_textDelete->GetValue().ToULong(&n) ||
aa61d352 439 (n >= m_combobox->GetCount()) )
32b8ec41
VZ
440 {
441 return;
442 }
443
444 m_combobox->Delete(n);
445}
446
447void ComboboxWidgetsPage::OnButtonDeleteSel(wxCommandEvent& WXUNUSED(event))
448{
449 int sel = m_combobox->GetSelection();
aa61d352 450 if ( sel != wxNOT_FOUND )
32b8ec41
VZ
451 {
452 m_combobox->Delete(sel);
453 }
454}
455
c02e5a31 456void ComboboxWidgetsPage::OnButtonClear(wxCommandEvent& WXUNUSED(event))
32b8ec41
VZ
457{
458 m_combobox->Clear();
459}
460
c02e5a31 461void ComboboxWidgetsPage::OnButtonInsert(wxCommandEvent& WXUNUSED(event))
243dbf1a
VZ
462{
463 static unsigned int s_item = 0;
464
465 wxString s = m_textInsert->GetValue();
466 if ( !m_textInsert->IsModified() )
467 {
468 // update the default string
469 m_textInsert->SetValue(wxString::Format(_T("test item %u"), ++s_item));
470 }
471
472 if (m_combobox->GetSelection() >= 0)
473 m_combobox->Insert(s, m_combobox->GetSelection());
474}
475
c02e5a31 476void ComboboxWidgetsPage::OnButtonAdd(wxCommandEvent& WXUNUSED(event))
32b8ec41 477{
0c61716c 478 static unsigned int s_item = 0;
32b8ec41
VZ
479
480 wxString s = m_textAdd->GetValue();
481 if ( !m_textAdd->IsModified() )
482 {
483 // update the default string
484 m_textAdd->SetValue(wxString::Format(_T("test item %u"), ++s_item));
485 }
486
487 m_combobox->Append(s);
488}
489
490void ComboboxWidgetsPage::OnButtonAddMany(wxCommandEvent& WXUNUSED(event))
491{
492 // "many" means 1000 here
0c61716c 493 for ( unsigned int n = 0; n < 1000; n++ )
32b8ec41
VZ
494 {
495 m_combobox->Append(wxString::Format(_T("item #%u"), n));
496 }
497}
498
c02e5a31 499void ComboboxWidgetsPage::OnButtonAddSeveral(wxCommandEvent& WXUNUSED(event))
32b8ec41
VZ
500{
501 m_combobox->Append(_T("First"));
502 m_combobox->Append(_T("another one"));
503 m_combobox->Append(_T("and the last (very very very very very very very very very very long) one"));
504}
505
506void ComboboxWidgetsPage::OnUpdateUICurText(wxUpdateUIEvent& event)
507{
e640f823
JS
508 if (m_combobox)
509 event.SetText( wxString::Format(_T("%d"), m_combobox->GetSelection()) );
32b8ec41
VZ
510}
511
9849a944
VZ
512void ComboboxWidgetsPage::OnUpdateUIInsertionPointText(wxUpdateUIEvent& event)
513{
514 if (m_combobox)
e95c145c 515 event.SetText( wxString::Format(_T("%ld"), m_combobox->GetInsertionPoint()) );
9849a944
VZ
516}
517
32b8ec41
VZ
518void ComboboxWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
519{
5f6475c1
VZ
520 event.Enable( m_chkSort->GetValue() ||
521 m_chkReadonly->GetValue() ||
522 m_chkFilename->GetValue() );
32b8ec41
VZ
523}
524
243dbf1a
VZ
525void ComboboxWidgetsPage::OnUpdateUIInsert(wxUpdateUIEvent& event)
526{
527 if (m_combobox)
528 {
529 bool enable = !(m_combobox->GetWindowStyle() & wxCB_SORT) &&
530 (m_combobox->GetSelection() >= 0);
531
532 event.Enable(enable);
533 }
534}
535
32b8ec41
VZ
536void ComboboxWidgetsPage::OnUpdateUIDeleteButton(wxUpdateUIEvent& event)
537{
e640f823
JS
538 if (m_combobox)
539 {
540 unsigned long n;
541 event.Enable(m_textDelete->GetValue().ToULong(&n) &&
2f6c54eb 542 (n < (unsigned)m_combobox->GetCount()));
e640f823 543 }
32b8ec41
VZ
544}
545
546void ComboboxWidgetsPage::OnUpdateUIDeleteSelButton(wxUpdateUIEvent& event)
547{
e640f823 548 if (m_combobox)
453535a7 549 event.Enable(m_combobox->GetSelection() != wxNOT_FOUND);
32b8ec41
VZ
550}
551
552void ComboboxWidgetsPage::OnUpdateUIClearButton(wxUpdateUIEvent& event)
553{
e640f823
JS
554 if (m_combobox)
555 event.Enable(m_combobox->GetCount() != 0);
32b8ec41
VZ
556}
557
558void ComboboxWidgetsPage::OnUpdateUIAddSeveral(wxUpdateUIEvent& event)
559{
e640f823
JS
560 if (m_combobox)
561 event.Enable(!(m_combobox->GetWindowStyle() & wxCB_SORT));
32b8ec41
VZ
562}
563
564void ComboboxWidgetsPage::OnComboText(wxCommandEvent& event)
565{
e640f823 566 if (!m_combobox)
2f6c54eb
VZ
567 return;
568
32b8ec41
VZ
569 wxString s = event.GetString();
570
571 wxASSERT_MSG( s == m_combobox->GetValue(),
572 _T("event and combobox values should be the same") );
573
243dbf1a
VZ
574 if (event.GetEventType() == wxEVT_COMMAND_TEXT_ENTER)
575 wxLogMessage(_T("Combobox enter pressed (now '%s')"), s.c_str());
576 else
bfd84575 577 wxLogMessage(_T("Combobox text changed (now '%s')"), s.c_str());
32b8ec41
VZ
578}
579
580void ComboboxWidgetsPage::OnComboBox(wxCommandEvent& event)
581{
aec18ff7 582 long sel = event.GetInt();
32b8ec41
VZ
583 m_textDelete->SetValue(wxString::Format(_T("%ld"), sel));
584
aec18ff7 585 wxLogMessage(_T("Combobox item %ld selected"), sel);
bfd84575 586
78b3b018 587 wxLogMessage(_T("Combobox GetValue(): %s"), m_combobox->GetValue().c_str() );
32b8ec41
VZ
588}
589
c02e5a31 590void ComboboxWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event))
32b8ec41
VZ
591{
592 CreateCombo();
593}
594
3379ed37
VZ
595#endif //wxUSE_COMBOBOX
596
7b127900 597#endif