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,v 1.1 2006/12/02 15:58:34 scara Exp $
8 // Copyright:   (c) Julian Smart
9 // Licence:     wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_RADIOBOX_H_
13 #define _WX_RADIOBOX_H_
14 
15 #ifdef __GNUG__
16     #pragma interface "radiobox.h"
17 #endif
18 
19 class WXDLLEXPORT wxBitmap;
20 
21 // ----------------------------------------------------------------------------
22 // wxRadioBox
23 // ----------------------------------------------------------------------------
24 
25 class WXDLLEXPORT wxRadioBox : public wxControl, public wxRadioBoxBase
26 {
27 public:
28     wxRadioBox();
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_HORIZONTAL,
38                const wxValidator& val = wxDefaultValidator,
39                const wxString& name = wxRadioBoxNameStr)
40     {
41         (void)Create(parent, id, title, pos, size, n, choices, majorDim,
42                      style, val, name);
43     }
44 
45     ~wxRadioBox();
46 
47     bool Create(wxWindow *parent,
48                 wxWindowID id,
49                 const wxString& title,
50                 const wxPoint& pos = wxDefaultPosition,
51                 const wxSize& size = wxDefaultSize,
52                 int n = 0, const wxString choices[] = NULL,
53                 int majorDim = 0,
54                 long style = wxRA_HORIZONTAL,
55                 const wxValidator& val = wxDefaultValidator,
56                 const wxString& name = wxRadioBoxNameStr);
57 
58     // implement the radiobox interface
59     virtual void SetSelection(int n);
60     virtual int GetSelection() const;
61     virtual int GetCount() const;
62     virtual wxString GetString(int n) const;
63     virtual void SetString(int n, const wxString& label);
64     virtual void Enable(int n, bool enable = TRUE);
65     virtual void Show(int n, bool show = TRUE);
66     virtual int GetColumnCount() const;
67     virtual int GetRowCount() const;
68 
69     virtual bool Show(bool show = TRUE);
70     void SetFocus();
71     virtual bool Enable(bool enable = TRUE);
SetLabelFont(const wxFont & WXUNUSED (font))72     void SetLabelFont(const wxFont& WXUNUSED(font)) {};
SetButtonFont(const wxFont & font)73     void SetButtonFont(const wxFont& font) { SetFont(font); }
74 
75     void Command(wxCommandEvent& event);
76 
GetNumberOfRowsOrCols()77     int GetNumberOfRowsOrCols() const { return m_noRowsOrCols; }
SetNumberOfRowsOrCols(int n)78     void SetNumberOfRowsOrCols(int n) { m_noRowsOrCols = n; }
79 
80     // implementation only from now on
81     // -------------------------------
82 
83     virtual bool MSWCommand(WXUINT param, WXWORD id);
84 
85     // FIXME: are they used? missing "Do" prefix?
86     void GetSize(int *x, int *y) const;
87     void GetPosition(int *x, int *y) const;
88 
89     virtual bool SetFont(const wxFont& font);
90 
91     long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
92     virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
93                                 WXUINT message,
94                                 WXWPARAM wParam, WXLPARAM lParam);
GetRadioButtons()95     WXHWND *GetRadioButtons() const { return m_radioButtons; }
96     bool ContainsHWND(WXHWND hWnd) const;
97     void SendNotificationEvent();
98 
99     // get the number of buttons per column/row
100     int GetNumVer() const;
101     int GetNumHor() const;
102 
103     // compatibility ctor
104 #if WXWIN_COMPATIBILITY
105     wxRadioBox(wxWindow *parent, wxFunction func, const char *title,
106             int x = -1, int y = -1, int width = -1, int height = -1,
107             int n = 0, char **choices = NULL,
108             int majorDim = 0, long style = wxRA_HORIZONTAL, const char *name = wxRadioBoxNameStr);
109 #endif // WXWIN_COMPATIBILITY
110 
111 protected:
112     // subclass one radio button
113     void SubclassRadioButton(WXHWND hWndBtn);
114 
115     // get the max size of radio buttons
116     wxSize GetMaxButtonSize() const;
117 
118     // get the total size occupied by the radio box buttons
119     wxSize GetTotalButtonSize(const wxSize& sizeBtn) const;
120 
121     WXHWND *          m_radioButtons;
122     int               m_majorDim;
123     int *             m_radioWidth;  // for bitmaps
124     int *             m_radioHeight;
125 
126     int               m_noItems;
127     int               m_noRowsOrCols;
128     int               m_selectedButton;
129 
130     virtual void DoSetSize(int x, int y,
131                            int width, int height,
132                            int sizeFlags = wxSIZE_AUTO);
133     virtual wxSize DoGetBestSize() const;
134 
135 private:
136     DECLARE_DYNAMIC_CLASS(wxRadioBox)
137 };
138 
139 #endif
140     // _WX_RADIOBOX_H_
141