1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/univ/radiobox.h
3 // Purpose: wxRadioBox declaration
4 // Author: Vadim Zeitlin
8 // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_UNIV_RADIOBOX_H_
13 #define _WX_UNIV_RADIOBOX_H_
16 #pragma interface "univradiobox.h"
19 class WXDLLEXPORT wxRadioButton
;
21 #include "wx/statbox.h"
22 #include "wx/dynarray.h"
24 WX_DEFINE_ARRAY(wxRadioButton
*, wxArrayRadioButtons
);
26 // ----------------------------------------------------------------------------
27 // wxRadioBox: a box full of radio buttons
28 // ----------------------------------------------------------------------------
30 class WXDLLEXPORT wxRadioBox
: public wxStaticBox
,
34 // wxRadioBox construction
35 wxRadioBox() { Init(); }
37 wxRadioBox(wxWindow
*parent
,
39 const wxString
& title
,
40 const wxPoint
& pos
= wxDefaultPosition
,
41 const wxSize
& size
= wxDefaultSize
,
42 int n
= 0, const wxString
*choices
= NULL
,
44 long style
= wxRA_SPECIFY_COLS
,
45 const wxValidator
& val
= wxDefaultValidator
,
46 const wxString
& name
= wxRadioBoxNameStr
)
50 (void)Create(parent
, id
, title
, pos
, size
, n
, choices
,
51 majorDim
, style
, val
, name
);
54 bool Create(wxWindow
*parent
,
56 const wxString
& title
,
57 const wxPoint
& pos
= wxDefaultPosition
,
58 const wxSize
& size
= wxDefaultSize
,
59 int n
= 0, const wxString
*choices
= NULL
,
61 long style
= wxRA_SPECIFY_COLS
,
62 const wxValidator
& val
= wxDefaultValidator
,
63 const wxString
& name
= wxRadioBoxNameStr
);
65 virtual ~wxRadioBox();
67 // implement wxRadioBox interface
68 virtual void SetSelection(int n
);
69 virtual int GetSelection() const;
71 virtual int GetCount() const { return m_buttons
.GetCount(); }
72 virtual int GetColumnCount() const { return m_numCols
; }
73 virtual int GetRowCount() const { return m_numRows
; }
75 virtual wxString
GetString(int n
) const;
76 virtual void SetString(int n
, const wxString
& label
);
78 virtual void Enable(int n
, bool enable
= TRUE
);
79 virtual void Show(int n
, bool show
= TRUE
);
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
);
88 virtual void DoSetToolTip( wxToolTip
*tip
);
89 #endif // wxUSE_TOOLTIPS
91 // wxUniversal-only methods
93 // another Append() version
94 void Append(int n
, const wxString
*choices
);
96 // implementation only: called by wxRadioHookHandler
97 void OnRadioButton(wxEvent
& event
);
98 bool OnKeyDown(wxKeyEvent
& event
);
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;
106 // generate a radiobutton click event for the current item
107 void SendRadioEvent();
109 // common part of all ctors
112 // check that the index is valid
113 bool IsValid(int n
) const { return n
>= 0 && n
< GetCount(); }
115 // sets m_majorDim and calculate m_numCols and m_numRows
116 void SetMajorDim(int majorDim
);
118 // calculate the max size of all buttons
119 wxSize
GetMaxButtonSize() const;
121 // the currently selected radio button or -1
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
134 wxArrayRadioButtons m_buttons
;
136 // the event handler which is used to translate radiobutton events into
138 wxEvtHandler
*m_evtRadioHook
;
141 DECLARE_DYNAMIC_CLASS(wxRadioBox
)
144 #endif // _WX_UNIV_RADIOBOX_H_