Document wxBitmapToggleButton, add update UI event in Base class for all toggle buttons
[wxWidgets.git] / include / wx / tglbtn.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/tglbtn.h
3 // Purpose: This dummy header includes the proper header file for the
4 // system we're compiling under.
5 // Author: John Norris, minor changes by Axel Schlueter
6 // Modified by:
7 // Created: 08.02.01
8 // RCS-ID: $Id$
9 // Copyright: (c) 2000 Johnny C. Norris II
10 // License: wxWindows Licence
11 /////////////////////////////////////////////////////////////////////////////
12
13 #ifndef _WX_TOGGLEBUTTON_H_BASE_
14 #define _WX_TOGGLEBUTTON_H_BASE_
15
16 #include "wx/defs.h"
17
18 #if wxUSE_TOGGLEBTN
19
20 #include "wx/event.h"
21 #include "wx/control.h" // base class
22
23 BEGIN_DECLARE_EVENT_TYPES()
24 DECLARE_EVENT_TYPE(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, 19)
25 END_DECLARE_EVENT_TYPES()
26
27 // ----------------------------------------------------------------------------
28 // wxToggleButtonBase
29 // ----------------------------------------------------------------------------
30
31 class WXDLLEXPORT wxToggleButtonBase : public wxControl
32 {
33 public:
34 wxToggleButtonBase() { }
35
36 // Get/set the value
37 virtual void SetValue(bool state) = 0;
38 virtual bool GetValue() const = 0;
39
40 void UpdateWindowUI(long flags)
41 {
42 wxControl::UpdateWindowUI(flags);
43
44 if ( !IsShown() )
45 return;
46
47 wxWindow *tlw = wxGetTopLevelParent( this );
48 if (tlw && wxPendingDelete.Member( tlw ))
49 return;
50
51 wxUpdateUIEvent event( GetId() );
52 event.SetEventObject(this);
53
54 if (GetEventHandler()->ProcessEvent(event) )
55 {
56 if ( event.GetSetChecked() )
57 SetValue( event.GetChecked() );
58 }
59 }
60
61 // Buttons on MSW can look bad if they are not native colours, because
62 // then they become owner-drawn and not theme-drawn. Disable it here
63 // in wxToggleButtonBase to make it consistent.
64 virtual bool ShouldInheritColours() const { return false; }
65
66 protected:
67 // choose the default border for this window
68 virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
69
70 DECLARE_NO_COPY_CLASS(wxToggleButtonBase)
71 };
72
73
74 #define EVT_TOGGLEBUTTON(id, fn) \
75 wx__DECLARE_EVT1(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, id, wxCommandEventHandler(fn))
76
77 #if defined(__WXUNIVERSAL__)
78 #include "wx/univ/tglbtn.h"
79 #elif defined(__WXMSW__)
80 #include "wx/msw/tglbtn.h"
81 #elif defined(__WXGTK20__)
82 #include "wx/gtk/tglbtn.h"
83 #elif defined(__WXGTK__)
84 #include "wx/gtk1/tglbtn.h"
85 # elif defined(__WXMOTIF__)
86 #include "wx/motif/tglbtn.h"
87 #elif defined(__WXMAC__)
88 #include "wx/mac/tglbtn.h"
89 #elif defined(__WXPALMOS__)
90 #include "wx/palmos/tglbtn.h"
91 #elif defined(__WXPM__)
92 #include "wx/os2/tglbtn.h"
93 #endif
94
95 #endif // wxUSE_TOGGLEBTN
96
97 #endif // _WX_TOGGLEBUTTON_H_BASE_
98