1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        src/mac/carbon/checkbox.cpp 
   4 // Author:      Stefan Csomor 
   8 // Copyright:   (c) Stefan Csomor 
   9 // Licence:       wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #include "wx/wxprec.h" 
  16 #include "wx/checkbox.h" 
  17 #include "wx/mac/uma.h" 
  20 IMPLEMENT_DYNAMIC_CLASS(wxCheckBox
, wxControl
) 
  21 IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox
, wxCheckBox
) 
  24 // Single check box item 
  25 bool wxCheckBox::Create(wxWindow 
*parent
, 
  27     const wxString
& label
, 
  31     const wxValidator
& validator
, 
  34     m_macIsUserPane 
= false ; 
  36     if ( !wxCheckBoxBase::Create(parent
, id
, pos
, size
, style
, validator
, name
) ) 
  39     m_labelOrig 
= m_label 
= label 
; 
  41     SInt32 maxValue 
= 1 /* kControlCheckboxCheckedValue */; 
  42     if (style 
& wxCHK_3STATE
) 
  43         maxValue 
= 2 /* kControlCheckboxMixedValue */; 
  45     Rect bounds 
= wxMacGetBoundsForControl( this , pos 
, size 
) ; 
  46     m_peer 
= new wxMacControl( this ) ; 
  47     verify_noerr( CreateCheckBoxControl(MAC_WXHWND(parent
->MacGetTopLevelWindowRef()), &bounds 
, 
  48         CFSTR("") , 0 , false , m_peer
->GetControlRefAddr() ) ); 
  50     m_peer
->SetMaximum( maxValue 
) ; 
  52     MacPostControlCreate(pos
, size
) ; 
  57 void wxCheckBox::SetValue(bool val
) 
  60         Set3StateValue(wxCHK_CHECKED
); 
  62         Set3StateValue(wxCHK_UNCHECKED
); 
  65 bool wxCheckBox::GetValue() const 
  67     return (DoGet3StateValue() != 0); 
  70 void wxCheckBox::Command(wxCommandEvent 
& event
) 
  72     int state 
= event
.GetInt(); 
  74     wxCHECK_RET( (state 
== wxCHK_UNCHECKED
) || (state 
== wxCHK_CHECKED
) 
  75         || (state 
== wxCHK_UNDETERMINED
), 
  76         wxT("event.GetInt() returned an invalid checkbox state") ); 
  78     Set3StateValue((wxCheckBoxState
)state
); 
  80     ProcessCommand(event
); 
  83 wxCheckBoxState 
wxCheckBox::DoGet3StateValue() const 
  85     return (wxCheckBoxState
)m_peer
->GetValue() ; 
  88 void wxCheckBox::DoSet3StateValue(wxCheckBoxState val
) 
  90     m_peer
->SetValue( val 
) ; 
  93 wxInt32 
wxCheckBox::MacControlHit( WXEVENTHANDLERREF 
WXUNUSED(handler
) , WXEVENTREF 
WXUNUSED(event
) )  
  95     wxCheckBoxState origState
, newState
; 
  97     newState 
= origState 
= Get3StateValue(); 
 101         case wxCHK_UNCHECKED
: 
 102             newState 
= wxCHK_CHECKED
; 
 106             // If the style flag to allow the user setting the undetermined state is set, 
 107             // then set the state to undetermined; otherwise set state to unchecked. 
 108             newState 
= Is3rdStateAllowedForUser() ? wxCHK_UNDETERMINED 
: wxCHK_UNCHECKED
; 
 111         case wxCHK_UNDETERMINED
: 
 112             newState 
= wxCHK_UNCHECKED
; 
 119     if (newState 
!= origState
) 
 121         Set3StateValue( newState 
); 
 123         wxCommandEvent 
event( wxEVT_COMMAND_CHECKBOX_CLICKED
, m_windowId 
); 
 124         event
.SetInt( newState 
); 
 125         event
.SetEventObject( this ); 
 126         ProcessCommand( event 
); 
 133 bool wxBitmapCheckBox::Create(wxWindow 
*parent
, 
 135     const wxBitmap 
*label
, 
 139     const wxValidator
& wxVALIDATOR_PARAM(validator
), 
 140     const wxString
& name
) 
 144     SetValidator(validator
); 
 146     m_windowStyle 
= style
; 
 149         parent
->AddChild(this); 
 152         m_windowId 
= NewControlId(); 
 156     // TODO: Create the bitmap checkbox 
 161 void wxBitmapCheckBox::SetLabel(const wxBitmap 
*bitmap
) 
 164     wxFAIL_MSG(wxT("wxBitmapCheckBox::SetLabel() not yet implemented")); 
 167 void wxBitmapCheckBox::SetSize(int x
, int y
, int width
, int height
, int sizeFlags
) 
 169     wxControl::SetSize( x 
, y 
, width 
, height 
, sizeFlags 
) ; 
 172 void wxBitmapCheckBox::SetValue(bool val
) 
 175     wxFAIL_MSG(wxT("wxBitmapCheckBox::SetValue() not yet implemented")); 
 178 bool wxBitmapCheckBox::GetValue() const 
 181     wxFAIL_MSG(wxT("wxBitmapCheckBox::GetValue() not yet implemented"));