wxSizer* MaxSizerXmlHandler::Handle_wxGridBagSizer() { MaxGridBagSizer *sizer = new MaxGridBagSizer(GetDimension(wxT("vgap")), GetDimension(wxT("hgap"))); SetGrowables(sizer, wxT("growablerows"), true); SetGrowables(sizer, wxT("growablecols"), false); sizer->MaxBind(CB_PREF(wx_wxwindow_wxGridBagSizer__xrcNew)(sizer)); return sizer; }
wxObject* wxSizerXmlHandler::Handle_sizer() { wxXmlNode *parentNode = m_node->GetParent(); if ( !m_parentSizer && (!parentNode || parentNode->GetType() != wxXML_ELEMENT_NODE || !m_parentAsWindow) ) { ReportError("sizer must have a window parent"); return NULL; } // Create the sizer of the appropriate class. wxSizer * const sizer = DoCreateSizer(m_class); // creation of sizer failed for some (already reported) reason, so exit: if ( !sizer ) return NULL; wxSize minsize = GetSize(wxT("minsize")); if (!(minsize == wxDefaultSize)) sizer->SetMinSize(minsize); // save state wxSizer *old_par = m_parentSizer; bool old_ins = m_isInside; // set new state m_parentSizer = sizer; m_isInside = true; m_isGBS = (m_class == wxT("wxGridBagSizer")); wxObject* parent = m_parent; #if wxUSE_STATBOX // wxStaticBoxSizer's child controls should be parented by the box itself, // not its parent. wxStaticBoxSizer* const stsizer = wxDynamicCast(sizer, wxStaticBoxSizer); if ( stsizer ) parent = stsizer->GetStaticBox(); #endif // wxUSE_STATBOX CreateChildren(parent, true/*only this handler*/); // set growable rows and cols for sizers which support this if ( wxFlexGridSizer *flexsizer = wxDynamicCast(sizer, wxFlexGridSizer) ) { SetGrowables(flexsizer, wxT("growablerows"), true); SetGrowables(flexsizer, wxT("growablecols"), false); } // restore state m_isInside = old_ins; m_parentSizer = old_par; if (m_parentSizer == NULL) // setup window: { m_parentAsWindow->SetSizer(sizer); wxXmlNode *nd = m_node; m_node = parentNode; if (GetSize() == wxDefaultSize) { if ( wxDynamicCast(m_parentAsWindow, wxScrolledWindow) != NULL ) { sizer->FitInside(m_parentAsWindow); } else { sizer->Fit(m_parentAsWindow); } } m_node = nd; if (m_parentAsWindow->IsTopLevel()) { sizer->SetSizeHints(m_parentAsWindow); } } return sizer; }