X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be5a51fb592f3fa2ba38ac6cd1e488d6d806058c..55325d01e68cfb071e42699ca72ba84a7071aa2b:/samples/widgets/listbox.cpp diff --git a/samples/widgets/listbox.cpp b/samples/widgets/listbox.cpp index b717ecb097..82e6021245 100644 --- a/samples/widgets/listbox.cpp +++ b/samples/widgets/listbox.cpp @@ -24,6 +24,8 @@ #pragma hdrstop #endif +#if wxUSE_LISTBOX + // for all others, include the necessary headers #ifndef WX_PRECOMP #include "wx/log.h" @@ -43,7 +45,7 @@ #include "wx/checklst.h" #include "widgets.h" -#if 1 + #include "icons/listbox.xpm" // ---------------------------------------------------------------------------- @@ -53,7 +55,7 @@ // control ids enum { - ListboxPage_Reset = 100, + ListboxPage_Reset = wxID_HIGHEST, ListboxPage_Add, ListboxPage_AddText, ListboxPage_AddSeveral, @@ -74,7 +76,10 @@ enum class ListboxWidgetsPage : public WidgetsPage { public: - ListboxWidgetsPage(wxNotebook *notebook, wxImageList *imaglist); + ListboxWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist); + + virtual wxControl *GetWidget() const { return m_lbox; } + virtual void RecreateWidget() { CreateLbox(); } protected: // event handlers @@ -130,13 +135,14 @@ 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; + wxListBoxBase *m_lbox; wxSizer *m_sizerLbox; // the text entries for "Add/change string" and "Delete" buttons @@ -187,23 +193,30 @@ END_EVENT_TABLE() // implementation // ============================================================================ -IMPLEMENT_WIDGETS_PAGE(ListboxWidgetsPage, _T("Listbox")); +#if defined(__WXUNIVERSAL__) + #define FAMILY_CTRLS UNIVERSAL_CTRLS +#else + #define FAMILY_CTRLS NATIVE_CTRLS +#endif + +IMPLEMENT_WIDGETS_PAGE(ListboxWidgetsPage, _T("Listbox"), + FAMILY_CTRLS | WITH_ITEMS_CTRLS + ); -ListboxWidgetsPage::ListboxWidgetsPage(wxNotebook *notebook, +ListboxWidgetsPage::ListboxWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist) - : WidgetsPage(notebook) + : WidgetsPage(book, imaglist, listbox_xpm) { - imaglist->Add(wxBitmap(listbox_xpm)); - // init everything m_radioSelMode = (wxRadioBox *)NULL; m_chkVScroll = m_chkHScroll = m_chkCheck = - m_chkSort = (wxCheckBox *)NULL; + m_chkSort = + m_chkOwnerDraw = (wxCheckBox *)NULL; - m_lbox = (wxListBox *)NULL; + m_lbox = (wxListBoxBase *)NULL; m_sizerLbox = (wxSizer *)NULL; /* @@ -243,6 +256,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); @@ -318,15 +332,16 @@ 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_chkHScroll->SetValue(true); + m_chkCheck->SetValue(false); + m_chkSort->SetValue(false); + m_chkOwnerDraw->SetValue(false); } void ListboxWidgetsPage::CreateLbox() { - int flags = 0; + int flags = ms_defaultFlags; switch ( m_radioSelMode->GetSelection() ) { default: @@ -343,6 +358,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 ) @@ -464,6 +481,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() ); } @@ -504,12 +522,12 @@ void ListboxWidgetsPage::OnListbox(wxCommandEvent& event) void ListboxWidgetsPage::OnListboxDClick(wxCommandEvent& event) { - wxLogMessage( _T("Listbox item %ld double clicked"), event.GetInt() ); + wxLogMessage( _T("Listbox item %d double clicked"), event.GetInt() ); } void ListboxWidgetsPage::OnCheckListbox(wxCommandEvent& event) { - wxLogMessage( _T("Listbox item %ld toggled"), event.GetInt() ); + wxLogMessage( _T("Listbox item %d toggled"), event.GetInt() ); } void ListboxWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event)) @@ -517,4 +535,4 @@ void ListboxWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event)) CreateLbox(); } -#endif +#endif // wxUSE_LISTBOX