1 /////////////////////////////////////////////////////////////////////////////// 2 // Name: wx/univ/radiobox.h 3 // Purpose: wxRadioBox declaration 4 // Author: Vadim Zeitlin 5 // Modified by: 6 // Created: 11.09.00 7 // RCS-ID: $Id: radiobox.h,v 1.1 2006/12/02 15:58:58 scara Exp $ 8 // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com) 9 // Licence: wxWindows license 10 /////////////////////////////////////////////////////////////////////////////// 11 12 #ifndef _WX_UNIV_RADIOBOX_H_ 13 #define _WX_UNIV_RADIOBOX_H_ 14 15 #ifdef __GNUG__ 16 #pragma interface "univradiobox.h" 17 #endif 18 19 class WXDLLEXPORT wxRadioButton; 20 21 #include "wx/statbox.h" 22 #include "wx/dynarray.h" 23 24 WX_DEFINE_ARRAY(wxRadioButton *, wxArrayRadioButtons); 25 26 // ---------------------------------------------------------------------------- 27 // wxRadioBox: a box full of radio buttons 28 // ---------------------------------------------------------------------------- 29 30 class WXDLLEXPORT wxRadioBox : public wxStaticBox, 31 public wxRadioBoxBase 32 { 33 public: 34 // wxRadioBox construction wxRadioBox()35 wxRadioBox() { Init(); } 36 37 wxRadioBox(wxWindow *parent, 38 wxWindowID id, 39 const wxString& title, 40 const wxPoint& pos = wxDefaultPosition, 41 const wxSize& size = wxDefaultSize, 42 int n = 0, const wxString *choices = NULL, 43 int majorDim = 0, 44 long style = wxRA_SPECIFY_COLS, 45 const wxValidator& val = wxDefaultValidator, 46 const wxString& name = wxRadioBoxNameStr) 47 { 48 Init(); 49 50 (void)Create(parent, id, title, pos, size, n, choices, 51 majorDim, style, val, name); 52 } 53 54 bool Create(wxWindow *parent, 55 wxWindowID id, 56 const wxString& title, 57 const wxPoint& pos = wxDefaultPosition, 58 const wxSize& size = wxDefaultSize, 59 int n = 0, const wxString *choices = NULL, 60 int majorDim = 0, 61 long style = wxRA_SPECIFY_COLS, 62 const wxValidator& val = wxDefaultValidator, 63 const wxString& name = wxRadioBoxNameStr); 64 65 virtual ~wxRadioBox(); 66 67 // implement wxRadioBox interface 68 virtual void SetSelection(int n); 69 virtual int GetSelection() const; 70 GetCount()71 virtual int GetCount() const { return m_buttons.GetCount(); } GetColumnCount()72 virtual int GetColumnCount() const { return m_numCols; } GetRowCount()73 virtual int GetRowCount() const { return m_numRows; } 74 75 virtual wxString GetString(int n) const; 76 virtual void SetString(int n, const wxString& label); 77 78 virtual void Enable(int n, bool enable = TRUE); 79 virtual void Show(int n, bool show = TRUE); 80 81 // we also override the wxControl methods to avoid virtual function hiding 82 virtual bool Enable(bool enable = TRUE); 83 virtual bool Show(bool show = TRUE); 84 virtual wxString GetLabel() const; 85 virtual void SetLabel(const wxString& label); 86 87 #if wxUSE_TOOLTIPS 88 virtual void DoSetToolTip( wxToolTip *tip ); 89 #endif // wxUSE_TOOLTIPS 90 91 // wxUniversal-only methods 92 93 // another Append() version 94 void Append(int n, const wxString *choices); 95 96 // implementation only: called by wxRadioHookHandler 97 void OnRadioButton(wxEvent& event); 98 bool OnKeyDown(wxKeyEvent& event); 99 100 protected: 101 // override the base class methods dealing with window positioning/sizing 102 // as we must move/size the buttons as well 103 virtual void DoMoveWindow(int x, int y, int width, int height); 104 virtual wxSize DoGetBestClientSize() const; 105 106 // generate a radiobutton click event for the current item 107 void SendRadioEvent(); 108 109 // common part of all ctors 110 void Init(); 111 112 // check that the index is valid IsValid(int n)113 bool IsValid(int n) const { return n >= 0 && n < GetCount(); } 114 115 // sets m_majorDim and calculate m_numCols and m_numRows 116 void SetMajorDim(int majorDim); 117 118 // calculate the max size of all buttons 119 wxSize GetMaxButtonSize() const; 120 121 // the currently selected radio button or -1 122 int m_selection; 123 124 // the parameters defining the button layout: majorDim meaning depends on 125 // the style and is the (max) number of columns if it includes 126 // wxRA_SPECIFY_COLS and is the (max) number of rows if it includes 127 // wxRA_SPECIFY_ROWS - the number of rows and columns is calculated from 128 // it 129 int m_majorDim, 130 m_numCols, 131 m_numRows; 132 133 // all radio buttons 134 wxArrayRadioButtons m_buttons; 135 136 // the event handler which is used to translate radiobutton events into 137 // radiobox one 138 wxEvtHandler *m_evtRadioHook; 139 140 private: 141 DECLARE_DYNAMIC_CLASS(wxRadioBox) 142 }; 143 144 #endif // _WX_UNIV_RADIOBOX_H_ 145