X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b0fb0f3c71c527b5c5cb839355c88766b6f8c888..a43a9e5521440dbb28037646ed4a07125c8823a9:/src/xrc/xh_statbar.cpp?ds=sidebyside diff --git a/src/xrc/xh_statbar.cpp b/src/xrc/xh_statbar.cpp index d69735c63b..fbf25f189f 100644 --- a/src/xrc/xh_statbar.cpp +++ b/src/xrc/xh_statbar.cpp @@ -1,17 +1,13 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: xh_statbar.cpp +// Name: src/xrc/xh_statbar.cpp // 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" @@ -19,18 +15,32 @@ #pragma hdrstop #endif -#include "wx/frame.h" -#include "wx/string.h" - -#if wxUSE_STATUSBAR +#if wxUSE_XRC && wxUSE_STATUSBAR #include "wx/xrc/xh_statbar.h" -#include "wx/statusbr.h" -wxStatusBarXmlHandler::wxStatusBarXmlHandler() : - wxXmlResourceHandler() +#ifndef WX_PRECOMP + #include "wx/string.h" + #include "wx/log.h" + #include "wx/frame.h" + #include "wx/statusbr.h" +#endif + +IMPLEMENT_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(); } @@ -45,12 +55,13 @@ wxObject *wxStatusBarXmlHandler::DoCreateResource() 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(','))) @@ -59,6 +70,44 @@ wxObject *wxStatusBarXmlHandler::DoCreateResource() 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.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) { @@ -75,5 +124,4 @@ bool wxStatusBarXmlHandler::CanHandle(wxXmlNode *node) return IsOfClass(node, wxT("wxStatusBar")); } -#endif - +#endif // wxUSE_XRC && wxUSE_STATUSBAR