X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/78d14f80e9a72041ede52c30d912ec5cef21b1b3..b1169abb8308889350a93e5ad2e04f06bfc0619e:/contrib/src/xrc/xh_unkwn.cpp diff --git a/contrib/src/xrc/xh_unkwn.cpp b/contrib/src/xrc/xh_unkwn.cpp index d08cba8d28..f093482499 100644 --- a/contrib/src/xrc/xh_unkwn.cpp +++ b/contrib/src/xrc/xh_unkwn.cpp @@ -1,13 +1,13 @@ ///////////////////////////////////////////////////////////////////////////// // Name: xh_unkwn.cpp -// Purpose: XML resource for unknown widget +// Purpose: XRC resource for unknown widget // Author: Vaclav Slavik // Created: 2000/09/09 // RCS-ID: $Id$ // Copyright: (c) 2000 Vaclav Slavik // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - + #ifdef __GNUG__ #pragma implementation "xh_unkwn.h" #endif @@ -23,6 +23,7 @@ #include "wx/window.h" #include "wx/log.h" #include "wx/sizer.h" +#include "wx/panel.h" class wxUnknownControlContainer : public wxPanel @@ -35,14 +36,15 @@ public: const wxSize& size = wxDefaultSize) : wxPanel(parent, id, pos, size, wxTAB_TRAVERSAL | wxNO_BORDER, controlName + wxT("_container")), - m_controlName(controlName), m_controlAdded(FALSE) + m_controlName(controlName), m_controlAdded(false) { m_bg = GetBackgroundColour(); SetBackgroundColour(wxColour(255, 0, 255)); } virtual void AddChild(wxWindowBase *child); - + virtual void RemoveChild(wxWindowBase *child); + protected: wxString m_controlName; bool m_controlAdded; @@ -51,32 +53,40 @@ protected: void wxUnknownControlContainer::AddChild(wxWindowBase *child) { - wxASSERT_MSG( !m_controlAdded, wxT("Couldn't add two unknown controls to the same container!") ) + wxASSERT_MSG( !m_controlAdded, wxT("Couldn't add two unknown controls to the same container!") ); wxPanel::AddChild(child); - + SetBackgroundColour(m_bg); child->SetName(m_controlName); - child->SetId(XMLID(m_controlName)); - m_controlAdded = TRUE; - + child->SetId(wxXmlResource::GetXRCID(m_controlName)); + m_controlAdded = true; + wxSizer *sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add((wxWindow*)child, 1, wxEXPAND); SetSizer(sizer); - SetAutoLayout(TRUE); + SetAutoLayout(true); Layout(); } +void wxUnknownControlContainer::RemoveChild(wxWindowBase *child) +{ + wxPanel::RemoveChild(child); + m_controlAdded = false; + GetSizer()->Detach((wxWindow*)child); +} -wxUnknownWidgetXmlHandler::wxUnknownWidgetXmlHandler() -: wxXmlResourceHandler() +IMPLEMENT_DYNAMIC_CLASS(wxUnknownWidgetXmlHandler, wxXmlResourceHandler) + +wxUnknownWidgetXmlHandler::wxUnknownWidgetXmlHandler() +: wxXmlResourceHandler() { } wxObject *wxUnknownWidgetXmlHandler::DoCreateResource() -{ - wxPanel *panel = +{ + wxPanel *panel = new wxUnknownControlContainer(m_parentAsWindow, GetName(), -1, GetPosition(), GetSize());