Files
wxWidgets/src/xrc/xh_statbar.cpp
Dimitri Schoolwerth 8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00

129 lines
3.4 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/xrc/xh_statbar.cpp
// Purpose: XRC resource for wxStatusBar
// Author: Brian Ravnsgaard Riis
// Created: 2004/01/21
// Copyright: (c) 2004 Brian Ravnsgaard Riis
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#if wxUSE_XRC && wxUSE_STATUSBAR
#include "wx/xrc/xh_statbar.h"
#ifndef WX_PRECOMP
#include "wx/string.h"
#include "wx/log.h"
#include "wx/frame.h"
#include "wx/statusbr.h"
#endif
wxIMPLEMENT_DYNAMIC_CLASS(wxStatusBarXmlHandler, wxXmlResourceHandler);
wxStatusBarXmlHandler::wxStatusBarXmlHandler()
:wxXmlResourceHandler()
{
XRC_ADD_STYLE(wxSTB_SIZEGRIP);
XRC_ADD_STYLE(wxSTB_SHOW_TIPS);
XRC_ADD_STYLE(wxSTB_ELLIPSIZE_START);
XRC_ADD_STYLE(wxSTB_ELLIPSIZE_MIDDLE);
XRC_ADD_STYLE(wxSTB_ELLIPSIZE_END);
XRC_ADD_STYLE(wxSTB_DEFAULT_STYLE);
// compat style name:
XRC_ADD_STYLE(wxST_SIZEGRIP);
AddWindowStyles();
}
wxObject *wxStatusBarXmlHandler::DoCreateResource()
{
XRC_MAKE_INSTANCE(statbar, wxStatusBar)
statbar->Create(m_parentAsWindow,
GetID(),
GetStyle(),
GetName());
int fields = GetLong(wxT("fields"), 1);
wxString widths = GetParamValue(wxT("widths"));
wxString styles = GetParamValue(wxT("styles"));
if (fields > 1 && !widths.IsEmpty())
{
int *width = new int[fields];
for (int i = 0; i < fields; ++i)
{
width[i] = wxAtoi(widths.BeforeFirst(wxT(',')));
if(widths.Find(wxT(',')))
widths.Remove(0, widths.Find(wxT(',')) + 1);
}
statbar->SetFieldsCount(fields, width);
delete[] width;
}
else
statbar->SetFieldsCount(fields);
if (!styles.empty())
{
int *style = new int[fields];
for (int i = 0; i < fields; ++i)
{
style[i] = wxSB_NORMAL;
wxString first = styles.BeforeFirst(wxT(','));
if (first == wxT("wxSB_NORMAL"))
style[i] = wxSB_NORMAL;
else if (first == wxT("wxSB_FLAT"))
style[i] = wxSB_FLAT;
else if (first == wxT("wxSB_RAISED"))
style[i] = wxSB_RAISED;
else if (first == wxT("wxSB_SUNKEN"))
style[i] = wxSB_SUNKEN;
else if (!first.empty())
{
ReportParamError
(
"styles",
wxString::Format
(
"unknown status bar field style \"%s\"",
first
)
);
}
if(styles.Find(wxT(',')))
styles.Remove(0, styles.Find(wxT(',')) + 1);
}
statbar->SetStatusStyles(fields, style);
delete [] style;
}
CreateChildren(statbar);
if (m_parentAsWindow)
{
wxFrame *parentFrame = wxDynamicCast(m_parent, wxFrame);
if (parentFrame)
parentFrame->SetStatusBar(statbar);
}
return statbar;
}
bool wxStatusBarXmlHandler::CanHandle(wxXmlNode *node)
{
return IsOfClass(node, wxT("wxStatusBar"));
}
#endif // wxUSE_XRC && wxUSE_STATUSBAR