161 lines
4.8 KiB
C++
161 lines
4.8 KiB
C++
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// 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/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 >= 0) && (state < WXSIZEOF(stateNames)),
|
||
|
"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);
|
||
|
}
|