Applied #11755: wxBitmapToggleButton Xml Handler

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64317 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2010-05-16 14:30:13 +00:00
parent 3556d648eb
commit 3f6e622f7c
2 changed files with 64 additions and 11 deletions

View File

@@ -23,6 +23,10 @@ public:
wxToggleButtonXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
protected:
virtual void DoCreateToggleButton(wxObject *control);
virtual void DoCreateBitmapToggleButton(wxObject *control);
};
#endif // wxUSE_XRC && wxUSE_TOGGLEBTN

View File

@@ -33,25 +33,74 @@ wxToggleButtonXmlHandler::wxToggleButtonXmlHandler()
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;
control->SetValue(GetBool( wxT("checked")));
SetupWindow(control);
#if !defined(__WXUNIVERSAL__) && !defined(__WXMOTIF__) && !defined(__WXPALMOS__) && !defined(__WXPM__)
if (m_class == wxT("wxBitmapToggleButton"))
{
if (!control)
control = new wxBitmapToggleButton;
DoCreateBitmapToggleButton(control);
}
else
#endif
{
if (!control)
control = new wxToggleButton;
DoCreateToggleButton(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);
wxString label = GetText(wxT("label"));
button->Create(m_parentAsWindow,
GetID(),
#if defined(__WXUNIVERSAL__)
!label.empty() ? label : GetBitmap(wxT("bitmap"), wxART_BUTTON),
#else
label,
#endif
GetPosition(), GetSize(),
GetStyle(),
wxDefaultValidator,
GetName());
button->SetValue(GetBool( wxT("checked")));
}
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 // wxUSE_XRC && wxUSE_TOGGLEBTN