1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/palmos/radiobox.h 3// Purpose: wxRadioBox class 4// Author: William Osborne - minimal working wxPalmOS port 5// Modified by: Wlodzimierz ABX Skiba - native wxRadioBox implementation 6// Created: 10/13/04 7// RCS-ID: $Id: radiobox.h 42816 2006-10-31 08:50:17Z RD $ 8// Copyright: (c) William Osborne, Wlodzimierz Skiba 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_RADIOBOX_H_ 13#define _WX_RADIOBOX_H_ 14 15class WXDLLEXPORT wxBitmap; 16class WXDLLEXPORT wxRadioButton; 17 18// ---------------------------------------------------------------------------- 19// wxRadioBox 20// ---------------------------------------------------------------------------- 21 22class WXDLLEXPORT wxRadioBox : public wxControl, public wxRadioBoxBase 23{ 24public: 25 wxRadioBox():m_radios(wxKEY_INTEGER,32) 26 { 27 Init(); 28 } 29 30 wxRadioBox(wxWindow *parent, 31 wxWindowID id, 32 const wxString& title, 33 const wxPoint& pos = wxDefaultPosition, 34 const wxSize& size = wxDefaultSize, 35 int n = 0, const wxString choices[] = NULL, 36 int majorDim = 0, 37 long style = wxRA_SPECIFY_COLS, 38 const wxValidator& val = wxDefaultValidator, 39 const wxString& name = wxRadioBoxNameStr) 40 :m_radios(wxKEY_INTEGER,n+1) 41 { 42 Init(); 43 (void)Create(parent, id, title, pos, size, n, choices, majorDim, 44 style, val, name); 45 } 46 47 wxRadioBox(wxWindow *parent, 48 wxWindowID id, 49 const wxString& title, 50 const wxPoint& pos, 51 const wxSize& size, 52 const wxArrayString& choices, 53 int majorDim = 0, 54 long style = wxRA_SPECIFY_COLS, 55 const wxValidator& val = wxDefaultValidator, 56 const wxString& name = wxRadioBoxNameStr) 57 :m_radios(wxKEY_INTEGER,choices.GetCount()+1) 58 { 59 Init(); 60 (void)Create(parent, id, title, pos, size, choices, majorDim, 61 style, val, name); 62 } 63 64 virtual ~wxRadioBox(); 65 66 bool Create(wxWindow *parent, 67 wxWindowID id, 68 const wxString& title, 69 const wxPoint& pos = wxDefaultPosition, 70 const wxSize& size = wxDefaultSize, 71 int n = 0, const wxString choices[] = NULL, 72 int majorDim = 0, 73 long style = wxRA_SPECIFY_COLS, 74 const wxValidator& val = wxDefaultValidator, 75 const wxString& name = wxRadioBoxNameStr); 76 77 bool Create(wxWindow *parent, 78 wxWindowID id, 79 const wxString& title, 80 const wxPoint& pos, 81 const wxSize& size, 82 const wxArrayString& choices, 83 int majorDim = 0, 84 long style = wxRA_SPECIFY_COLS, 85 const wxValidator& val = wxDefaultValidator, 86 const wxString& name = wxRadioBoxNameStr); 87 88 // Enabling 89 virtual bool Enable(bool enable = true); 90 virtual bool Enable(unsigned int n, bool enable = true); 91 virtual bool IsItemEnabled(unsigned int WXUNUSED(n)) const 92 { 93 /* TODO */ 94 return true; 95 } 96 97 // Showing 98 virtual bool Show(bool show = true); 99 virtual bool Show(unsigned int n, bool show = true); 100 virtual bool IsItemShown(unsigned int WXUNUSED(n)) const 101 { 102 /* TODO */ 103 return true; 104 } 105 106 // implement the radiobox interface 107 virtual void SetSelection(int n); 108 virtual int GetSelection() const; 109 virtual unsigned int GetCount() const; 110 virtual wxString GetString(unsigned int n) const; 111 virtual void SetString(unsigned int n, const wxString& label); 112 113 virtual void SetLabel(const wxString& label); 114 virtual wxString GetLabel(); 115 116 virtual void DoGetPosition( int *x, int *y ) const; 117 virtual void DoGetSize( int *width, int *height ) const; 118 virtual void DoMoveWindow(int x, int y, int width, int height); 119 120 virtual wxPoint GetClientAreaOrigin() const; 121 122 void SetFocus(); 123 void SetLabelFont(const wxFont& WXUNUSED(font)) {}; 124 void SetButtonFont(const wxFont& font) { SetFont(font); } 125 126 virtual void Refresh( bool eraseBackground = true, 127 const wxRect *rect = NULL ); 128 129 void Command(wxCommandEvent& event); 130 131 int GetNumberOfRowsOrCols() const { return m_noRowsOrCols; } 132 void SetNumberOfRowsOrCols(int n) { m_noRowsOrCols = n; } 133 134 // implementation only from now on 135 // ------------------------------- 136 137 virtual bool SetFont(const wxFont& font); 138 139 void SendNotificationEvent(); 140 141protected: 142 // get the max size of radio buttons 143 wxSize GetMaxButtonSize() const; 144 145 // get the total size occupied by the radio box buttons 146 wxSize GetTotalButtonSize(const wxSize& sizeBtn) const; 147 148 int *m_radioWidth; // for bitmaps 149 int *m_radioHeight; 150 151 int m_noRowsOrCols; 152 int m_selectedButton; 153 154 virtual wxSize DoGetBestSize() const; 155 156private: 157 158 void Init(); 159 wxRadioButton *GetRadioButton(int i) const; 160 161 wxPoint m_pos; 162 wxSize m_size; 163 wxHashTable m_radios; 164 165 DECLARE_DYNAMIC_CLASS(wxRadioBox) 166 DECLARE_NO_COPY_CLASS(wxRadioBox) 167}; 168 169#endif 170 // _WX_RADIOBOX_H_ 171