819559b2ac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
114 lines
3.1 KiB
C++
114 lines
3.1 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/xrc/xh_split.cpp
|
|
// Purpose: XRC resource for wxSplitterWindow
|
|
// Author: panga@freemail.hu, Vaclav Slavik
|
|
// Created: 2003/01/26
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 2003 panga@freemail.hu, 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_SPLITTER
|
|
|
|
#include "wx/xrc/xh_split.h"
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/log.h"
|
|
#endif
|
|
|
|
#include "wx/splitter.h"
|
|
|
|
IMPLEMENT_DYNAMIC_CLASS(wxSplitterWindowXmlHandler, wxXmlResourceHandler)
|
|
|
|
wxSplitterWindowXmlHandler::wxSplitterWindowXmlHandler() : wxXmlResourceHandler()
|
|
{
|
|
XRC_ADD_STYLE(wxSP_3D);
|
|
XRC_ADD_STYLE(wxSP_3DSASH);
|
|
XRC_ADD_STYLE(wxSP_3DBORDER);
|
|
#if WXWIN_COMPATIBILITY_2_6
|
|
XRC_ADD_STYLE(wxSP_FULLSASH);
|
|
#endif // WXWIN_COMPATIBILITY_2_6
|
|
XRC_ADD_STYLE(wxSP_BORDER);
|
|
XRC_ADD_STYLE(wxSP_NOBORDER);
|
|
XRC_ADD_STYLE(wxSP_PERMIT_UNSPLIT);
|
|
XRC_ADD_STYLE(wxSP_LIVE_UPDATE);
|
|
XRC_ADD_STYLE(wxSP_NO_XP_THEME);
|
|
AddWindowStyles();
|
|
}
|
|
|
|
wxObject *wxSplitterWindowXmlHandler::DoCreateResource()
|
|
{
|
|
XRC_MAKE_INSTANCE(splitter, wxSplitterWindow);
|
|
|
|
splitter->Create(m_parentAsWindow,
|
|
GetID(),
|
|
GetPosition(), GetSize(),
|
|
GetStyle(wxT("style"), wxSP_3D),
|
|
GetName());
|
|
|
|
SetupWindow(splitter);
|
|
|
|
long sashpos = GetLong(wxT("sashpos"), 0);
|
|
long minpanesize = GetLong(wxT("minsize"), -1);
|
|
float gravity = GetFloat(wxT("gravity"), 0.0);
|
|
if (minpanesize != -1)
|
|
splitter->SetMinimumPaneSize(minpanesize);
|
|
if (gravity != 0.0)
|
|
splitter->SetSashGravity(gravity);
|
|
|
|
wxWindow *win1 = NULL, *win2 = NULL;
|
|
wxXmlNode *n = m_node->GetChildren();
|
|
while (n)
|
|
{
|
|
if ((n->GetType() == wxXML_ELEMENT_NODE) &&
|
|
(n->GetName() == wxT("object") ||
|
|
n->GetName() == wxT("object_ref")))
|
|
{
|
|
wxObject *created = CreateResFromNode(n, splitter, NULL);
|
|
wxWindow *win = wxDynamicCast(created, wxWindow);
|
|
if (win1 == NULL)
|
|
{
|
|
win1 = win;
|
|
}
|
|
else
|
|
{
|
|
win2 = win;
|
|
break;
|
|
}
|
|
}
|
|
n = n->GetNext();
|
|
}
|
|
|
|
if (win1 == NULL)
|
|
ReportError("wxSplitterWindow node must contain at least one window");
|
|
|
|
bool horizontal = (GetParamValue(wxT("orientation")) != wxT("vertical"));
|
|
if (win1 && win2)
|
|
{
|
|
if (horizontal)
|
|
splitter->SplitHorizontally(win1, win2, sashpos);
|
|
else
|
|
splitter->SplitVertically(win1, win2, sashpos);
|
|
}
|
|
else
|
|
{
|
|
splitter->Initialize(win1);
|
|
}
|
|
|
|
return splitter;
|
|
}
|
|
|
|
bool wxSplitterWindowXmlHandler::CanHandle(wxXmlNode *node)
|
|
{
|
|
return IsOfClass(node, wxT("wxSplitterWindow"));
|
|
}
|
|
|
|
#endif // wxUSE_XRC && wxUSE_SPLITTER
|