X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0c61716c7912d7e6786beb21be2ba9bf99c65acb..4f31d61012bfa8371e268e42857f2d47f77c0af6:/samples/widgets/listbox.cpp diff --git a/samples/widgets/listbox.cpp b/samples/widgets/listbox.cpp index fa0f8be644..24610b6f0c 100644 --- a/samples/widgets/listbox.cpp +++ b/samples/widgets/listbox.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Program: wxWindows Widgets Sample +// Program: wxWidgets Widgets Sample // Name: listbox.cpp // Purpose: Part of the widgets sample showing wxListbox // Author: Vadim Zeitlin @@ -24,10 +24,13 @@ #pragma hdrstop #endif +#if wxUSE_LISTBOX + // for all others, include the necessary headers #ifndef WX_PRECOMP #include "wx/log.h" + #include "wx/bitmap.h" #include "wx/button.h" #include "wx/checkbox.h" #include "wx/combobox.h" @@ -42,7 +45,7 @@ #include "wx/checklst.h" #include "widgets.h" -#if 1 + #include "icons/listbox.xpm" // ---------------------------------------------------------------------------- @@ -73,7 +76,9 @@ enum class ListboxWidgetsPage : public WidgetsPage { public: - ListboxWidgetsPage(wxNotebook *notebook, wxImageList *imaglist); + ListboxWidgetsPage(wxBookCtrlBase *book, wxImageList *imaglist); + + virtual wxControl *GetWidget() const { return m_lbox; } protected: // event handlers @@ -129,10 +134,11 @@ protected: wxRadioBox *m_radioSelMode; // the checkboxes - wxCheckBox *m_chkSort, - *m_chkCheck, + wxCheckBox *m_chkVScroll, *m_chkHScroll, - *m_chkVScroll; + *m_chkCheck, + *m_chkSort, + *m_chkOwnerDraw; // the listbox itself and the sizer it is in wxListBox *m_lbox; @@ -178,8 +184,8 @@ BEGIN_EVENT_TABLE(ListboxWidgetsPage, WidgetsPage) EVT_LISTBOX_DCLICK(ListboxPage_Listbox, ListboxWidgetsPage::OnListboxDClick) EVT_CHECKLISTBOX(ListboxPage_Listbox, ListboxWidgetsPage::OnCheckListbox) - EVT_CHECKBOX(-1, ListboxWidgetsPage::OnCheckOrRadioBox) - EVT_RADIOBOX(-1, ListboxWidgetsPage::OnCheckOrRadioBox) + EVT_CHECKBOX(wxID_ANY, ListboxWidgetsPage::OnCheckOrRadioBox) + EVT_RADIOBOX(wxID_ANY, ListboxWidgetsPage::OnCheckOrRadioBox) END_EVENT_TABLE() // ============================================================================ @@ -188,9 +194,9 @@ END_EVENT_TABLE() IMPLEMENT_WIDGETS_PAGE(ListboxWidgetsPage, _T("Listbox")); -ListboxWidgetsPage::ListboxWidgetsPage(wxNotebook *notebook, +ListboxWidgetsPage::ListboxWidgetsPage(wxBookCtrlBase *book, wxImageList *imaglist) - : WidgetsPage(notebook) + : WidgetsPage(book) { imaglist->Add(wxBitmap(listbox_xpm)); @@ -200,7 +206,8 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxNotebook *notebook, m_chkVScroll = m_chkHScroll = m_chkCheck = - m_chkSort = (wxCheckBox *)NULL; + m_chkSort = + m_chkOwnerDraw = (wxCheckBox *)NULL; m_lbox = (wxListBox *)NULL; m_sizerLbox = (wxSizer *)NULL; @@ -214,7 +221,8 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxNotebook *notebook, wxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL); // left pane - wxStaticBox *box = new wxStaticBox(this, -1, _T("&Set listbox parameters")); + wxStaticBox *box = new wxStaticBox(this, wxID_ANY, + _T("&Set listbox parameters")); wxSizer *sizerLeft = new wxStaticBoxSizer(box, wxVERTICAL); static const wxString modes[] = @@ -224,7 +232,7 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxNotebook *notebook, _T("multiple"), }; - m_radioSelMode = new wxRadioBox(this, -1, _T("Selection &mode:"), + m_radioSelMode = new wxRadioBox(this, wxID_ANY, _T("Selection &mode:"), wxDefaultPosition, wxDefaultSize, WXSIZEOF(modes), modes, 1, wxRA_SPECIFY_COLS); @@ -241,6 +249,7 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxNotebook *notebook, ); m_chkCheck = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Check list box")); m_chkSort = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Sort items")); + m_chkOwnerDraw = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Owner drawn")); sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer sizerLeft->Add(m_radioSelMode, 0, wxGROW | wxALL, 5); @@ -249,7 +258,8 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxNotebook *notebook, sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15); // middle pane - wxStaticBox *box2 = new wxStaticBox(this, -1, _T("&Change listbox contents")); + wxStaticBox *box2 = new wxStaticBox(this, wxID_ANY, + _T("&Change listbox contents")); wxSizer *sizerMiddle = new wxStaticBoxSizer(box2, wxVERTICAL); wxSizer *sizerRow = new wxBoxSizer(wxHORIZONTAL); @@ -267,14 +277,14 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxNotebook *notebook, sizerRow = new wxBoxSizer(wxHORIZONTAL); btn = new wxButton(this, ListboxPage_Change, _T("C&hange current")); - m_textChange = new wxTextCtrl(this, ListboxPage_ChangeText, _T("")); + m_textChange = new wxTextCtrl(this, ListboxPage_ChangeText, wxEmptyString); sizerRow->Add(btn, 0, wxRIGHT, 5); sizerRow->Add(m_textChange, 1, wxLEFT, 5); sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5); sizerRow = new wxBoxSizer(wxHORIZONTAL); btn = new wxButton(this, ListboxPage_Delete, _T("&Delete this item")); - m_textDelete = new wxTextCtrl(this, ListboxPage_DeleteText, _T("")); + m_textDelete = new wxTextCtrl(this, ListboxPage_DeleteText, wxEmptyString); sizerRow->Add(btn, 0, wxRIGHT, 5); sizerRow->Add(m_textDelete, 1, wxLEFT, 5); sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5); @@ -303,7 +313,6 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxNotebook *notebook, // final initializations Reset(); - SetAutoLayout(TRUE); SetSizer(sizerTop); sizerTop->Fit(this); @@ -316,10 +325,11 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxNotebook *notebook, void ListboxWidgetsPage::Reset() { m_radioSelMode->SetSelection(LboxSel_Single); - m_chkSort->SetValue(FALSE); - m_chkCheck->SetValue(FALSE); - m_chkHScroll->SetValue(TRUE); - m_chkVScroll->SetValue(FALSE); + m_chkVScroll->SetValue(false); + m_chkHScroll->SetValue(true); + m_chkCheck->SetValue(false); + m_chkSort->SetValue(false); + m_chkOwnerDraw->SetValue(false); } void ListboxWidgetsPage::CreateLbox() @@ -341,6 +351,8 @@ void ListboxWidgetsPage::CreateLbox() flags |= wxLB_HSCROLL; if ( m_chkSort->GetValue() ) flags |= wxLB_SORT; + if ( m_chkOwnerDraw->GetValue() ) + flags |= wxLB_OWNERDRAW; wxArrayString items; if ( m_lbox ) @@ -351,7 +363,7 @@ void ListboxWidgetsPage::CreateLbox() items.Add(m_lbox->GetString(n)); } - m_sizerLbox->Remove(m_lbox); + m_sizerLbox->Detach( m_lbox ); delete m_lbox; } @@ -421,12 +433,12 @@ void ListboxWidgetsPage::OnButtonDeleteSel(wxCommandEvent& WXUNUSED(event)) } } -void ListboxWidgetsPage::OnButtonClear(wxCommandEvent& event) +void ListboxWidgetsPage::OnButtonClear(wxCommandEvent& WXUNUSED(event)) { m_lbox->Clear(); } -void ListboxWidgetsPage::OnButtonAdd(wxCommandEvent& event) +void ListboxWidgetsPage::OnButtonAdd(wxCommandEvent& WXUNUSED(event)) { static unsigned int s_item = 0; @@ -449,7 +461,7 @@ void ListboxWidgetsPage::OnButtonAddMany(wxCommandEvent& WXUNUSED(event)) } } -void ListboxWidgetsPage::OnButtonAddSeveral(wxCommandEvent& event) +void ListboxWidgetsPage::OnButtonAddSeveral(wxCommandEvent& WXUNUSED(event)) { wxArrayString items; items.Add(_T("First")); @@ -462,6 +474,7 @@ void ListboxWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event) { event.Enable( (m_radioSelMode->GetSelection() != LboxSel_Single) || m_chkSort->GetValue() || + m_chkOwnerDraw->GetValue() || !m_chkHScroll->GetValue() || m_chkVScroll->GetValue() ); } @@ -491,10 +504,13 @@ void ListboxWidgetsPage::OnUpdateUIAddSeveral(wxUpdateUIEvent& event) void ListboxWidgetsPage::OnListbox(wxCommandEvent& event) { - long sel = event.GetInt(); + long sel = event.GetSelection(); m_textDelete->SetValue(wxString::Format(_T("%ld"), sel)); - wxLogMessage(_T("Listbox item %ld selected"), sel); + if (event.IsSelection()) + wxLogMessage(_T("Listbox item %ld selected"), sel); + else + wxLogMessage(_T("Listbox item %ld deselected"), sel); } void ListboxWidgetsPage::OnListboxDClick(wxCommandEvent& event) @@ -507,9 +523,9 @@ void ListboxWidgetsPage::OnCheckListbox(wxCommandEvent& event) wxLogMessage( _T("Listbox item %ld toggled"), event.GetInt() ); } -void ListboxWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& event) +void ListboxWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event)) { CreateLbox(); } -#endif +#endif // wxUSE_LISTBOX