1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/msw/radiobox.h 3// Purpose: wxRadioBox class 4// Author: Julian Smart 5// Modified by: 6// Created: 01/02/97 7// RCS-ID: $Id: radiobox.h 53135 2008-04-12 02:31:04Z VZ $ 8// Copyright: (c) Julian Smart 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_RADIOBOX_H_ 13#define _WX_RADIOBOX_H_ 14 15#include "wx/statbox.h" 16 17class WXDLLIMPEXP_FWD_CORE wxSubwindows; 18 19// ---------------------------------------------------------------------------- 20// wxRadioBox 21// ---------------------------------------------------------------------------- 22 23class WXDLLEXPORT wxRadioBox : public wxStaticBox, public wxRadioBoxBase 24{ 25public: 26 wxRadioBox() { Init(); } 27 28 wxRadioBox(wxWindow *parent, 29 wxWindowID id, 30 const wxString& title, 31 const wxPoint& pos = wxDefaultPosition, 32 const wxSize& size = wxDefaultSize, 33 int n = 0, const wxString choices[] = NULL, 34 int majorDim = 0, 35 long style = wxRA_HORIZONTAL, 36 const wxValidator& val = wxDefaultValidator, 37 const wxString& name = wxRadioBoxNameStr) 38 { 39 Init(); 40 41 (void)Create(parent, id, title, pos, size, n, choices, majorDim, 42 style, val, name); 43 } 44 45 wxRadioBox(wxWindow *parent, 46 wxWindowID id, 47 const wxString& title, 48 const wxPoint& pos, 49 const wxSize& size, 50 const wxArrayString& choices, 51 int majorDim = 0, 52 long style = wxRA_HORIZONTAL, 53 const wxValidator& val = wxDefaultValidator, 54 const wxString& name = wxRadioBoxNameStr) 55 { 56 Init(); 57 58 (void)Create(parent, id, title, pos, size, choices, majorDim, 59 style, val, name); 60 } 61 62 virtual ~wxRadioBox(); 63 64 bool Create(wxWindow *parent, 65 wxWindowID id, 66 const wxString& title, 67 const wxPoint& pos = wxDefaultPosition, 68 const wxSize& size = wxDefaultSize, 69 int n = 0, const wxString choices[] = NULL, 70 int majorDim = 0, 71 long style = wxRA_HORIZONTAL, 72 const wxValidator& val = wxDefaultValidator, 73 const wxString& name = wxRadioBoxNameStr); 74 bool Create(wxWindow *parent, 75 wxWindowID id, 76 const wxString& title, 77 const wxPoint& pos, 78 const wxSize& size, 79 const wxArrayString& choices, 80 int majorDim = 0, 81 long style = wxRA_HORIZONTAL, 82 const wxValidator& val = wxDefaultValidator, 83 const wxString& name = wxRadioBoxNameStr); 84 85 // implement the radiobox interface 86 virtual void SetSelection(int n); 87 virtual int GetSelection() const { return m_selectedButton; } 88 virtual unsigned int GetCount() const; 89 virtual wxString GetString(unsigned int n) const; 90 virtual void SetString(unsigned int n, const wxString& label); 91 virtual bool Enable(unsigned int n, bool enable = true); 92 virtual bool Show(unsigned int n, bool show = true); 93 virtual bool IsItemEnabled(unsigned int n) const; 94 virtual bool IsItemShown(unsigned int n) const; 95 virtual int GetItemFromPoint(const wxPoint& pt) const; 96 97 // override some base class methods 98 virtual bool Show(bool show = true); 99 virtual bool Enable(bool enable = true); 100 virtual void SetFocus(); 101 virtual bool SetFont(const wxFont& font); 102 virtual bool ContainsHWND(WXHWND hWnd) const; 103#if wxUSE_TOOLTIPS 104 virtual bool HasToolTips() const; 105#endif // wxUSE_TOOLTIPS 106#if wxUSE_HELP 107 // override virtual function with a platform-independent implementation 108 virtual wxString GetHelpTextAtPoint(const wxPoint & pt, wxHelpEvent::Origin origin) const 109 { 110 return wxRadioBoxBase::DoGetHelpTextAtPoint( this, pt, origin ); 111 } 112#endif // wxUSE_HELP 113 114 virtual bool Reparent(wxWindowBase *newParent); 115 116 // we inherit a version always returning false from wxStaticBox, override 117 // it to behave normally 118 virtual bool AcceptsFocus() const { return wxControl::AcceptsFocus(); } 119 120 void SetLabelFont(const wxFont& WXUNUSED(font)) {} 121 void SetButtonFont(const wxFont& font) { SetFont(font); } 122 123 // implementation only from now on 124 // ------------------------------- 125 126 virtual bool MSWCommand(WXUINT param, WXWORD id); 127 void Command(wxCommandEvent& event); 128 129 void SendNotificationEvent(); 130 131protected: 132 // common part of all ctors 133 void Init(); 134 135 // subclass one radio button 136 void SubclassRadioButton(WXHWND hWndBtn); 137 138 // get the max size of radio buttons 139 wxSize GetMaxButtonSize() const; 140 141 // get the total size occupied by the radio box buttons 142 wxSize GetTotalButtonSize(const wxSize& sizeBtn) const; 143 144 virtual void DoSetSize(int x, int y, 145 int width, int height, 146 int sizeFlags = wxSIZE_AUTO); 147 virtual wxSize DoGetBestSize() const; 148 149#if wxUSE_TOOLTIPS 150 virtual void DoSetItemToolTip(unsigned int n, wxToolTip * tooltip); 151#endif 152 153#ifndef __WXWINCE__ 154 virtual WXHRGN MSWGetRegionWithoutChildren(); 155#endif // __WXWINCE__ 156 157 158 // the buttons we contain 159 wxSubwindows *m_radioButtons; 160 161 // array of widths and heights of the buttons, may be wxDefaultCoord if the 162 // corresponding quantity should be computed 163 int *m_radioWidth; 164 int *m_radioHeight; 165 166 // currently selected button or wxNOT_FOUND if none 167 int m_selectedButton; 168 169private: 170 DECLARE_DYNAMIC_CLASS(wxRadioBox) 171 DECLARE_NO_COPY_CLASS(wxRadioBox) 172}; 173 174#endif 175 // _WX_RADIOBOX_H_ 176