X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dd47af27e12ee66b3e9eed6f1711e516f36dc837..90e10cd1bedc5cac1ce1b5331d6fd2a351014cfa:/src/xrc/xh_tglbtn.cpp diff --git a/src/xrc/xh_tglbtn.cpp b/src/xrc/xh_tglbtn.cpp index 91f433d8a9..be031f7565 100644 --- a/src/xrc/xh_tglbtn.cpp +++ b/src/xrc/xh_tglbtn.cpp @@ -19,36 +19,83 @@ #include "wx/xrc/xh_tglbtn.h" #include "wx/tglbtn.h" +#include "wx/button.h" // solely for wxBU_EXACTFIT IMPLEMENT_DYNAMIC_CLASS(wxToggleButtonXmlHandler, wxXmlResourceHandler) wxToggleButtonXmlHandler::wxToggleButtonXmlHandler() -: wxXmlResourceHandler() + : wxXmlResourceHandler() { + XRC_ADD_STYLE(wxBU_EXACTFIT); + AddWindowStyles(); } wxObject *wxToggleButtonXmlHandler::DoCreateResource() { - XRC_MAKE_INSTANCE(control, wxToggleButton) - control->Create(m_parentAsWindow, - GetID(), - GetText(wxT("label")), - GetPosition(), GetSize(), - GetStyle(), - wxDefaultValidator, - GetName()); + wxObject *control = m_instance; + +#if !defined(__WXUNIVERSAL__) && !defined(__WXMOTIF__) && !defined(__WXPALMOS__) && !defined(__WXPM__) && !(defined(__WXGTK__) && !defined(__WXGTK20__)) + + if (m_class == wxT("wxBitmapToggleButton")) + { + if (!control) + control = new wxBitmapToggleButton; + + DoCreateBitmapToggleButton(control); + } + else +#endif + { + if (!control) + control = new wxToggleButton; + + DoCreateToggleButton(control); + } - control->SetValue(GetBool( wxT("checked"))); - SetupWindow(control); + SetupWindow(wxDynamicCast(control, wxWindow)); return control; } bool wxToggleButtonXmlHandler::CanHandle(wxXmlNode *node) { - return IsOfClass(node, wxT("wxToggleButton")); + return ( + IsOfClass(node, wxT("wxToggleButton")) || + IsOfClass(node, wxT("wxBitmapToggleButton")) + ); +} + +void wxToggleButtonXmlHandler::DoCreateToggleButton(wxObject *control) +{ + wxToggleButton *button = wxDynamicCast(control, wxToggleButton); + + button->Create(m_parentAsWindow, + GetID(), + GetText(wxT("label")), + GetPosition(), GetSize(), + GetStyle(), + wxDefaultValidator, + GetName()); + + button->SetValue(GetBool( wxT("checked"))); } +#if !defined(__WXUNIVERSAL__) && !defined(__WXMOTIF__) && !defined(__WXPALMOS__) && !defined(__WXPM__) && !(defined(__WXGTK__) && !defined(__WXGTK20__)) +void wxToggleButtonXmlHandler::DoCreateBitmapToggleButton(wxObject *control) +{ + wxBitmapToggleButton *button = wxDynamicCast(control, wxBitmapToggleButton); + + button->Create(m_parentAsWindow, + GetID(), + GetBitmap(wxT("bitmap"), wxART_BUTTON), + GetPosition(), GetSize(), + GetStyle(), + wxDefaultValidator, + GetName()); + + button->SetValue(GetBool( wxT("checked"))); +} +#endif #endif // wxUSE_XRC && wxUSE_TOGGLEBTN