]> git.saurik.com Git - wxWidgets.git/blob - interface/wx/bmpbuttn.h
disable UI updating during GetPopupMenuSelectionFromUser() execution to avoid unexpec...
[wxWidgets.git] / interface / wx / bmpbuttn.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: bmpbuttn.h
3 // Purpose: interface of wxBitmapButton
4 // Author: wxWidgets team
5 // RCS-ID: $Id$
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
8
9 /**
10 @class wxBitmapButton
11
12 A bitmap button is a control that contains a bitmap.
13 It may be placed on a wxDialog or a wxPanel, or indeed almost any other window.
14
15 @remarks
16 A bitmap button can be supplied with a single bitmap, and wxWidgets will draw
17 all button states using this bitmap. If the application needs more control,
18 additional bitmaps for the selected state, unpressed focused state, and greyed-out
19 state may be supplied.
20
21 @section bitmapbutton_states Button states
22
23 This class supports bitmaps for several different states:
24 @li @b normal: this is the bitmap shown in the default state, it must be always
25 valid while all the other bitmaps are optional and don't have to be set.
26 @li @b disabled: bitmap shown when the button is disabled.
27 @li @b selected: bitmap shown when the button is pushed (e.g. while the user
28 keeps the mouse button pressed on it)
29 @li @b focus: bitmap shown when the button has keyboard focus but is not pressed.
30 @li @b hover: bitmap shown when the mouse is over the button (but it is not pressed).
31 Notice that if hover bitmap is not specified but the current platform UI uses
32 hover images for the buttons (such as Windows XP or GTK+), then the focus bitmap
33 is used for hover state as well. This makes it possible to set focus bitmap only
34 to get reasonably good behaviour on all platforms.
35
36 @beginStyleTable
37 @style{wxBU_AUTODRAW}
38 If this is specified, the button will be drawn automatically using
39 the label bitmap only, providing a 3D-look border. If this style is
40 not specified, the button will be drawn without borders and using
41 all provided bitmaps. Has effect only under MS Windows.
42 @style{wxBU_LEFT}
43 Left-justifies the bitmap label. Has effect only under MS Windows.
44 @style{wxBU_TOP}
45 Aligns the bitmap label to the top of the button.
46 Has effect only under MS Windows.
47 @style{wxBU_RIGHT}
48 Right-justifies the bitmap label. Has effect only under MS Windows.
49 @style{wxBU_BOTTOM}
50 Aligns the bitmap label to the bottom of the button.
51 Has effect only under MS Windows.
52 @endStyleTable
53
54 Note that the wxBU_EXACTFIT style supported by wxButton is not used by this
55 class as bitmap buttons don't have any minimal standard size by default.
56
57 @beginEventTable{wxCommandEvent}
58 @event{EVT_BUTTON(id, func)}
59 Process a wxEVT_COMMAND_BUTTON_CLICKED event, when the button is clicked.
60 @endEventTable
61
62 @library{wxcore}
63 @category{ctrl}
64 @appearance{bitmapbutton.png}
65
66 @see wxButton
67 */
68 class wxBitmapButton : public wxButton
69 {
70 public:
71 /**
72 Default ctor.
73 */
74 wxBitmapButton();
75
76 /**
77 Constructor, creating and showing a button.
78
79 @param parent
80 Parent window. Must not be @NULL.
81 @param id
82 Button identifier. The value wxID_ANY indicates a default value.
83 @param bitmap
84 Bitmap to be displayed.
85 @param pos
86 Button position.
87 @param size
88 Button size. If wxDefaultSize is specified then the button is sized
89 appropriately for the bitmap.
90 @param style
91 Window style. See wxBitmapButton.
92 @param validator
93 Window validator.
94 @param name
95 Window name.
96
97 @remarks The bitmap parameter is normally the only bitmap you need to provide,
98 and wxWidgets will draw the button correctly in its different states.
99 If you want more control, call any of the functions SetBitmapSelected(),
100 SetBitmapFocus(), SetBitmapDisabled().
101
102 @see Create(), wxValidator
103 */
104 wxBitmapButton(wxWindow* parent, wxWindowID id,
105 const wxBitmap& bitmap,
106 const wxPoint& pos = wxDefaultPosition,
107 const wxSize& size = wxDefaultSize,
108 long style = wxBU_AUTODRAW,
109 const wxValidator& validator = wxDefaultValidator,
110 const wxString& name = wxButtonNameStr);
111
112 /**
113 Destructor, destroying the button.
114 */
115 virtual ~wxBitmapButton();
116
117 /**
118 Button creation function for two-step creation.
119 For more details, see wxBitmapButton().
120 */
121 bool Create(wxWindow* parent, wxWindowID id,
122 const wxBitmap& bitmap,
123 const wxPoint& pos = wxDefaultPosition,
124 const wxSize& size = wxDefaultSize,
125 long style = wxBU_AUTODRAW,
126 const wxValidator& validator = wxDefaultValidator,
127 const wxString& name = wxButtonNameStr);
128
129 //@{
130 /**
131 Returns the bitmap for the disabled state, which may be invalid.
132
133 @return A reference to the disabled state bitmap.
134
135 @see SetBitmapDisabled()
136 */
137 const wxBitmap& GetBitmapDisabled() const;
138 wxBitmap& GetBitmapDisabled();
139 //@}
140
141 //@{
142 /**
143 Returns the bitmap for the focused state, which may be invalid.
144
145 @return A reference to the focused state bitmap.
146
147 @see SetBitmapFocus()
148 */
149 const wxBitmap& GetBitmapFocus() const;
150 wxBitmap& GetBitmapFocus();
151 //@}
152
153 //@{
154 /**
155 Returns the bitmap used when the mouse is over the button, which may be invalid.
156
157 @see SetBitmapHover()
158 */
159 const wxBitmap& GetBitmapHover();
160 wxBitmap& GetBitmapHover();
161 //@}
162
163 //@{
164 /**
165 Returns the label bitmap (the one passed to the constructor), always valid.
166
167 @return A reference to the button's label bitmap.
168
169 @see SetBitmapLabel()
170 */
171 const wxBitmap& GetBitmapLabel();
172 wxBitmap& GetBitmapLabel();
173 //@}
174
175 /**
176 Returns the bitmap for the selected state.
177
178 @return A reference to the selected state bitmap.
179
180 @see SetBitmapSelected()
181 */
182 const wxBitmap& GetBitmapSelected() const;
183
184 /**
185 Sets the bitmap for the disabled button appearance.
186
187 @param bitmap
188 The bitmap to set.
189
190 @see GetBitmapDisabled(), SetBitmapLabel(),
191 SetBitmapSelected(), SetBitmapFocus()
192 */
193 virtual void SetBitmapDisabled(const wxBitmap& bitmap);
194
195 /**
196 Sets the bitmap for the button appearance when it has the keyboard focus.
197
198 @param bitmap
199 The bitmap to set.
200
201 @see GetBitmapFocus(), SetBitmapLabel(),
202 SetBitmapSelected(), SetBitmapDisabled()
203 */
204 virtual void SetBitmapFocus(const wxBitmap& bitmap);
205
206 /**
207 Sets the bitmap to be shown when the mouse is over the button.
208
209 @since 2.7.0
210
211 The hover bitmap is currently only supported in wxMSW.
212
213 @see GetBitmapHover()
214 */
215 virtual void SetBitmapHover(const wxBitmap& bitmap);
216
217 /**
218 Sets the bitmap label for the button.
219
220 @param bitmap
221 The bitmap label to set.
222
223 @remarks This is the bitmap used for the unselected state, and for all
224 other states if no other bitmaps are provided.
225
226 @see GetBitmapLabel()
227 */
228 virtual void SetBitmapLabel(const wxBitmap& bitmap);
229
230 /**
231 Sets the bitmap for the selected (depressed) button appearance.
232
233 @param bitmap
234 The bitmap to set.
235 */
236 virtual void SetBitmapSelected(const wxBitmap& bitmap);
237 };
238