]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/mac/carbon/checkbox.cpp
must be static of course, otherwise items just get appended for every menu-build
[wxWidgets.git] / src / mac / carbon / checkbox.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: checkbox.cpp
3// Purpose: wxCheckBox
4// Author: Stefan Csomor
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
8// Copyright: (c) Stefan Csomor
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
13#pragma implementation "checkbox.h"
14#endif
15
16#include "wx/wxprec.h"
17
18#if wxUSE_CHECKBOX
19
20#include "wx/checkbox.h"
21
22#if !USE_SHARED_LIBRARY
23IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl)
24IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox)
25#endif
26
27#include "wx/mac/uma.h"
28
29// Single check box item
30bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
31 const wxPoint& pos,
32 const wxSize& size, long style,
33 const wxValidator& validator,
34 const wxString& name)
35{
36 m_macIsUserPane = FALSE ;
37
38 if ( !wxCheckBoxBase::Create(parent, id, pos, size, style, validator, name) )
39 return false;
40
41 m_label = label ;
42
43 SInt32 maxValue = 1 /* kControlCheckboxCheckedValue */;
44 if (style & wxCHK_3STATE)
45 maxValue = 2 /* kControlCheckboxMixedValue */;
46
47 Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
48 m_peer = new wxMacControl(this) ;
49 verify_noerr( CreateCheckBoxControl(MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds ,
50 CFSTR("") , 0 , false , m_peer->GetControlRefAddr() ) );
51
52 m_peer->SetMaximum( maxValue ) ;
53
54 MacPostControlCreate(pos,size) ;
55
56 return TRUE;
57}
58
59void wxCheckBox::SetValue(bool val)
60{
61 if (val)
62 {
63 Set3StateValue(wxCHK_CHECKED);
64 }
65 else
66 {
67 Set3StateValue(wxCHK_UNCHECKED);
68 }
69}
70
71bool wxCheckBox::GetValue() const
72{
73 return (DoGet3StateValue() != 0);
74}
75
76void wxCheckBox::Command (wxCommandEvent & event)
77{
78 int state = event.GetInt();
79
80 wxCHECK_RET( (state == wxCHK_UNCHECKED) || (state == wxCHK_CHECKED)
81 || (state == wxCHK_UNDETERMINED),
82 wxT("event.GetInt() returned an invalid checkbox state") );
83
84 Set3StateValue((wxCheckBoxState) state);
85
86 ProcessCommand(event);
87}
88
89wxCheckBoxState wxCheckBox::DoGet3StateValue() const
90{
91 return (wxCheckBoxState) m_peer->GetValue() ;
92}
93
94void wxCheckBox::DoSet3StateValue(wxCheckBoxState val)
95{
96 m_peer->SetValue( val ) ;
97}
98
99wxInt32 wxCheckBox::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) )
100{
101 wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId );
102 wxCheckBoxState state = Get3StateValue();
103
104 if (state == wxCHK_UNCHECKED)
105 {
106 state = wxCHK_CHECKED;
107 }
108 else if (state == wxCHK_CHECKED)
109 {
110 // If the style flag to allow the user setting the undetermined state
111 // is set, then set the state to undetermined. Otherwise set state to
112 // unchecked.
113 if ( Is3rdStateAllowedForUser() )
114 {
115 state = wxCHK_UNDETERMINED;
116 }
117 else
118 {
119 state = wxCHK_UNCHECKED;
120 }
121 }
122 else if (state == wxCHK_UNDETERMINED)
123 {
124 state = wxCHK_UNCHECKED;
125 }
126 Set3StateValue(state);
127
128 event.SetInt(state);
129 event.SetEventObject(this);
130 ProcessCommand(event);
131
132 return noErr ;
133}
134
135// Bitmap checkbox
136bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id,
137 const wxBitmap *label,
138 const wxPoint& pos,
139 const wxSize& size, long style,
140 const wxValidator& validator,
141 const wxString& name)
142{
143 SetName(name);
144 SetValidator(validator);
145 m_windowStyle = style;
146
147 if (parent) parent->AddChild(this);
148
149 if ( id == -1 )
150 m_windowId = NewControlId();
151 else
152 m_windowId = id;
153
154 // TODO: Create the bitmap checkbox
155
156 return FALSE;
157}
158
159void wxBitmapCheckBox::SetLabel(const wxBitmap *bitmap)
160{
161 // TODO
162 wxFAIL_MSG(wxT("wxBitmapCheckBox::SetLabel() not yet implemented"));
163}
164
165void wxBitmapCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags)
166{
167 wxControl::SetSize( x , y , width , height , sizeFlags ) ;
168}
169
170void wxBitmapCheckBox::SetValue(bool val)
171{
172 // TODO
173 wxFAIL_MSG(wxT("wxBitmapCheckBox::SetValue() not yet implemented"));
174}
175
176bool wxBitmapCheckBox::GetValue() const
177{
178 // TODO
179 wxFAIL_MSG(wxT("wxBitmapCheckBox::GetValue() not yet implemented"));
180 return FALSE;
181}
182
183#endif