wxWidgets/samples/widgets/checkbox.cpp

162 lines
4.9 KiB
C++
Raw Normal View History

/////////////////////////////////////////////////////////////////////////////
// Program: wxWindows 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);
}