X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/876cd6f7e3c4c4a005828f4e7f53897210d29635..ac0c512d865e6236fc81882cb84cc38d09f8f0ec:/src/xrc/xh_sizer.cpp?ds=sidebyside diff --git a/src/xrc/xh_sizer.cpp b/src/xrc/xh_sizer.cpp index 443c870ebb..9ff053c5b2 100644 --- a/src/xrc/xh_sizer.cpp +++ b/src/xrc/xh_sizer.cpp @@ -23,9 +23,12 @@ #include "wx/log.h" #include "wx/panel.h" #include "wx/statbox.h" + #include "wx/sizer.h" + #include "wx/frame.h" + #include "wx/dialog.h" + #include "wx/button.h" #endif -#include "wx/sizer.h" #include "wx/gbsizer.h" #include "wx/notebook.h" #include "wx/tokenzr.h" @@ -38,10 +41,10 @@ IMPLEMENT_DYNAMIC_CLASS(wxSizerXmlHandler, wxXmlResourceHandler) wxSizerXmlHandler::wxSizerXmlHandler() - : wxXmlResourceHandler(), - m_isInside(false), - m_isGBS(false), - m_parentSizer(NULL) + :wxXmlResourceHandler(), + m_isInside(false), + m_isGBS(false), + m_parentSizer(NULL) { XRC_ADD_STYLE(wxHORIZONTAL); XRC_ADD_STYLE(wxVERTICAL); @@ -73,7 +76,6 @@ wxSizerXmlHandler::wxSizerXmlHandler() XRC_ADD_STYLE(wxALIGN_CENTER_VERTICAL); XRC_ADD_STYLE(wxALIGN_CENTRE_VERTICAL); - XRC_ADD_STYLE(wxADJUST_MINSIZE); XRC_ADD_STYLE(wxFIXED_MINSIZE); } @@ -142,9 +144,9 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem() wxWindow *wnd = wxDynamicCast(item, wxWindow); if (sizer) - sitem->SetSizer(sizer); + sitem->AssignSizer(sizer); else if (wnd) - sitem->SetWindow(wnd); + sitem->AssignWindow(wnd); else wxLogError(wxT("Error in resource.")); @@ -168,7 +170,7 @@ wxObject* wxSizerXmlHandler::Handle_spacer() wxSizerItem* sitem = MakeSizerItem(); SetSizerItemAttributes(sitem); - sitem->SetSpacer(GetSize()); + sitem->AssignSpacer(GetSize()); AddSizerItem(sitem); return NULL; } @@ -182,18 +184,16 @@ wxObject* wxSizerXmlHandler::Handle_sizer() wxCHECK_MSG(m_parentSizer != NULL || (parentNode && parentNode->GetType() == wxXML_ELEMENT_NODE && - m_parentAsWindow != NULL && - (m_parentAsWindow->IsKindOf(CLASSINFO(wxPanel)) || - m_parentAsWindow->IsKindOf(CLASSINFO(wxFrame)) || - m_parentAsWindow->IsKindOf(CLASSINFO(wxDialog))) - ), NULL, - wxT("Incorrect use of sizer: parent is not 'wxDialog', 'wxFrame' or 'wxPanel'.")); + m_parentAsWindow), NULL, + wxT("Sizer must have a window parent node")); if (m_class == wxT("wxBoxSizer")) sizer = Handle_wxBoxSizer(); +#if wxUSE_STATBOX else if (m_class == wxT("wxStaticBoxSizer")) sizer = Handle_wxStaticBoxSizer(); +#endif else if (m_class == wxT("wxGridSizer")) sizer = Handle_wxGridSizer(); @@ -252,6 +252,7 @@ wxSizer* wxSizerXmlHandler::Handle_wxBoxSizer() return new wxBoxSizer(GetStyle(wxT("orient"), wxHORIZONTAL)); } +#if wxUSE_STATBOX wxSizer* wxSizerXmlHandler::Handle_wxStaticBoxSizer() { return new wxStaticBoxSizer( @@ -263,6 +264,7 @@ wxSizer* wxSizerXmlHandler::Handle_wxStaticBoxSizer() GetName()), GetStyle(wxT("orient"), wxHORIZONTAL)); } +#endif // wxUSE_STATBOX wxSizer* wxSizerXmlHandler::Handle_wxGridSizer() { @@ -359,6 +361,9 @@ void wxSizerXmlHandler::SetSizerItemAttributes(wxSizerItem* sitem) gbsitem->SetPos(GetGBPos(wxT("cellpos"))); gbsitem->SetSpan(GetGBSpan(wxT("cellspan"))); } + + // record the id of the item, if any, for use by XRCSIZERITEM() + sitem->SetId(GetID()); } void wxSizerXmlHandler::AddSizerItem(wxSizerItem* sitem) @@ -374,6 +379,7 @@ void wxSizerXmlHandler::AddSizerItem(wxSizerItem* sitem) //----------------------------------------------------------------------------- // wxStdDialogButtonSizerXmlHandler //----------------------------------------------------------------------------- +#if wxUSE_BUTTON IMPLEMENT_DYNAMIC_CLASS(wxStdDialogButtonSizerXmlHandler, wxXmlResourceHandler) @@ -435,5 +441,6 @@ bool wxStdDialogButtonSizerXmlHandler::CanHandle(wxXmlNode *node) return (!m_isInside && IsOfClass(node, wxT("wxStdDialogButtonSizer"))) || (m_isInside && IsOfClass(node, wxT("button"))); } +#endif // wxUSE_BUTTON #endif // wxUSE_XRC