notebooksizer is now property of notebook, not special kind of sizer

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7879 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2000-07-27 18:51:07 +00:00
parent f9c165b1d6
commit 0bed1ceef8
2 changed files with 26 additions and 43 deletions

View File

@@ -1,6 +1,6 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: xh_notbk.cpp // Name: xh_notbk.cpp
// Purpose: XML resource for wxBoxSizer // Purpose: XML resource for wxNotebook
// Author: Vaclav Slavik // Author: Vaclav Slavik
// Created: 2000/03/21 // Created: 2000/03/21
// RCS-ID: $Id$ // RCS-ID: $Id$
@@ -25,6 +25,7 @@
#include "wx/log.h" #include "wx/log.h"
#include "wx/notebook.h" #include "wx/notebook.h"
#include "wx/sizer.h"
wxNotebookXmlHandler::wxNotebookXmlHandler() wxNotebookXmlHandler::wxNotebookXmlHandler()
: wxXmlResourceHandler(), m_IsInside(FALSE), m_Notebook(NULL) : wxXmlResourceHandler(), m_IsInside(FALSE), m_Notebook(NULL)
@@ -39,13 +40,13 @@ wxNotebookXmlHandler::wxNotebookXmlHandler()
wxObject *wxNotebookXmlHandler::DoCreateResource() wxObject *wxNotebookXmlHandler::DoCreateResource()
{ {
if (m_Node->GetName() == _T("page")) if (m_Node->GetName() == _T("notebookpage"))
{ {
wxXmlNode *n = GetParamNode(_T("child"))->GetChildren(); wxXmlNode *n = GetParamNode(_T("window"))->GetChildren();
while (n) while (n)
{ {
if (n->GetType() == wxXML_ELEMENT_NODE) if (n->GetType() == wxXML_ELEMENT_NODE)
{ {
bool old_ins = m_IsInside; bool old_ins = m_IsInside;
m_IsInside = FALSE; m_IsInside = FALSE;
m_IsInside = old_ins; m_IsInside = old_ins;
@@ -53,7 +54,7 @@ wxObject *wxNotebookXmlHandler::DoCreateResource()
wxWindow *wnd = wxDynamicCast(item, wxWindow); wxWindow *wnd = wxDynamicCast(item, wxWindow);
if (wnd) if (wnd)
m_Notebook->AddPage(wnd, GetText(_T("label")), m_Notebook->AddPage(wnd, GetText(_T("label")),
GetBool(_T("selected"), 0)); GetBool(_T("selected"), 0));
else else
wxLogError(_T("Error in resource.")); wxLogError(_T("Error in resource."));
@@ -79,8 +80,11 @@ wxObject *wxNotebookXmlHandler::DoCreateResource()
CreateChildren(m_Notebook, TRUE/*only this handler*/); CreateChildren(m_Notebook, TRUE/*only this handler*/);
m_IsInside = old_ins; m_IsInside = old_ins;
m_Notebook = old_par; m_Notebook = old_par;
return nb; if (GetBool(_T("usenotebooksizer"), FALSE))
return new wxNotebookSizer(nb);
else
return nb;
} }
} }
@@ -89,7 +93,7 @@ wxObject *wxNotebookXmlHandler::DoCreateResource()
bool wxNotebookXmlHandler::CanHandle(wxXmlNode *node) bool wxNotebookXmlHandler::CanHandle(wxXmlNode *node)
{ {
return ((!m_IsInside && node->GetName() == _T("notebook")) || return ((!m_IsInside && node->GetName() == _T("notebook")) ||
(m_IsInside && node->GetName() == _T("page"))); (m_IsInside && node->GetName() == _T("notebookpage")));
} }
#endif #endif

View File

@@ -25,6 +25,16 @@
#include "wx/statbox.h" #include "wx/statbox.h"
#include "wx/notebook.h" #include "wx/notebook.h"
static bool IsSizerNode(wxXmlNode *node)
{
return (node->GetName() == _T("boxsizer")) ||
(node->GetName() == _T("staticboxsizer")) ||
(node->GetName() == _T("gridsizer")) ||
(node->GetName() == _T("flexgridsizer"));
}
wxSizerXmlHandler::wxSizerXmlHandler() wxSizerXmlHandler::wxSizerXmlHandler()
: wxXmlResourceHandler(), m_IsInside(FALSE), m_ParentSizer(NULL) : wxXmlResourceHandler(), m_IsInside(FALSE), m_ParentSizer(NULL)
{ {
@@ -72,9 +82,12 @@ wxObject *wxSizerXmlHandler::DoCreateResource()
if (n->GetType() == wxXML_ELEMENT_NODE) if (n->GetType() == wxXML_ELEMENT_NODE)
{ {
bool old_ins = m_IsInside; bool old_ins = m_IsInside;
wxSizer *old_par = m_ParentSizer;
m_IsInside = FALSE; m_IsInside = FALSE;
if (!IsSizerNode(n)) m_ParentSizer = NULL;
wxObject *item = CreateResFromNode(n, m_Parent, NULL); wxObject *item = CreateResFromNode(n, m_Parent, NULL);
m_IsInside = old_ins; m_IsInside = old_ins;
m_ParentSizer = old_par;
wxSizer *sizer = wxDynamicCast(item, wxSizer); wxSizer *sizer = wxDynamicCast(item, wxSizer);
wxWindow *wnd = wxDynamicCast(item, wxWindow); wxWindow *wnd = wxDynamicCast(item, wxWindow);
@@ -104,35 +117,7 @@ wxObject *wxSizerXmlHandler::DoCreateResource()
return NULL; return NULL;
} }
#if wxUSE_NOTEBOOK
else if (m_Node->GetName() == _T("notebooksizer"))
{
wxCHECK_MSG(m_ParentSizer, NULL, _T("Incorrect syntax of XML resource: notebooksizer not within sizer!"));
wxSizer *old_par = m_ParentSizer;
m_ParentSizer = NULL;
wxNotebook *nb = NULL;
wxObject *item;
wxXmlNode *n = GetParamNode(_T("window"))->GetChildren();
while (n)
{
if (n->GetType() == wxXML_ELEMENT_NODE)
{
item = CreateResFromNode(n, m_Parent, NULL);
nb = wxDynamicCast(item, wxNotebook);
break;
}
n = n->GetNext();
}
m_ParentSizer = old_par;
wxCHECK_MSG(nb, NULL, _T("Incorrect syntax of XML resource: notebooksizer must contain a notebook!"));
return new wxNotebookSizer(nb);
}
#endif
else { else {
wxSizer *sizer = NULL; wxSizer *sizer = NULL;
@@ -193,13 +178,7 @@ wxObject *wxSizerXmlHandler::DoCreateResource()
bool wxSizerXmlHandler::CanHandle(wxXmlNode *node) bool wxSizerXmlHandler::CanHandle(wxXmlNode *node)
{ {
return ((!m_IsInside && node->GetName() == _T("boxsizer")) || return ((!m_IsInside && IsSizerNode(node)) ||
(!m_IsInside && node->GetName() == _T("staticboxsizer")) ||
(!m_IsInside && node->GetName() == _T("gridsizer")) ||
(!m_IsInside && node->GetName() == _T("flexgridsizer")) ||
#if wxUSE_NOTEBOOK
(!m_IsInside && node->GetName() == _T("notebooksizer")) ||
#endif
(m_IsInside && node->GetName() == _T("sizeritem")) || (m_IsInside && node->GetName() == _T("sizeritem")) ||
(m_IsInside && node->GetName() == _T("spacer"))); (m_IsInside && node->GetName() == _T("spacer")));
} }