///////////////////////////////////////////////////////////////////////////// // Program: wxWidgets Widgets Sample // Name: checkbox.cpp // Purpose: Part of the widgets sample showing wxCheckBox // Author: Dimitri Schoolwerth // Created: 27 Sep 2003 // Id: $Id$ // Copyright: (c) 2003 wxWindows team // License: wxWindows license ///////////////////////////////////////////////////////////////////////////// // ============================================================================ // declarations // ============================================================================ // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- // for compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif // for all others, include the necessary headers #ifndef WX_PRECOMP #include "wx/app.h" #include "wx/log.h" #include "wx/bitmap.h" #include "wx/button.h" #include "wx/checkbox.h" #include "wx/sizer.h" #endif #include "widgets.h" #include "icons/checkbox.xpm" // ---------------------------------------------------------------------------- // CheckBoxWidgetsPage // ---------------------------------------------------------------------------- class CheckBoxWidgetsPage : public WidgetsPage { public: CheckBoxWidgetsPage(wxNotebook *notebook, wxImageList *imaglist); virtual ~CheckBoxWidgetsPage(); protected: // event handlers void OnCheckBox(wxCommandEvent& event); void OnButton(wxCommandEvent& event); // the controls // ------------ wxCheckBox *m_chk2States, *m_chk3States, *m_chk3StatesAllows3rdStateForUser; wxButton *m_button; private: DECLARE_EVENT_TABLE() DECLARE_WIDGETS_PAGE(CheckBoxWidgetsPage) }; // ---------------------------------------------------------------------------- // event tables // ---------------------------------------------------------------------------- BEGIN_EVENT_TABLE(CheckBoxWidgetsPage, WidgetsPage) EVT_CHECKBOX(wxID_ANY, CheckBoxWidgetsPage::OnCheckBox) EVT_BUTTON(wxID_ANY, CheckBoxWidgetsPage::OnButton) END_EVENT_TABLE() // ============================================================================ // implementation // ============================================================================ IMPLEMENT_WIDGETS_PAGE(CheckBoxWidgetsPage, wxT("CheckBox")); CheckBoxWidgetsPage::CheckBoxWidgetsPage(wxNotebook *notebook, wxImageList *imaglist) : WidgetsPage(notebook) { imaglist->Add(wxBitmap(checkbox_xpm)); m_chk2States = new wxCheckBox( this, wxID_ANY, wxT("I'm a standard 2-state checkbox") ); m_chk3States = new wxCheckBox( this, wxID_ANY, wxT("I'm a 3-state checkbox that disallows setting the undetermined") wxT(" state by the user" ), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); m_button = new wxButton( this, wxID_ANY, wxT("&Programmatically set this") wxT(" checkbox to undetermined state") ); m_chk3StatesAllows3rdStateForUser = new wxCheckBox(this, wxID_ANY, wxT("I'm a 3-state checkbox that allows setting the 3rd state by the user"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE | wxCHK_ALLOW_3RD_STATE_FOR_USER); wxSizer *sizerTop = new wxBoxSizer(wxVERTICAL); sizerTop->Add(0, 0, 1, wxEXPAND); sizerTop->Add(m_chk2States, 0, wxEXPAND); sizerTop->Add(0, 0, 1, wxEXPAND); wxSizer *sizerCheckBoxAndButton = new wxBoxSizer(wxHORIZONTAL); { wxSizer *szr = sizerCheckBoxAndButton; szr->Add(m_chk3States, 0, wxEXPAND); szr->Add(0, 0, 1, wxEXPAND); szr->Add(m_button, 0, wxEXPAND); sizerTop->Add(szr, 0, wxEXPAND); } sizerTop->Add(0, 0, 1, wxEXPAND); sizerTop->Add(m_chk3StatesAllows3rdStateForUser, 0, wxEXPAND); sizerTop->Add(0, 0, 1, wxEXPAND); SetSizer(sizerTop); sizerTop->Fit(this); } CheckBoxWidgetsPage::~CheckBoxWidgetsPage() { } // ---------------------------------------------------------------------------- // event handlers // ---------------------------------------------------------------------------- void CheckBoxWidgetsPage::OnCheckBox(wxCommandEvent& event) { static const wxString stateNames[] = { wxT("unchecked"), wxT("checked"), wxT("undetermined/mixed"), }; wxCheckBoxState state = (wxCheckBoxState) event.GetInt(); wxCHECK_RET( (state >= (wxCheckBoxState)0) && (state < (wxCheckBoxState)WXSIZEOF(stateNames)), _T("event.GetInt() returned an invalid wxCheckBoxState") ); wxLogMessage(wxT("Checkbox now set to state: %s"), stateNames[state].c_str()); } void CheckBoxWidgetsPage::OnButton(wxCommandEvent& WXUNUSED(event)) { m_chk3States->Set3StateValue(wxCHK_UNDETERMINED); }