X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f25881804583790351480098b50f4ce1b924e697..9c112555198f51fcec71106530cddba95a17f3dc:/src/xrc/xh_notbk.cpp?ds=sidebyside diff --git a/src/xrc/xh_notbk.cpp b/src/xrc/xh_notbk.cpp index 0a44e451b8..7ac56de506 100644 --- a/src/xrc/xh_notbk.cpp +++ b/src/xrc/xh_notbk.cpp @@ -7,8 +7,8 @@ // Copyright: (c) 2000 Vaclav Slavik // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ + +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "xh_notbk.h" #endif @@ -19,48 +19,69 @@ #pragma hdrstop #endif -#include "wx/xrc/xh_notbk.h" +#if wxUSE_XRC && wxUSE_NOTEBOOK -#if wxUSE_NOTEBOOK +#include "wx/xrc/xh_notbk.h" #include "wx/log.h" #include "wx/notebook.h" +#include "wx/imaglist.h" #include "wx/sizer.h" -wxNotebookXmlHandler::wxNotebookXmlHandler() -: wxXmlResourceHandler(), m_isInside(FALSE), m_notebook(NULL) +IMPLEMENT_DYNAMIC_CLASS(wxNotebookXmlHandler, wxXmlResourceHandler) + +wxNotebookXmlHandler::wxNotebookXmlHandler() +: wxXmlResourceHandler(), m_isInside(false), m_notebook(NULL) { - ADD_STYLE(wxNB_FIXEDWIDTH); - ADD_STYLE(wxNB_LEFT); - ADD_STYLE(wxNB_RIGHT); - ADD_STYLE(wxNB_BOTTOM); - AddWindowStyles(); -} + XRC_ADD_STYLE(wxNB_DEFAULT); + XRC_ADD_STYLE(wxNB_LEFT); + XRC_ADD_STYLE(wxNB_RIGHT); + XRC_ADD_STYLE(wxNB_TOP); + XRC_ADD_STYLE(wxNB_BOTTOM); + XRC_ADD_STYLE(wxNB_FIXEDWIDTH); + XRC_ADD_STYLE(wxNB_MULTILINE); + XRC_ADD_STYLE(wxNB_NOPAGETHEME); + AddWindowStyles(); +} wxObject *wxNotebookXmlHandler::DoCreateResource() -{ +{ if (m_class == wxT("notebookpage")) { wxXmlNode *n = GetParamNode(wxT("object")); - if ( !n ) - n = GetParamNode(wxT("object_ref")); + if ( !n ) + n = GetParamNode(wxT("object_ref")); if (n) { bool old_ins = m_isInside; - m_isInside = FALSE; - m_isInside = old_ins; + m_isInside = false; wxObject *item = CreateResFromNode(n, m_notebook, NULL); + m_isInside = old_ins; wxWindow *wnd = wxDynamicCast(item, wxWindow); if (wnd) + { m_notebook->AddPage(wnd, GetText(wxT("label")), - GetBool(wxT("selected"), 0)); - else - wxLogError(wxT("Error in resource.")); + GetBool(wxT("selected"))); + if ( HasParam(wxT("bitmap")) ) + { + wxBitmap bmp = GetBitmap(wxT("bitmap"), wxART_OTHER); + wxImageList *imgList = m_notebook->GetImageList(); + if ( imgList == NULL ) + { + imgList = new wxImageList( bmp.GetWidth(), bmp.GetHeight() ); + m_notebook->AssignImageList( imgList ); + } + int imgIndex = imgList->Add(bmp); + m_notebook->SetPageImage(m_notebook->GetPageCount()-1, imgIndex ); + } + } + else + wxLogError(wxT("Error in resource.")); return wnd; } else @@ -69,40 +90,35 @@ wxObject *wxNotebookXmlHandler::DoCreateResource() return NULL; } } - - else { - wxNotebook *nb = wxStaticCast(m_instance, wxNotebook); - if ( !nb ) - nb = new wxNotebook; + else + { + XRC_MAKE_INSTANCE(nb, wxNotebook) + + nb->Create(m_parentAsWindow, + GetID(), + GetPosition(), GetSize(), + GetStyle(wxT("style")), + GetName()); - nb->Create(m_parentAsWindow, - GetID(), - GetPosition(), GetSize(), - GetStyle( wxT("style" )), - GetName()); + SetupWindow(nb); wxNotebook *old_par = m_notebook; m_notebook = nb; bool old_ins = m_isInside; - m_isInside = TRUE; - CreateChildren(m_notebook, TRUE/*only this handler*/); + m_isInside = true; + CreateChildren(m_notebook, true/*only this handler*/); m_isInside = old_ins; m_notebook = old_par; - if (GetBool(wxT("usenotebooksizer"), FALSE)) - return new wxNotebookSizer(nb); - else - return nb; + return nb; } } - - bool wxNotebookXmlHandler::CanHandle(wxXmlNode *node) { return ((!m_isInside && IsOfClass(node, wxT("wxNotebook"))) || (m_isInside && IsOfClass(node, wxT("notebookpage")))); } -#endif +#endif // wxUSE_XRC && wxUSE_NOTEBOOK