]> git.saurik.com Git - wxWidgets.git/blob - include/wx/checkbox.h
wxURL - doc cleanups, depreciated more methods, more source comments. wxURI - enclos...
[wxWidgets.git] / include / wx / checkbox.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/checkbox.h
3 // Purpose: wxCheckBox class interface
4 // Author: Vadim Zeitlin
5 // Modified by:
6 // Created: 07.09.00
7 // RCS-ID: $Id$
8 // Copyright: (c) wxWidgets team
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_CHECKBOX_H_BASE_
13 #define _WX_CHECKBOX_H_BASE_
14
15 #include "wx/defs.h"
16
17 #if wxUSE_CHECKBOX
18
19 #include "wx/control.h"
20
21
22 /*
23 * wxCheckBox style flags
24 * (Using wxCHK_* because wxCB_* is used by wxComboBox).
25 * Determine whether to use a 3-state or 2-state
26 * checkbox. 3-state enables to differentiate
27 * between 'unchecked', 'checked' and 'undetermined'.
28 */
29 #define wxCHK_2STATE 0x0000
30 #define wxCHK_3STATE 0x1000
31
32 /*
33 * If this style is set the user can set the checkbox to the
34 * undetermined state. If not set the undetermined set can only
35 * be set programmatically.
36 * This style can only be used with 3 state checkboxes.
37 */
38 #define wxCHK_ALLOW_3RD_STATE_FOR_USER 0x2000
39
40 /*
41 * The possible states of a 3-state checkbox (Compatible
42 * with the 2-state checkbox).
43 */
44 enum wxCheckBoxState
45 {
46 wxCHK_UNCHECKED,
47 wxCHK_CHECKED,
48 wxCHK_UNDETERMINED /* 3-state checkbox only */
49 };
50
51
52 WXDLLEXPORT_DATA(extern const wxChar *) wxCheckBoxNameStr;
53
54 // ----------------------------------------------------------------------------
55 // wxCheckBox: a control which shows a label and a box which may be checked
56 // ----------------------------------------------------------------------------
57
58 class WXDLLEXPORT wxCheckBoxBase : public wxControl
59 {
60 public:
61 wxCheckBoxBase() { }
62
63 // set/get the checked status of the listbox
64 virtual void SetValue(bool value) = 0;
65 virtual bool GetValue() const = 0;
66
67 bool IsChecked() const
68 {
69 wxASSERT_MSG( !Is3State(), wxT("Calling IsChecked() doesn't make sense for")
70 wxT(" a three state checkbox, Use Get3StateValue() instead") );
71
72 return GetValue();
73 }
74
75 wxCheckBoxState Get3StateValue() const
76 {
77 wxCheckBoxState state = DoGet3StateValue();
78
79 if ( state == wxCHK_UNDETERMINED && !Is3State() )
80 {
81 // Undetermined state with a 2-state checkbox??
82 wxFAIL_MSG( wxT("DoGet3StateValue() says the 2-state checkbox is ")
83 wxT("in an undetermined/third state") );
84
85 state = wxCHK_UNCHECKED;
86 }
87
88 return state;
89 }
90
91 void Set3StateValue(wxCheckBoxState state)
92 {
93 if ( state == wxCHK_UNDETERMINED && !Is3State() )
94 {
95 wxFAIL_MSG(wxT("Setting a 2-state checkbox to undetermined state"));
96 state = wxCHK_UNCHECKED;
97 }
98
99 DoSet3StateValue(state);
100 }
101
102 bool Is3State() const { return HasFlag(wxCHK_3STATE); }
103
104 bool Is3rdStateAllowedForUser() const
105 {
106 return HasFlag(wxCHK_ALLOW_3RD_STATE_FOR_USER);
107 }
108
109 virtual void ApplyParentThemeBackground(const wxColour& bg)
110 { SetBackgroundColour(bg); }
111
112 protected:
113 virtual void DoSet3StateValue(wxCheckBoxState WXUNUSED(state)) { wxFAIL; }
114
115 virtual wxCheckBoxState DoGet3StateValue() const
116 {
117 wxFAIL;
118 return wxCHK_UNCHECKED;
119 }
120
121 private:
122 DECLARE_NO_COPY_CLASS(wxCheckBoxBase)
123 };
124
125 #if defined(__WXUNIVERSAL__)
126 #include "wx/univ/checkbox.h"
127 #elif defined(__WXMSW__)
128 #include "wx/msw/checkbox.h"
129 #elif defined(__WXMOTIF__)
130 #include "wx/motif/checkbox.h"
131 #elif defined(__WXGTK__)
132 #include "wx/gtk/checkbox.h"
133 #elif defined(__WXMAC__)
134 #include "wx/mac/checkbox.h"
135 #elif defined(__WXCOCOA__)
136 #include "wx/cocoa/checkbox.h"
137 #elif defined(__WXPM__)
138 #include "wx/os2/checkbox.h"
139 #endif
140
141 #endif // wxUSE_CHECKBOX
142
143 #endif
144 // _WX_CHECKBOX_H_BASE_