]> git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk/button.h
Added wxDECLARE_ANY_TYPE(CLS, DECL) and documented for what kind of situation it...
[wxWidgets.git] / include / wx / gtk / button.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/gtk/button.h
3 // Purpose: wxGTK wxButton class declaration
4 // Author: Robert Roebling
5 // Id: $Id$
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10 #ifndef _WX_GTK_BUTTON_H_
11 #define _WX_GTK_BUTTON_H_
12
13 //-----------------------------------------------------------------------------
14 // wxButton
15 //-----------------------------------------------------------------------------
16
17 class WXDLLIMPEXP_CORE wxButton : public wxButtonBase
18 {
19 public:
20 wxButton() { Init(); }
21 wxButton(wxWindow *parent, wxWindowID id,
22 const wxString& label = wxEmptyString,
23 const wxPoint& pos = wxDefaultPosition,
24 const wxSize& size = wxDefaultSize, long style = 0,
25 const wxValidator& validator = wxDefaultValidator,
26 const wxString& name = wxButtonNameStr)
27 {
28 Init();
29
30 Create(parent, id, label, pos, size, style, validator, name);
31 }
32
33 bool Create(wxWindow *parent, wxWindowID id,
34 const wxString& label = wxEmptyString,
35 const wxPoint& pos = wxDefaultPosition,
36 const wxSize& size = wxDefaultSize, long style = 0,
37 const wxValidator& validator = wxDefaultValidator,
38 const wxString& name = wxButtonNameStr);
39
40 virtual wxWindow *SetDefault();
41 virtual void SetLabel( const wxString &label );
42 virtual bool Enable( bool enable = true );
43
44 // implementation
45 // --------------
46
47 static wxVisualAttributes
48 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
49
50 // helper to allow access to protected member from GTK callback
51 void MoveWindow(int x, int y, int width, int height) { DoMoveWindow(x, y, width, height); }
52
53 // called from GTK callbacks: they update the button state and call
54 // GTKUpdateBitmap()
55 void GTKMouseEnters();
56 void GTKMouseLeaves();
57 void GTKPressed();
58 void GTKReleased();
59
60 protected:
61 virtual wxSize DoGetBestSize() const;
62 virtual void DoApplyWidgetStyle(GtkRcStyle *style);
63
64 virtual GdkWindow *GTKGetWindow(wxArrayGdkWindows& windows) const;
65
66 virtual wxBitmap DoGetBitmap(State which) const;
67 virtual void DoSetBitmap(const wxBitmap& bitmap, State which);
68 virtual void DoSetBitmapPosition(wxDirection dir);
69
70 private:
71 // common part of all ctors
72 void Init()
73 {
74 m_isCurrent =
75 m_isPressed = false;
76 }
77
78 // focus event handler: calls GTKUpdateBitmap()
79 void GTKOnFocus(wxFocusEvent& event);
80
81 // update the bitmap to correspond to the current button state
82 void GTKUpdateBitmap();
83
84 // return the current button state from m_isXXX flags (which means that it
85 // might not correspond to the real current state as e.g. m_isCurrent will
86 // never be true if we don't have a valid current bitmap)
87 State GTKGetCurrentState() const;
88
89 // show the given bitmap (must be valid)
90 void GTKDoShowBitmap(const wxBitmap& bitmap);
91
92
93 // the bitmaps for the different state of the buttons, all of them may be
94 // invalid and the button only shows a bitmap at all if State_Normal bitmap
95 // is valid
96 wxBitmap m_bitmaps[State_Max];
97
98 // true iff mouse is currently over the button
99 bool m_isCurrent;
100
101 // true iff the button is in pressed state
102 bool m_isPressed;
103
104
105 DECLARE_DYNAMIC_CLASS(wxButton)
106 };
107
108 #endif // _WX_GTK_BUTTON_H_