1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/cocoa/radiobox.h 3// Purpose: wxRadioBox class 4// Author: David Elliott 5// Modified by: 6// Created: 2003/03/18 7// RCS-ID: $Id: radiobox.h 47573 2007-07-19 19:48:55Z DE $ 8// Copyright: (c) 2003 David Elliott 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef __WX_COCOA_RADIOBOX_H__ 13#define __WX_COCOA_RADIOBOX_H__ 14 15// #include "wx/cocoa/NSButton.h" 16DECLARE_WXCOCOA_OBJC_CLASS(NSMatrix); 17 18// ======================================================================== 19// wxRadioBox 20// ======================================================================== 21class WXDLLEXPORT wxRadioBox: public wxControl, public wxRadioBoxBase// , protected wxCocoaNSButton 22{ 23 DECLARE_DYNAMIC_CLASS(wxRadioBox) 24 DECLARE_EVENT_TABLE() 25 // NOTE: We explicitly skip NSControl because our primary cocoa view is 26 // the NSBox but we want to receive action messages from the NSMatrix. 27 WX_DECLARE_COCOA_OWNER(NSBox,NSView,NSView) 28// ------------------------------------------------------------------------ 29// initialization 30// ------------------------------------------------------------------------ 31public: 32 wxRadioBox() { } 33 wxRadioBox(wxWindow *parent, wxWindowID winid, 34 const wxString& title, 35 const wxPoint& pos = wxDefaultPosition, 36 const wxSize& size = wxDefaultSize, 37 int n = 0, const wxString choices[] = NULL, 38 int majorDim = 0, 39 long style = 0, const wxValidator& validator = wxDefaultValidator, 40 const wxString& name = wxRadioBoxNameStr) 41 { 42 Create(parent, winid, title, pos, size, n, choices, majorDim, style, validator, name); 43 } 44 wxRadioBox(wxWindow *parent, wxWindowID winid, 45 const wxString& title, 46 const wxPoint& pos, 47 const wxSize& size, 48 const wxArrayString& choices, 49 int majorDim = 0, 50 long style = 0, const wxValidator& validator = wxDefaultValidator, 51 const wxString& name = wxRadioBoxNameStr) 52 { 53 Create(parent, winid, title, pos, size, choices, majorDim, style, validator, name); 54 } 55 56 bool Create(wxWindow *parent, wxWindowID winid, 57 const wxString& title, 58 const wxPoint& pos = wxDefaultPosition, 59 const wxSize& size = wxDefaultSize, 60 int n = 0, const wxString choices[] = NULL, 61 int majorDim = 0, 62 long style = 0, 63 const wxValidator& validator = wxDefaultValidator, 64 const wxString& name = wxRadioBoxNameStr); 65 bool Create(wxWindow *parent, wxWindowID winid, 66 const wxString& title, 67 const wxPoint& pos, 68 const wxSize& size, 69 const wxArrayString& choices, 70 int majorDim = 0, 71 long style = 0, 72 const wxValidator& validator = wxDefaultValidator, 73 const wxString& name = wxRadioBoxNameStr); 74 virtual ~wxRadioBox(); 75 76 // Enabling 77 virtual bool Enable(unsigned int n, bool enable = true); 78 virtual bool IsItemEnabled(unsigned int WXUNUSED(n)) const 79 { 80 /* TODO */ 81 return true; 82 } 83 84 // Showing 85 virtual bool Show(unsigned int n, bool show = true); 86 virtual bool IsItemShown(unsigned int WXUNUSED(n)) const 87 { 88 /* TODO */ 89 return true; 90 } 91 92// ------------------------------------------------------------------------ 93// Cocoa callbacks 94// ------------------------------------------------------------------------ 95protected: 96 // Static boxes cannot be enabled/disabled 97 virtual void CocoaSetEnabled(bool enable) { } 98 virtual void CocoaTarget_action(void); 99// ------------------------------------------------------------------------ 100// Implementation 101// ------------------------------------------------------------------------ 102public: 103// Pure virtuals 104 // selection 105 virtual void SetSelection(int n); 106 virtual int GetSelection() const; 107 // string access 108 virtual unsigned int GetCount() const; 109 virtual wxString GetString(unsigned int n) const; 110 virtual void SetString(unsigned int n, const wxString& label); 111 // change the individual radio button state 112protected: 113 // We don't want the typical wxCocoaNSBox behavior because our real 114 // implementation is by using an NSMatrix as the NSBox's contentView. 115 WX_NSMatrix GetNSMatrix() const; 116 void AssociateNSBox(WX_NSBox theBox); 117 void DisassociateNSBox(WX_NSBox theBox); 118 119 virtual wxSize DoGetBestSize() const; 120 121 int GetRowForIndex(int n) const 122 { 123 if(m_windowStyle & wxRA_SPECIFY_COLS) 124 return n / GetMajorDim(); 125 else 126 return n % GetMajorDim(); 127 } 128 129 int GetColumnForIndex(int n) const 130 { 131 if(m_windowStyle & wxRA_SPECIFY_COLS) 132 return n % GetMajorDim(); 133 else 134 return n / GetMajorDim(); 135 } 136}; 137 138#endif // __WX_COCOA_RADIOBOX_H__ 139