#define __WX_COCOA_RADIOBOX_H__
// #include "wx/cocoa/NSButton.h"
+DECLARE_WXCOCOA_OBJC_CLASS(NSMatrix);
// ========================================================================
// wxRadioBox
// ========================================================================
-class WXDLLEXPORT wxRadioBox: public wxControl, public wxRadioBoxBase// , protected wxCocoaNSButton
+class WXDLLIMPEXP_CORE wxRadioBox: public wxControl, public wxRadioBoxBase// , protected wxCocoaNSButton
{
DECLARE_DYNAMIC_CLASS(wxRadioBox)
DECLARE_EVENT_TABLE()
-// WX_DECLARE_COCOA_OWNER(NSButton,NSControl,NSView)
+ // NOTE: We explicitly skip NSControl because our primary cocoa view is
+ // the NSBox but we want to receive action messages from the NSMatrix.
+ WX_DECLARE_COCOA_OWNER(NSBox,NSView,NSView)
// ------------------------------------------------------------------------
// initialization
// ------------------------------------------------------------------------
// Cocoa callbacks
// ------------------------------------------------------------------------
protected:
- // Static boxes cannot be enabled/disabled
- virtual void CocoaSetEnabled(bool enable) { }
+ // Radio boxes cannot be enabled/disabled
+ virtual void CocoaSetEnabled(bool WXUNUSED(enable)) { }
+ virtual void CocoaTarget_action(void);
// ------------------------------------------------------------------------
// Implementation
// ------------------------------------------------------------------------
virtual void SetString(unsigned int n, const wxString& label);
// change the individual radio button state
protected:
+ // We don't want the typical wxCocoaNSBox behavior because our real
+ // implementation is by using an NSMatrix as the NSBox's contentView.
+ WX_NSMatrix GetNSMatrix() const;
+ void AssociateNSBox(WX_NSBox theBox);
+ void DisassociateNSBox(WX_NSBox theBox);
+
virtual wxSize DoGetBestSize() const;
+
+ int GetRowForIndex(int n) const
+ {
+ if(m_windowStyle & wxRA_SPECIFY_COLS)
+ return n / GetMajorDim();
+ else
+ return n % GetMajorDim();
+ }
+
+ int GetColumnForIndex(int n) const
+ {
+ if(m_windowStyle & wxRA_SPECIFY_COLS)
+ return n % GetMajorDim();
+ else
+ return n / GetMajorDim();
+ }
};
#endif // __WX_COCOA_RADIOBOX_H__