X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1f4e686615c0345c0045ac1fb83ca3f5d67470dc..51623cc53f350935337e57930eaaf1afe9a48c3b:/include/wx/cocoa/radiobox.h diff --git a/include/wx/cocoa/radiobox.h b/include/wx/cocoa/radiobox.h index 7db85c0655..69600c8421 100644 --- a/include/wx/cocoa/radiobox.h +++ b/include/wx/cocoa/radiobox.h @@ -4,24 +4,27 @@ // 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 // ------------------------------------------------------------------------ @@ -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,14 +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: - // 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 // ------------------------------------------------------------------------ @@ -65,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 behaviour 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__