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