]> git.saurik.com Git - wxWidgets.git/blame - include/wx/univ/button.h
fixes to menu stock items support (patch 1547639)
[wxWidgets.git] / include / wx / univ / button.h
CommitLineData
1e6feb95
VZ
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$
442b35b5 8// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
65571936 9// Licence: wxWindows licence
1e6feb95
VZ
10///////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_UNIV_BUTTON_H_
13#define _WX_UNIV_BUTTON_H_
14
1e6feb95
VZ
15class WXDLLEXPORT 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
32class WXDLLEXPORT wxButton : public wxButtonBase
33{
34public:
6463b9f5 35 wxButton() { Init(); }
1e6feb95
VZ
36 wxButton(wxWindow *parent,
37 wxWindowID id,
38 const wxBitmap& bitmap,
5f7bcb48 39 const wxString& label = wxEmptyString,
1e6feb95
VZ
40 const wxPoint& pos = wxDefaultPosition,
41 const wxSize& size = wxDefaultSize,
42 long style = 0,
43 const wxValidator& validator = wxDefaultValidator,
6463b9f5
JS
44 const wxString& name = wxButtonNameStr)
45 {
46 Init();
47
48 Create(parent, id, bitmap, label, pos, size, style, validator, name);
49 }
401e3b6e 50
1e6feb95
VZ
51 wxButton(wxWindow *parent,
52 wxWindowID id,
5f7bcb48 53 const wxString& label = wxEmptyString,
1e6feb95
VZ
54 const wxPoint& pos = wxDefaultPosition,
55 const wxSize& size = wxDefaultSize,
56 long style = 0,
57 const wxValidator& validator = wxDefaultValidator,
6463b9f5
JS
58 const wxString& name = wxButtonNameStr)
59 {
60 Init();
61
62 Create(parent, id, label, pos, size, style, validator, name);
63 }
1e6feb95
VZ
64
65 bool Create(wxWindow *parent,
66 wxWindowID id,
5f7bcb48 67 const wxString& label = wxEmptyString,
1e6feb95
VZ
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 }
401e3b6e 77
1e6feb95
VZ
78 bool Create(wxWindow *parent,
79 wxWindowID id,
80 const wxBitmap& bitmap,
5f7bcb48 81 const wxString& label = wxEmptyString,
1e6feb95
VZ
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 void SetImageLabel(const wxBitmap& bitmap);
91 virtual void SetImageMargins(wxCoord x, wxCoord y);
92 virtual void SetDefault();
93
94 virtual bool IsPressed() const { return m_isPressed; }
95 virtual bool IsDefault() const { return m_isDefault; }
96
97 // wxButton actions
bd88c1fa 98 virtual void Toggle();
1e6feb95
VZ
99 virtual void Press();
100 virtual void Release();
101 virtual void Click();
102
1e6feb95
VZ
103 virtual bool PerformAction(const wxControlAction& action,
104 long numArg = -1,
105 const wxString& strArg = wxEmptyString);
6f02a879
VZ
106
107 virtual bool CanBeHighlighted() const { return true; }
108
109protected:
1e6feb95 110 virtual wxSize DoGetBestClientSize() const;
193e19cf
RR
111
112 virtual bool DoDrawBackground(wxDC& dc);
1e6feb95
VZ
113 virtual void DoDraw(wxControlRenderer *renderer);
114
1e6feb95
VZ
115 // common part of all ctors
116 void Init();
117
118 // current state
119 bool m_isPressed,
120 m_isDefault;
121
122 // the (optional) image to show and the margins around it
123 wxBitmap m_bitmap;
124 wxCoord m_marginBmpX,
125 m_marginBmpY;
126
127private:
128 DECLARE_DYNAMIC_CLASS(wxButton)
129};
130
131// ----------------------------------------------------------------------------
132// wxStdButtonInputHandler: translates SPACE and ENTER keys and the left mouse
133// click into button press/release actions
134// ----------------------------------------------------------------------------
135
136class WXDLLEXPORT wxStdButtonInputHandler : public wxStdInputHandler
137{
138public:
139 wxStdButtonInputHandler(wxInputHandler *inphand);
140
23645bfa 141 virtual bool HandleKey(wxInputConsumer *consumer,
1e6feb95
VZ
142 const wxKeyEvent& event,
143 bool pressed);
23645bfa 144 virtual bool HandleMouse(wxInputConsumer *consumer,
1e6feb95 145 const wxMouseEvent& event);
23645bfa
VS
146 virtual bool HandleMouseMove(wxInputConsumer *consumer, const wxMouseEvent& event);
147 virtual bool HandleFocus(wxInputConsumer *consumer, const wxFocusEvent& event);
148 virtual bool HandleActivation(wxInputConsumer *consumer, bool activated);
1e6feb95
VZ
149
150private:
151 // the window (button) which has capture or NULL and the flag telling if
152 // the mouse is inside the button which captured it or not
153 wxWindow *m_winCapture;
154 bool m_winHasMouse;
155};
156
157#endif // _WX_UNIV_BUTTON_H_
158