// Author: David Elliott
// Modified by:
// Created: 2003/03/18
-// RCS-ID: $Id:
+// RCS-ID: $Id$
// Copyright: (c) 2003 David Elliott
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __WX_COCOA_RADIOBOX_H__
#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
// ------------------------------------------------------------------------
{
Create(parent, winid, title, pos, size, n, choices, majorDim, style, validator, name);
}
+ wxRadioBox(wxWindow *parent, wxWindowID winid,
+ const wxString& title,
+ const wxPoint& pos,
+ const wxSize& size,
+ const wxArrayString& choices,
+ int majorDim = 0,
+ long style = 0, const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxRadioBoxNameStr)
+ {
+ Create(parent, winid, title, pos, size, choices, majorDim, style, validator, name);
+ }
bool Create(wxWindow *parent, wxWindowID winid,
const wxString& title,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxRadioBoxNameStr);
+ bool Create(wxWindow *parent, wxWindowID winid,
+ const wxString& title,
+ const wxPoint& pos,
+ const wxSize& size,
+ const wxArrayString& choices,
+ int majorDim = 0,
+ long style = 0,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxRadioBoxNameStr);
virtual ~wxRadioBox();
+ // Enabling
+ virtual bool Enable(unsigned int n, bool enable = true);
+ virtual bool IsItemEnabled(unsigned int WXUNUSED(n)) const
+ {
+ /* TODO */
+ return true;
+ }
+
+ // Showing
+ virtual bool Show(unsigned int n, bool show = true);
+ virtual bool IsItemShown(unsigned int WXUNUSED(n)) const
+ {
+ /* TODO */
+ return true;
+ }
+
// ------------------------------------------------------------------------
// Cocoa callbacks
// ------------------------------------------------------------------------
protected:
+ // Radio boxes cannot be enabled/disabled
+ virtual void CocoaSetEnabled(bool WXUNUSED(enable)) { }
+ virtual void CocoaTarget_action(void);
// ------------------------------------------------------------------------
// Implementation
// ------------------------------------------------------------------------
virtual void SetSelection(int n);
virtual int GetSelection() const;
// string access
- virtual int GetCount() const;
- virtual wxString GetString(int n) const;
- virtual void SetString(int n, const wxString& label);
+ virtual unsigned int GetCount() const;
+ virtual wxString GetString(unsigned int n) const;
+ virtual void SetString(unsigned int n, const wxString& label);
// change the individual radio button state
- virtual void Enable(int n, bool enable = TRUE);
- virtual void Show(int n, bool show = TRUE);
- // layout parameters
- virtual int GetColumnCount() const;
- virtual int GetRowCount() const;
+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__