1/////////////////////////////////////////////////////////////////////////////// 2// Name: wx/univ/checkbox.h 3// Purpose: wxCheckBox declaration 4// Author: Vadim Zeitlin 5// Modified by: 6// Created: 07.09.00 7// RCS-ID: $Id: checkbox.h 61872 2009-09-09 22:37:05Z VZ $ 8// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com) 9// Licence: wxWindows licence 10/////////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_UNIV_CHECKBOX_H_ 13#define _WX_UNIV_CHECKBOX_H_ 14 15#include "wx/button.h" // for wxStdButtonInputHandler 16 17// ---------------------------------------------------------------------------- 18// the actions supported by wxCheckBox 19// ---------------------------------------------------------------------------- 20 21#define wxACTION_CHECKBOX_CHECK wxT("check") // SetValue(true) 22#define wxACTION_CHECKBOX_CLEAR wxT("clear") // SetValue(false) 23#define wxACTION_CHECKBOX_TOGGLE wxT("toggle") // toggle the check state 24 25// additionally it accepts wxACTION_BUTTON_PRESS and RELEASE 26 27// ---------------------------------------------------------------------------- 28// wxCheckBox 29// ---------------------------------------------------------------------------- 30 31class WXDLLEXPORT wxCheckBox : public wxCheckBoxBase 32{ 33public: 34 // checkbox constants 35 enum State 36 { 37 State_Normal, 38 State_Pressed, 39 State_Disabled, 40 State_Current, 41 State_Max 42 }; 43 44 enum Status 45 { 46 Status_Checked, 47 Status_Unchecked, 48 Status_3rdState, 49 Status_Max 50 }; 51 52 // constructors 53 wxCheckBox() { Init(); } 54 55 wxCheckBox(wxWindow *parent, 56 wxWindowID id, 57 const wxString& label, 58 const wxPoint& pos = wxDefaultPosition, 59 const wxSize& size = wxDefaultSize, 60 long style = 0, 61 const wxValidator& validator = wxDefaultValidator, 62 const wxString& name = wxCheckBoxNameStr) 63 { 64 Init(); 65 66 Create(parent, id, label, pos, size, style, validator, name); 67 } 68 69 bool Create(wxWindow *parent, 70 wxWindowID id, 71 const wxString& label, 72 const wxPoint& pos = wxDefaultPosition, 73 const wxSize& size = wxDefaultSize, 74 long style = 0, 75 const wxValidator& validator = wxDefaultValidator, 76 const wxString& name = wxCheckBoxNameStr); 77 78 // implement the checkbox interface 79 virtual void SetValue(bool value); 80 virtual bool GetValue() const; 81 82 // set/get the bitmaps to use for the checkbox indicator 83 void SetBitmap(const wxBitmap& bmp, State state, Status status); 84 virtual wxBitmap GetBitmap(State state, Status status) const; 85 86 // wxCheckBox actions 87 void Toggle(); 88 virtual void Press(); 89 virtual void Release(); 90 virtual void ChangeValue(bool value); 91 92 // overridden base class virtuals 93 virtual bool IsPressed() const { return m_isPressed; } 94 95 virtual bool PerformAction(const wxControlAction& action, 96 long numArg = -1, 97 const wxString& strArg = wxEmptyString); 98 99 virtual bool CanBeHighlighted() const { return true; } 100 virtual wxInputHandler *CreateStdInputHandler(wxInputHandler *handlerDef); 101 virtual wxInputHandler *DoGetStdInputHandler(wxInputHandler *handlerDef) 102 { 103 return CreateStdInputHandler(handlerDef); 104 } 105 106protected: 107 virtual void DoSet3StateValue(wxCheckBoxState WXUNUSED(state)); 108 virtual wxCheckBoxState DoGet3StateValue() const; 109 110 virtual void DoDraw(wxControlRenderer *renderer); 111 virtual wxSize DoGetBestClientSize() const; 112 113 // get the size of the bitmap using either the current one or the default 114 // one (query renderer then) 115 virtual wxSize GetBitmapSize() const; 116 117 // common part of all ctors 118 void Init(); 119 120 // send command event notifying about the checkbox state change 121 virtual void SendEvent(); 122 123 // called when the checkbox becomes checked - radio button hook 124 virtual void OnCheck(); 125 126 // get the state corresponding to the flags (combination of wxCONTROL_XXX) 127 wxCheckBox::State GetState(int flags) const; 128 129 // directly access the bitmaps array without trying to find a valid bitmap 130 // to use as GetBitmap() does 131 wxBitmap DoGetBitmap(State state, Status status) const 132 { return m_bitmaps[state][status]; } 133 134 // get the current status 135 Status GetStatus() const { return m_status; } 136 137private: 138 // the current check status 139 Status m_status; 140 141 // the bitmaps to use for the different states 142 wxBitmap m_bitmaps[State_Max][Status_Max]; 143 144 // is the checkbox currently pressed? 145 bool m_isPressed; 146 147 DECLARE_DYNAMIC_CLASS(wxCheckBox) 148}; 149 150#endif // _WX_UNIV_CHECKBOX_H_ 151