]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/cocoa/radiobox.h
added wxColourBase::Init() and use DEFINE_STD_WXCOLOUR_CONSTRUCTORS() in all ports...
[wxWidgets.git] / include / wx / cocoa / radiobox.h
index 53c09d57f95e10c4800d49c598083595e72c8baf..86dba5ccbefaa3ac462e099a43ba10ddb2cf1d8d 100644 (file)
@@ -4,15 +4,16 @@
 // 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
@@ -21,7 +22,9 @@ class WXDLLEXPORT wxRadioBox: public wxControl, public wxRadioBoxBase// , protec
 {
     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
 // ------------------------------------------------------------------------
@@ -38,6 +41,17 @@ public:
     {
         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,
@@ -48,12 +62,40 @@ public:
             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
 // ------------------------------------------------------------------------
@@ -63,15 +105,34 @@ public:
     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__