changed wxXML to XRC, wx/xml/*.h->wx/xrc/*.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10490 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
129
contrib/src/xrc/xh_toolb.cpp
Normal file
129
contrib/src/xrc/xh_toolb.cpp
Normal file
@@ -0,0 +1,129 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: xh_toolb.cpp
|
||||
// Purpose: XML resource for wxBoxSizer
|
||||
// Author: Vaclav Slavik
|
||||
// Created: 2000/08/11
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) 2000 Vaclav Slavik
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "xh_toolb.h"
|
||||
#endif
|
||||
|
||||
// For compilers that support precompilation, includes "wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#include "wx/xrc/xh_toolb.h"
|
||||
#include "wx/toolbar.h"
|
||||
|
||||
|
||||
#if wxUSE_TOOLBAR
|
||||
|
||||
wxToolBarXmlHandler::wxToolBarXmlHandler()
|
||||
: wxXmlResourceHandler(), m_isInside(FALSE), m_toolbar(NULL)
|
||||
{
|
||||
ADD_STYLE(wxTB_FLAT);
|
||||
ADD_STYLE(wxTB_DOCKABLE);
|
||||
ADD_STYLE(wxTB_VERTICAL);
|
||||
ADD_STYLE(wxTB_HORIZONTAL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
wxObject *wxToolBarXmlHandler::DoCreateResource()
|
||||
{
|
||||
if (m_class == wxT("tool"))
|
||||
{
|
||||
wxCHECK_MSG(m_toolbar, NULL, wxT("Incorrect syntax of XML resource: tool not within a toolbar!"));
|
||||
m_toolbar->AddTool(GetID(),
|
||||
GetBitmap(wxT("bitmap")),
|
||||
GetBitmap(wxT("bitmap2")),
|
||||
GetBool(wxT("toggle")),
|
||||
GetPosition().x,
|
||||
GetPosition().y,
|
||||
NULL,
|
||||
GetText(wxT("tooltip")),
|
||||
GetText(wxT("longhelp")));
|
||||
return m_toolbar; // must return non-NULL
|
||||
}
|
||||
|
||||
else if (m_class == wxT("separator"))
|
||||
{
|
||||
wxCHECK_MSG(m_toolbar, NULL, wxT("Incorrect syntax of XML resource: separator not within a toolbar!"));
|
||||
m_toolbar->AddSeparator();
|
||||
return m_toolbar; // must return non-NULL
|
||||
}
|
||||
|
||||
else /*<object class="wxToolBar">*/
|
||||
{
|
||||
int style = GetStyle(wxT("style"), wxNO_BORDER | wxTB_HORIZONTAL);
|
||||
#ifdef __WXMSW__
|
||||
if (!(style & wxNO_BORDER)) style |= wxNO_BORDER;
|
||||
#endif
|
||||
wxToolBar *toolbar = new wxToolBar(m_parentAsWindow,
|
||||
GetID(),
|
||||
GetPosition(),
|
||||
GetSize(),
|
||||
style,
|
||||
GetName());
|
||||
|
||||
wxSize bmpsize = GetSize(wxT("bitmapsize"));
|
||||
if (!(bmpsize == wxDefaultSize))
|
||||
toolbar->SetToolBitmapSize(bmpsize);
|
||||
wxSize margins = GetSize(wxT("margins"));
|
||||
if (!(margins == wxDefaultSize))
|
||||
toolbar->SetMargins(margins.x, margins.y);
|
||||
long packing = GetLong(wxT("packing"), -1);
|
||||
if (packing != -1)
|
||||
toolbar->SetToolPacking(packing);
|
||||
long separation = GetLong(wxT("separation"), -1);
|
||||
if (separation != -1)
|
||||
toolbar->SetToolSeparation(separation);
|
||||
|
||||
wxXmlNode *children_node = GetParamNode(wxT("object"));
|
||||
if (children_node == NULL) return toolbar;
|
||||
|
||||
m_isInside = TRUE;
|
||||
m_toolbar = toolbar;
|
||||
|
||||
wxXmlNode *n = children_node;
|
||||
|
||||
while (n)
|
||||
{
|
||||
if (n->GetType() == wxXML_ELEMENT_NODE &&
|
||||
n->GetName() == wxT("object"))
|
||||
{
|
||||
wxObject *created = CreateResFromNode(n, toolbar, NULL);
|
||||
wxControl *control = wxDynamicCast(created, wxControl);
|
||||
if (IsOfClass(n, wxT("tool")) &&
|
||||
IsOfClass(n, wxT("separator")) &&
|
||||
control != NULL)
|
||||
toolbar->AddControl(control);
|
||||
}
|
||||
n = n->GetNext();
|
||||
}
|
||||
|
||||
m_isInside = FALSE;
|
||||
m_toolbar = NULL;
|
||||
|
||||
toolbar->Realize();
|
||||
return toolbar;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool wxToolBarXmlHandler::CanHandle(wxXmlNode *node)
|
||||
{
|
||||
return ((!m_isInside && IsOfClass(node, wxT("wxToolBar"))) ||
|
||||
(m_isInside && IsOfClass(node, wxT("tool"))) ||
|
||||
(m_isInside && IsOfClass(node, wxT("separator"))));
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user