preparation work for implementing images support in wxButton: move wxBitmapButton...
[wxWidgets.git] / include / wx / univ / button.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/univ/button.h
3 // Purpose: wxButton for wxUniversal
4 // Author: Vadim Zeitlin
5 // Modified by:
6 // Created: 15.08.00
7 // RCS-ID: $Id$
8 // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_UNIV_BUTTON_H_
13 #define _WX_UNIV_BUTTON_H_
14
15 class WXDLLIMPEXP_FWD_CORE wxInputHandler;
16
17 #include "wx/bitmap.h"
18
19 // ----------------------------------------------------------------------------
20 // the actions supported by this control
21 // ----------------------------------------------------------------------------
22
23 #define wxACTION_BUTTON_TOGGLE _T("toggle") // press/release the button
24 #define wxACTION_BUTTON_PRESS _T("press") // press the button
25 #define wxACTION_BUTTON_RELEASE _T("release") // release the button
26 #define wxACTION_BUTTON_CLICK _T("click") // generate button click event
27
28 // ----------------------------------------------------------------------------
29 // wxButton: a push button
30 // ----------------------------------------------------------------------------
31
32 class WXDLLIMPEXP_CORE wxButton : public wxButtonBase
33 {
34 public:
35 wxButton() { Init(); }
36 wxButton(wxWindow *parent,
37 wxWindowID id,
38 const wxBitmap& bitmap,
39 const wxString& label = wxEmptyString,
40 const wxPoint& pos = wxDefaultPosition,
41 const wxSize& size = wxDefaultSize,
42 long style = 0,
43 const wxValidator& validator = wxDefaultValidator,
44 const wxString& name = wxButtonNameStr)
45 {
46 Init();
47
48 Create(parent, id, bitmap, label, pos, size, style, validator, name);
49 }
50
51 wxButton(wxWindow *parent,
52 wxWindowID id,
53 const wxString& label = wxEmptyString,
54 const wxPoint& pos = wxDefaultPosition,
55 const wxSize& size = wxDefaultSize,
56 long style = 0,
57 const wxValidator& validator = wxDefaultValidator,
58 const wxString& name = wxButtonNameStr)
59 {
60 Init();
61
62 Create(parent, id, label, pos, size, style, validator, name);
63 }
64
65 bool Create(wxWindow *parent,
66 wxWindowID id,
67 const wxString& label = wxEmptyString,
68 const wxPoint& pos = wxDefaultPosition,
69 const wxSize& size = wxDefaultSize,
70 long style = 0,
71 const wxValidator& validator = wxDefaultValidator,
72 const wxString& name = wxButtonNameStr)
73 {
74 return Create(parent, id, wxNullBitmap, label,
75 pos, size, style, validator, name);
76 }
77
78 bool Create(wxWindow *parent,
79 wxWindowID id,
80 const wxBitmap& bitmap,
81 const wxString& label = wxEmptyString,
82 const wxPoint& pos = wxDefaultPosition,
83 const wxSize& size = wxDefaultSize,
84 long style = 0,
85 const wxValidator& validator = wxDefaultValidator,
86 const wxString& name = wxButtonNameStr);
87
88 virtual ~wxButton();
89
90 virtual wxWindow *SetDefault();
91
92 virtual bool IsPressed() const { return m_isPressed; }
93 virtual bool IsDefault() const { return m_isDefault; }
94
95 // wxButton actions
96 virtual void Toggle();
97 virtual void Press();
98 virtual void Release();
99 virtual void Click();
100
101 virtual bool PerformAction(const wxControlAction& action,
102 long numArg = -1,
103 const wxString& strArg = wxEmptyString);
104
105 virtual bool CanBeHighlighted() const { return true; }
106
107 static wxInputHandler *GetStdInputHandler(wxInputHandler *handlerDef);
108 virtual wxInputHandler *DoGetStdInputHandler(wxInputHandler *handlerDef)
109 {
110 return GetStdInputHandler(handlerDef);
111 }
112
113
114 protected:
115 virtual wxSize DoGetBestClientSize() const;
116
117 virtual bool DoDrawBackground(wxDC& dc);
118 virtual void DoDraw(wxControlRenderer *renderer);
119
120 virtual void DoSetBitmap(const wxBitmap& bitmap, State which);
121 virtual void DoSetBitmapMargins(wxCoord x, wxCoord y);
122
123 // common part of all ctors
124 void Init();
125
126 // current state
127 bool m_isPressed,
128 m_isDefault;
129
130 // the (optional) image to show and the margins around it
131 wxBitmap m_bitmap;
132 wxCoord m_marginBmpX,
133 m_marginBmpY;
134
135 private:
136 DECLARE_DYNAMIC_CLASS(wxButton)
137 };
138
139 #endif // _WX_UNIV_BUTTON_H_
140