wxWidgets/src/xrc/xh_wizrd.cpp

105 lines
2.7 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/xrc/xh_wizrd.cpp
// Purpose: XRC resource for wxWizard
// Author: Vaclav Slavik
// Created: 2003/03/01
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#if wxUSE_XRC && wxUSE_WIZARDDLG
#include "wx/xrc/xh_wizrd.h"
#ifndef WX_PRECOMP
#include "wx/log.h"
#endif
#include "wx/wizard.h"
IMPLEMENT_DYNAMIC_CLASS(wxWizardXmlHandler, wxXmlResourceHandler)
wxWizardXmlHandler::wxWizardXmlHandler() : wxXmlResourceHandler()
{
m_wizard = NULL;
m_lastSimplePage = NULL;
XRC_ADD_STYLE(wxWIZARD_EX_HELPBUTTON);
AddWindowStyles();
}
wxObject *wxWizardXmlHandler::DoCreateResource()
{
if (m_class == wxT("wxWizard"))
{
XRC_MAKE_INSTANCE(wiz, wxWizard)
long style = GetStyle(wxT("exstyle"), 0);
if (style != 0)
wiz->SetExtraStyle(style);
wiz->Create(m_parentAsWindow,
GetID(),
GetText(wxT("title")),
GetBitmap(),
GetPosition());
SetupWindow(wiz);
wxWizard *old = m_wizard;
m_wizard = wiz;
m_lastSimplePage = NULL;
CreateChildren(wiz, true /*this handler only*/);
m_wizard = old;
return wiz;
}
else
{
wxWizardPage *page;
if (m_class == wxT("wxWizardPageSimple"))
{
XRC_MAKE_INSTANCE(p, wxWizardPageSimple)
p->Create(m_wizard, NULL, NULL, GetBitmap());
if (m_lastSimplePage)
wxWizardPageSimple::Chain(m_lastSimplePage, p);
page = p;
m_lastSimplePage = p;
}
else /*if (m_class == wxT("wxWizardPage"))*/
{
if ( !m_instance )
{
ReportError("wxWizardPage is abstract class and must be subclassed");
return NULL;
}
page = wxStaticCast(m_instance, wxWizardPage);
page->Create(m_wizard, GetBitmap());
}
page->SetName(GetName());
page->SetId(GetID());
SetupWindow(page);
CreateChildren(page);
return page;
}
}
bool wxWizardXmlHandler::CanHandle(wxXmlNode *node)
{
return IsOfClass(node, wxT("wxWizard")) ||
(m_wizard != NULL &&
(IsOfClass(node, wxT("wxWizardPage")) ||
IsOfClass(node, wxT("wxWizardPageSimple")))
);
}
#endif // wxUSE_XRC && wxUSE_WIZARDDLG