// Purpose: XRC resource for wxStatusBar
// Author: Brian Ravnsgaard Riis
// Created: 2004/01/21
-// RCS-ID:
+// RCS-ID: $Id$
// Copyright: (c) 2004 Brian Ravnsgaard Riis
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
-#pragma implementation "xh_statbar.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#pragma hdrstop
#endif
+#if wxUSE_XRC && wxUSE_STATUSBAR
+
#include "wx/frame.h"
#include "wx/string.h"
-
-#if wxUSE_STATUSBAR
+#include "wx/log.h"
#include "wx/xrc/xh_statbar.h"
#include "wx/statusbr.h"
IMPLEMENT_DYNAMIC_CLASS(wxStatusBarXmlHandler, wxXmlResourceHandler)
-wxStatusBarXmlHandler::wxStatusBarXmlHandler() :
+wxStatusBarXmlHandler::wxStatusBarXmlHandler() :
wxXmlResourceHandler()
{
XRC_ADD_STYLE(wxST_SIZEGRIP);
int fields = GetLong(wxT("fields"), 1);
wxString widths = GetParamValue(wxT("widths"));
+ wxString styles = GetParamValue(wxT("styles"));
- if(fields > 1)
+ if (fields > 1 && !widths.IsEmpty())
{
int *width = new int[fields];
-
- for (unsigned int i = 0; i < fields; ++i)
+
+ for (int i = 0; i < fields; ++i)
{
width[i] = wxAtoi(widths.BeforeFirst(wxT(',')));
if(widths.Find(wxT(',')))
statbar->SetFieldsCount(fields, width);
delete[] width;
}
+ else
+ statbar->SetFieldsCount(fields);
+
+ if (!styles.IsEmpty())
+ {
+ 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;
+
+ if (!first.IsEmpty())
+ wxLogError(wxT("Error in resource, unknown statusbar field style: ") + first);
+ if(styles.Find(wxT(',')))
+ styles.Remove(0, styles.Find(wxT(',')) + 1);
+ }
+ statbar->SetStatusStyles(fields, style);
+ delete [] style;
+ }
if (m_parentAsWindow)
{
return IsOfClass(node, wxT("wxStatusBar"));
}
-#endif
+#endif // wxUSE_XRC && wxUSE_STATUSBAR