1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/gtk1/tglbtn.h
3// Purpose:     Declaration of the wxToggleButton class, which implements a
4//              toggle button under wxGTK.
5// Author:      John Norris, minor changes by Axel Schlueter
6// Modified by:
7// Created:     08.02.01
8// RCS-ID:      $Id: tglbtn.h 37065 2006-01-23 02:28:01Z MR $
9// Copyright:   (c) 2000 Johnny C. Norris II
10// License:     wxWindows licence
11/////////////////////////////////////////////////////////////////////////////
12
13#ifndef _WX_GTK_TOGGLEBUTTON_H_
14#define _WX_GTK_TOGGLEBUTTON_H_
15
16#include "wx/bitmap.h"
17
18//-----------------------------------------------------------------------------
19// classes
20//-----------------------------------------------------------------------------
21
22class WXDLLIMPEXP_CORE wxToggleButton;
23class WXDLLIMPEXP_CORE wxToggleBitmapButton;
24
25//-----------------------------------------------------------------------------
26// global data
27//-----------------------------------------------------------------------------
28
29extern WXDLLIMPEXP_CORE const wxChar wxCheckBoxNameStr[];
30
31//-----------------------------------------------------------------------------
32// wxToggleBitmapButton
33//-----------------------------------------------------------------------------
34
35class WXDLLIMPEXP_CORE wxToggleBitmapButton: public wxControl
36{
37public:
38    // construction/destruction
39    wxToggleBitmapButton() {}
40    wxToggleBitmapButton(wxWindow *parent,
41                   wxWindowID id,
42                   const wxBitmap& label,
43                   const wxPoint& pos = wxDefaultPosition,
44                   const wxSize& size = wxDefaultSize,
45                   long style = 0,
46                   const wxValidator& validator = wxDefaultValidator,
47                   const wxString& name = wxCheckBoxNameStr)
48    {
49        Create(parent, id, label, pos, size, style, validator, name);
50    }
51
52    // Create the control
53    bool Create(wxWindow *parent,
54                wxWindowID id,
55                const wxBitmap& label,
56                const wxPoint& pos = wxDefaultPosition,
57                const wxSize& size = wxDefaultSize, long style = 0,
58                const wxValidator& validator = wxDefaultValidator,
59                const wxString& name = wxCheckBoxNameStr);
60
61    // Get/set the value
62    void SetValue(bool state);
63    bool GetValue() const;
64
65    // Set the label
66    virtual void SetLabel(const wxString& label) { wxControl::SetLabel(label); }
67    virtual void SetLabel(const wxBitmap& label);
68    bool Enable(bool enable = TRUE);
69
70    static wxVisualAttributes
71    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
72
73    // implementation
74    bool      m_blockEvent;
75    wxBitmap  m_bitmap;
76
77    void OnSetBitmap();
78    void DoApplyWidgetStyle(GtkRcStyle *style);
79    bool IsOwnGtkWindow(GdkWindow *window);
80
81    virtual void OnInternalIdle();
82    virtual wxSize DoGetBestSize() const;
83
84private:
85    DECLARE_DYNAMIC_CLASS(wxToggleBitmapButton)
86};
87
88//-----------------------------------------------------------------------------
89// wxToggleButton
90//-----------------------------------------------------------------------------
91
92class WXDLLIMPEXP_CORE wxToggleButton: public wxControl
93{
94public:
95    // construction/destruction
96    wxToggleButton() {}
97    wxToggleButton(wxWindow *parent,
98                   wxWindowID id,
99                   const wxString& label,
100                   const wxPoint& pos = wxDefaultPosition,
101                   const wxSize& size = wxDefaultSize,
102                   long style = 0,
103                   const wxValidator& validator = wxDefaultValidator,
104                   const wxString& name = wxCheckBoxNameStr)
105    {
106        Create(parent, id, label, pos, size, style, validator, name);
107    }
108
109    // Create the control
110    bool Create(wxWindow *parent,
111                wxWindowID id,
112                const wxString& label,
113                const wxPoint& pos = wxDefaultPosition,
114                const wxSize& size = wxDefaultSize, long style = 0,
115                const wxValidator& validator = wxDefaultValidator,
116                const wxString& name = wxCheckBoxNameStr);
117
118    // Get/set the value
119    void SetValue(bool state);
120    bool GetValue() const;
121
122    // Set the label
123    void SetLabel(const wxString& label);
124    bool Enable(bool enable = TRUE);
125
126    static wxVisualAttributes
127    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
128
129    // implementation
130    bool m_blockEvent;
131
132    void DoApplyWidgetStyle(GtkRcStyle *style);
133    bool IsOwnGtkWindow(GdkWindow *window);
134
135    virtual void OnInternalIdle();
136    virtual wxSize DoGetBestSize() const;
137
138private:
139    DECLARE_DYNAMIC_CLASS(wxToggleButton)
140};
141
142#endif // _WX_GTK_TOGGLEBUTTON_H_
143
144