X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4d073429a06c885db6440b79d754d8316d847223..822e690b221486b63895b5f14a7fbee2bc966fe5:/contrib/src/xrc/xh_statbar.cpp diff --git a/contrib/src/xrc/xh_statbar.cpp b/contrib/src/xrc/xh_statbar.cpp index a31db982a4..ec4eefc616 100644 --- a/contrib/src/xrc/xh_statbar.cpp +++ b/contrib/src/xrc/xh_statbar.cpp @@ -21,6 +21,7 @@ #include "wx/frame.h" #include "wx/string.h" +#include "wx/log.h" #if wxUSE_STATUSBAR @@ -47,8 +48,9 @@ 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]; @@ -61,6 +63,32 @@ wxObject *wxStatusBarXmlHandler::DoCreateResource() 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) {