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_
15 class WXDLLIMPEXP_FWD_CORE wxRadioButton
;
17 #include "wx/statbox.h"
18 #include "wx/dynarray.h"
20 WX_DEFINE_EXPORTED_ARRAY_PTR(wxRadioButton
*, wxArrayRadioButtons
);
22 // ----------------------------------------------------------------------------
23 // wxRadioBox: a box full of radio buttons
24 // ----------------------------------------------------------------------------
26 class WXDLLEXPORT wxRadioBox
: public wxStaticBox
,
30 // wxRadioBox construction
31 wxRadioBox() { Init(); }
33 wxRadioBox(wxWindow
*parent
,
35 const wxString
& title
,
36 const wxPoint
& pos
= wxDefaultPosition
,
37 const wxSize
& size
= wxDefaultSize
,
38 int n
= 0, const wxString
*choices
= NULL
,
40 long style
= wxRA_SPECIFY_COLS
,
41 const wxValidator
& val
= wxDefaultValidator
,
42 const wxString
& name
= wxRadioBoxNameStr
)
46 (void)Create(parent
, id
, title
, pos
, size
, n
, choices
,
47 majorDim
, style
, val
, name
);
49 wxRadioBox(wxWindow
*parent
,
51 const wxString
& title
,
54 const wxArrayString
& choices
,
56 long style
= wxRA_SPECIFY_COLS
,
57 const wxValidator
& val
= wxDefaultValidator
,
58 const wxString
& name
= wxRadioBoxNameStr
);
60 bool Create(wxWindow
*parent
,
62 const wxString
& title
,
63 const wxPoint
& pos
= wxDefaultPosition
,
64 const wxSize
& size
= wxDefaultSize
,
65 int n
= 0, const wxString
*choices
= NULL
,
67 long style
= wxRA_SPECIFY_COLS
,
68 const wxValidator
& val
= wxDefaultValidator
,
69 const wxString
& name
= wxRadioBoxNameStr
);
70 bool Create(wxWindow
*parent
,
72 const wxString
& title
,
75 const wxArrayString
& choices
,
77 long style
= wxRA_SPECIFY_COLS
,
78 const wxValidator
& val
= wxDefaultValidator
,
79 const wxString
& name
= wxRadioBoxNameStr
);
81 virtual ~wxRadioBox();
83 // implement wxRadioBox interface
84 virtual void SetSelection(int n
);
85 virtual int GetSelection() const;
87 virtual unsigned int GetCount() const
88 { return (unsigned int)m_buttons
.GetCount(); }
90 virtual wxString
GetString(unsigned int n
) const;
91 virtual void SetString(unsigned int n
, const wxString
& label
);
93 virtual bool Enable(unsigned int n
, bool enable
= true);
94 virtual bool Show(unsigned int n
, bool show
= true);
96 virtual bool IsItemEnabled(unsigned int n
) const;
97 virtual bool IsItemShown(unsigned int n
) const;
99 // we also override the wxControl methods to avoid virtual function hiding
100 virtual bool Enable(bool enable
= true);
101 virtual bool Show(bool show
= true);
102 virtual wxString
GetLabel() const;
103 virtual void SetLabel(const wxString
& label
);
105 // we inherit a version always returning false from wxStaticBox, override
106 // it to behave normally
107 virtual bool AcceptsFocus() const { return wxControl::AcceptsFocus(); }
110 virtual void DoSetToolTip( wxToolTip
*tip
);
111 #endif // wxUSE_TOOLTIPS
113 // wxUniversal-only methods
115 // another Append() version
116 void Append(int n
, const wxString
*choices
);
118 // implementation only: called by wxRadioHookHandler
119 void OnRadioButton(wxEvent
& event
);
120 bool OnKeyDown(wxKeyEvent
& event
);
123 // override the base class methods dealing with window positioning/sizing
124 // as we must move/size the buttons as well
125 virtual void DoMoveWindow(int x
, int y
, int width
, int height
);
126 virtual wxSize
DoGetBestClientSize() const;
128 // generate a radiobutton click event for the current item
129 void SendRadioEvent();
131 // common part of all ctors
134 // calculate the max size of all buttons
135 wxSize
GetMaxButtonSize() const;
137 // the currently selected radio button or -1
141 wxArrayRadioButtons m_buttons
;
143 // the event handler which is used to translate radiobutton events into
145 wxEvtHandler
*m_evtRadioHook
;
148 DECLARE_DYNAMIC_CLASS(wxRadioBox
)
151 #endif // _WX_UNIV_RADIOBOX_H_