]> git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk/button.h
Integrate with GNOME's Recent Documents menu.
[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 typedef wxButtonBase base_type;
72
73 // common part of all ctors
74 void Init()
75 {
76 m_isCurrent =
77 m_isPressed = false;
78 }
79
80 // focus event handler: calls GTKUpdateBitmap()
81 void GTKOnFocus(wxFocusEvent& event);
82
83 // update the bitmap to correspond to the current button state
84 void GTKUpdateBitmap();
85
86 // return the current button state from m_isXXX flags (which means that it
87 // might not correspond to the real current state as e.g. m_isCurrent will
88 // never be true if we don't have a valid current bitmap)
89 State GTKGetCurrentState() const;
90
91 // show the given bitmap (must be valid)
92 void GTKDoShowBitmap(const wxBitmap& bitmap);
93
94 // the bitmaps for the different state of the buttons, all of them may be
95 // invalid and the button only shows a bitmap at all if State_Normal bitmap
96 // is valid
97 wxBitmap m_bitmaps[State_Max];
98
99 // true iff mouse is currently over the button
100 bool m_isCurrent;
101
102 // true iff the button is in pressed state
103 bool m_isPressed;
104
105 DECLARE_DYNAMIC_CLASS(wxButton)
106 };
107
108 #endif // _WX_GTK_BUTTON_H_