X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/08e5319b03f80c8554a49c1ef4c9d2adaa8587ce..7344108e8a129a3f9b4df5ab0f98a1713db03b89:/include/wx/tglbtn.h diff --git a/include/wx/tglbtn.h b/include/wx/tglbtn.h index 98a2a7207c..14630c3bde 100644 --- a/include/wx/tglbtn.h +++ b/include/wx/tglbtn.h @@ -7,7 +7,7 @@ // Created: 08.02.01 // RCS-ID: $Id$ // Copyright: (c) 2000 Johnny C. Norris II -// License: Rocketeer license +// Licence: wxWindows Licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_TOGGLEBUTTON_H_BASE_ @@ -18,26 +18,79 @@ #if wxUSE_TOGGLEBTN #include "wx/event.h" -#include "wx/control.h" // base class +#include "wx/anybutton.h" // base class -BEGIN_DECLARE_EVENT_TYPES() - DECLARE_EVENT_TYPE(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, 19) -END_DECLARE_EVENT_TYPES() +extern WXDLLIMPEXP_DATA_CORE(const char) wxCheckBoxNameStr[]; -#define EVT_TOGGLEBUTTON(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ), +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEvent ); -#if defined(__WXMSW__) +// ---------------------------------------------------------------------------- +// wxToggleButtonBase +// ---------------------------------------------------------------------------- + +class WXDLLIMPEXP_CORE wxToggleButtonBase : public wxAnyButton +{ +public: + wxToggleButtonBase() { } + + // Get/set the value + virtual void SetValue(bool state) = 0; + virtual bool GetValue() const = 0; + + void UpdateWindowUI(long flags) + { + wxControl::UpdateWindowUI(flags); + + if ( !IsShown() ) + return; + + wxWindow *tlw = wxGetTopLevelParent( this ); + if (tlw && wxPendingDelete.Member( tlw )) + return; + + wxUpdateUIEvent event( GetId() ); + event.SetEventObject(this); + + if (GetEventHandler()->ProcessEvent(event) ) + { + if ( event.GetSetChecked() ) + SetValue( event.GetChecked() ); + } + } + + // Buttons on MSW can look bad if they are not native colours, because + // then they become owner-drawn and not theme-drawn. Disable it here + // in wxToggleButtonBase to make it consistent. + virtual bool ShouldInheritColours() const { return false; } + +protected: + // choose the default border for this window + virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; } + + wxDECLARE_NO_COPY_CLASS(wxToggleButtonBase); +}; + + +#define EVT_TOGGLEBUTTON(id, fn) \ + wx__DECLARE_EVT1(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, id, wxCommandEventHandler(fn)) + +#if defined(__WXUNIVERSAL__) + #include "wx/univ/tglbtn.h" +#elif defined(__WXMSW__) #include "wx/msw/tglbtn.h" -#elif defined(__WXGTK__) + #define wxHAS_BITMAPTOGGLEBUTTON +#elif defined(__WXGTK20__) #include "wx/gtk/tglbtn.h" + #define wxHAS_BITMAPTOGGLEBUTTON +#elif defined(__WXGTK__) + #include "wx/gtk1/tglbtn.h" # elif defined(__WXMOTIF__) #include "wx/motif/tglbtn.h" -/* -# elif defined(__WXMAC__) -# include "wx/mac/tglbtn.h" -# elif defined(__WXPM__) -# include "wx/os2/tglbtn.h" -*/ +#elif defined(__WXMAC__) + #include "wx/osx/tglbtn.h" + #define wxHAS_BITMAPTOGGLEBUTTON +#elif defined(__WXPM__) + #include "wx/os2/tglbtn.h" #endif #endif // wxUSE_TOGGLEBTN