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

View File

@@ -25,6 +25,16 @@
#include "wx/statbox.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()
: wxXmlResourceHandler(), m_IsInside(FALSE), m_ParentSizer(NULL)
{
@@ -72,9 +82,12 @@ wxObject *wxSizerXmlHandler::DoCreateResource()
if (n->GetType() == wxXML_ELEMENT_NODE)
{
bool old_ins = m_IsInside;
wxSizer *old_par = m_ParentSizer;
m_IsInside = FALSE;
if (!IsSizerNode(n)) m_ParentSizer = NULL;
wxObject *item = CreateResFromNode(n, m_Parent, NULL);
m_IsInside = old_ins;
m_ParentSizer = old_par;
wxSizer *sizer = wxDynamicCast(item, wxSizer);
wxWindow *wnd = wxDynamicCast(item, wxWindow);
@@ -104,35 +117,7 @@ wxObject *wxSizerXmlHandler::DoCreateResource()
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 {
wxSizer *sizer = NULL;
@@ -193,13 +178,7 @@ wxObject *wxSizerXmlHandler::DoCreateResource()
bool wxSizerXmlHandler::CanHandle(wxXmlNode *node)
{
return ((!m_IsInside && node->GetName() == _T("boxsizer")) ||
(!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
return ((!m_IsInside && IsSizerNode(node)) ||
(m_IsInside && node->GetName() == _T("sizeritem")) ||
(m_IsInside && node->GetName() == _T("spacer")));
}