]> git.saurik.com Git - wxWidgets.git/blame - include/wx/univ/checkbox.h
gtk_window_[un]fullscreen only available with GTK >= 2.2
[wxWidgets.git] / include / wx / univ / checkbox.h
CommitLineData
1e6feb95
VZ
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$
442b35b5 8// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
65571936 9// Licence: wxWindows licence
1e6feb95
VZ
10///////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_UNIV_CHECKBOX_H_
13#define _WX_UNIV_CHECKBOX_H_
14
12028905 15#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
a3870b2f 16 #pragma interface "univcheckbox.h"
1e6feb95
VZ
17#endif
18
19#include "wx/button.h" // for wxStdButtonInputHandler
20
21// ----------------------------------------------------------------------------
22// the actions supported by wxCheckBox
23// ----------------------------------------------------------------------------
24
a290fa5a
WS
25#define wxACTION_CHECKBOX_CHECK _T("check") // SetValue(true)
26#define wxACTION_CHECKBOX_CLEAR _T("clear") // SetValue(false)
1e6feb95
VZ
27#define wxACTION_CHECKBOX_TOGGLE _T("toggle") // toggle the check state
28
29// additionally it accepts wxACTION_BUTTON_PRESS and RELEASE
30
31// ----------------------------------------------------------------------------
32// wxCheckBox
33// ----------------------------------------------------------------------------
34
f79bd02d
JS
35// X11 headers may define this
36#ifdef Status
37#undef Status
38#endif
39
1e6feb95
VZ
40class WXDLLEXPORT wxCheckBox : public wxCheckBoxBase
41{
42public:
43 // checkbox constants
44 enum State
45 {
46 State_Normal,
47 State_Pressed,
48 State_Disabled,
49 State_Current,
50 State_Max
51 };
52
53 enum Status
54 {
55 Status_Checked,
56 Status_Unchecked,
415a0ff1 57 Status_3rdState,
1e6feb95
VZ
58 Status_Max
59 };
60
61 // constructors
6463b9f5 62 wxCheckBox() { Init(); }
1e6feb95
VZ
63
64 wxCheckBox(wxWindow *parent,
65 wxWindowID id,
66 const wxString& label,
67 const wxPoint& pos = wxDefaultPosition,
68 const wxSize& size = wxDefaultSize,
69 long style = 0,
70 const wxValidator& validator = wxDefaultValidator,
6463b9f5
JS
71 const wxString& name = wxCheckBoxNameStr)
72 {
73 Init();
74
75 Create(parent, id, label, pos, size, style, validator, name);
76 }
1e6feb95
VZ
77
78 bool Create(wxWindow *parent,
79 wxWindowID id,
80 const wxString& label,
81 const wxPoint& pos = wxDefaultPosition,
82 const wxSize& size = wxDefaultSize,
83 long style = 0,
84 const wxValidator& validator = wxDefaultValidator,
85 const wxString& name = wxCheckBoxNameStr);
86
87 // implement the checkbox interface
88 virtual void SetValue(bool value);
89 virtual bool GetValue() const;
90
91 // set/get the bitmaps to use for the checkbox indicator
92 void SetBitmap(const wxBitmap& bmp, State state, Status status);
93 virtual wxBitmap GetBitmap(State state, Status status) const;
94
95 // wxCheckBox actions
96 void Toggle();
97 virtual void Press();
98 virtual void Release();
99 virtual void ChangeValue(bool value);
100
101 // overridden base class virtuals
102 virtual bool IsPressed() const { return m_isPressed; }
103
a290fa5a 104 virtual bool HasTransparentBackground() { return true; }
415a0ff1 105
1e6feb95 106protected:
415a0ff1
WS
107 virtual void DoSet3StateValue(wxCheckBoxState WXUNUSED(state));
108 virtual wxCheckBoxState DoGet3StateValue() const;
109
1e6feb95
VZ
110 virtual bool PerformAction(const wxControlAction& action,
111 long numArg = -1,
112 const wxString& strArg = wxEmptyString);
113 virtual void DoDraw(wxControlRenderer *renderer);
114 virtual wxSize DoGetBestClientSize() const;
115
a290fa5a 116 virtual bool CanBeHighlighted() const { return true; }
1e6feb95
VZ
117
118 // get the size of the bitmap using either the current one or the default
119 // one (query renderer then)
120 virtual wxSize GetBitmapSize() const;
121
122 // common part of all ctors
123 void Init();
124
125 // send command event notifying about the checkbox state change
126 virtual void SendEvent();
127
128 // called when the checkbox becomes checked - radio button hook
129 virtual void OnCheck();
130
131 // get the state corresponding to the flags (combination of wxCONTROL_XXX)
132 wxCheckBox::State GetState(int flags) const;
133
134 // directly access the bitmaps array without trying to find a valid bitmap
135 // to use as GetBitmap() does
136 wxBitmap DoGetBitmap(State state, Status status) const
137 { return m_bitmaps[state][status]; }
138
139 // get the current status
140 Status GetStatus() const { return m_status; }
141
142private:
143 // the current check status
144 Status m_status;
145
146 // the bitmaps to use for the different states
147 wxBitmap m_bitmaps[State_Max][Status_Max];
148
149 // is the checkbox currently pressed?
150 bool m_isPressed;
151
152 DECLARE_DYNAMIC_CLASS(wxCheckBox)
153};
154
155// ----------------------------------------------------------------------------
156// wxStdCheckboxInputHandler: handles the mouse events for the check and radio
157// boxes (handling the keyboard input is simple, but its handling differs a
158// lot between GTK and MSW, so a new class should be derived for this)
159// ----------------------------------------------------------------------------
160
161class WXDLLEXPORT wxStdCheckboxInputHandler : public wxStdButtonInputHandler
162{
163public:
164 wxStdCheckboxInputHandler(wxInputHandler *inphand);
165
166 // we have to override this one as wxStdButtonInputHandler version works
167 // only with the buttons
23645bfa 168 virtual bool HandleActivation(wxInputConsumer *consumer, bool activated);
1e6feb95
VZ
169};
170
171#endif // _WX_UNIV_CHECKBOX_H_