From b0fb0f3c71c527b5c5cb839355c88766b6f8c888 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Fri, 23 Jan 2004 10:01:44 +0000 Subject: [PATCH] Applied patch [ 882493 ] Added XRC support for wxStatusBar By Brian Ravnsgaard Riis git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25337 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- contrib/build/xrc/xrc.bkl | 2 + contrib/include/wx/xrc/xh_all.h | 1 + contrib/include/wx/xrc/xh_statbar.h | 29 +++++++++++ contrib/src/xrc/xh_statbar.cpp | 79 +++++++++++++++++++++++++++++ contrib/src/xrc/xmlrsall.cpp | 3 ++ docs/changes.txt | 1 + docs/tech/tn0014.txt | 4 ++ include/wx/xrc/xh_all.h | 1 + include/wx/xrc/xh_statbar.h | 29 +++++++++++ src/xrc/xh_statbar.cpp | 79 +++++++++++++++++++++++++++++ src/xrc/xmlrsall.cpp | 3 ++ 11 files changed, 231 insertions(+) create mode 100644 contrib/include/wx/xrc/xh_statbar.h create mode 100644 contrib/src/xrc/xh_statbar.cpp create mode 100644 include/wx/xrc/xh_statbar.h create mode 100644 src/xrc/xh_statbar.cpp diff --git a/contrib/build/xrc/xrc.bkl b/contrib/build/xrc/xrc.bkl index 3a6f12564e..6a2022558f 100644 --- a/contrib/build/xrc/xrc.bkl +++ b/contrib/build/xrc/xrc.bkl @@ -35,6 +35,7 @@ xh_slidr.cpp xh_spin.cpp xh_split.cpp + xh_statbar.cpp xh_stbmp.cpp xh_stbox.cpp xh_stlin.cpp @@ -77,6 +78,7 @@ wx/xrc/xh_slidr.h wx/xrc/xh_spin.h wx/xrc/xh_split.h + wx/xrc/xh_statbar.h wx/xrc/xh_stbmp.h wx/xrc/xh_stbox.h wx/xrc/xh_stlin.h diff --git a/contrib/include/wx/xrc/xh_all.h b/contrib/include/wx/xrc/xh_all.h index 51ccbf3533..fc1d82c439 100644 --- a/contrib/include/wx/xrc/xh_all.h +++ b/contrib/include/wx/xrc/xh_all.h @@ -49,5 +49,6 @@ #include "wx/xrc/xh_scwin.h" #include "wx/xrc/xh_split.h" #include "wx/xrc/xh_wizrd.h" +#include "wx/xrc/xh_statbar.h" #endif // _WX_XMLRES_H_ diff --git a/contrib/include/wx/xrc/xh_statbar.h b/contrib/include/wx/xrc/xh_statbar.h new file mode 100644 index 0000000000..7e57e00d2f --- /dev/null +++ b/contrib/include/wx/xrc/xh_statbar.h @@ -0,0 +1,29 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: xh_statbar.h +// Purpose: XML resource handler for wxStatusBar +// Author: Brian Ravnsgaard Riis +// Created: 2004/01/21 +// RCS-ID: +// Copyright: (c) 2004 Brian Ravnsgaard Riis +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_XH_STATBAR_H_ +#define _WX_XH_STATBAR_H_ + +#if defined(__GNUG__) && !defined(__APPLE__) +#pragma interface "xh_statbar.h" +#endif + +#include "wx/xrc/xmlres.h" + +class WXXMLDLLEXPORT wxStatusBarXmlHandler : public wxXmlResourceHandler +{ + public: + wxStatusBarXmlHandler(); + virtual wxObject *DoCreateResource(); + virtual bool CanHandle(wxXmlNode *node); +}; + +#endif // _WX_XH_STATBAR_H_ + diff --git a/contrib/src/xrc/xh_statbar.cpp b/contrib/src/xrc/xh_statbar.cpp new file mode 100644 index 0000000000..d69735c63b --- /dev/null +++ b/contrib/src/xrc/xh_statbar.cpp @@ -0,0 +1,79 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: xh_statbar.cpp +// Purpose: XRC resource for wxStatusBar +// Author: Brian Ravnsgaard Riis +// Created: 2004/01/21 +// RCS-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" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#include "wx/frame.h" +#include "wx/string.h" + +#if wxUSE_STATUSBAR + +#include "wx/xrc/xh_statbar.h" +#include "wx/statusbr.h" + +wxStatusBarXmlHandler::wxStatusBarXmlHandler() : + wxXmlResourceHandler() +{ + 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")); + + if(fields > 1) + { + int *width = new int[fields]; + + for (unsigned 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; + } + + 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 + diff --git a/contrib/src/xrc/xmlrsall.cpp b/contrib/src/xrc/xmlrsall.cpp index 2749b9eb00..0b180c5cbf 100644 --- a/contrib/src/xrc/xmlrsall.cpp +++ b/contrib/src/xrc/xmlrsall.cpp @@ -99,4 +99,7 @@ void wxXmlResource::InitAllHandlers() #if wxUSE_WIZARDDLG AddHandler(new wxWizardXmlHandler); #endif +#if wxUSE_STATUSBAR + AddHandler(new wxStatusBarXmlHandler); +#endif } diff --git a/docs/changes.txt b/docs/changes.txt index 65bb4e65f4..7b0182d2c7 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -113,6 +113,7 @@ All (GUI): - fixed scrollbar problem in wxGrid (not showing scrollbars when sizing smaller) (Shane Harper) - dbbrowse demo fixed for Unicode (Wlodzimierz Skiba) +- added wxStatusBar support to XRC (Brian Ravnsgaard Riis) wxMSW: diff --git a/docs/tech/tn0014.txt b/docs/tech/tn0014.txt index c079024bbf..cf95ed05ab 100644 --- a/docs/tech/tn0014.txt +++ b/docs/tech/tn0014.txt @@ -323,6 +323,10 @@ and the splitter is created unsplitted. If there are two children, the splitter is created splitted, either horizontally or vertically depending on the value of "orientation" attribute. +wxStatusBar +----------- +fields Integer number of fields +widths Width1, Width2, Width3, ... wxToolBar --------- diff --git a/include/wx/xrc/xh_all.h b/include/wx/xrc/xh_all.h index 51ccbf3533..fc1d82c439 100644 --- a/include/wx/xrc/xh_all.h +++ b/include/wx/xrc/xh_all.h @@ -49,5 +49,6 @@ #include "wx/xrc/xh_scwin.h" #include "wx/xrc/xh_split.h" #include "wx/xrc/xh_wizrd.h" +#include "wx/xrc/xh_statbar.h" #endif // _WX_XMLRES_H_ diff --git a/include/wx/xrc/xh_statbar.h b/include/wx/xrc/xh_statbar.h new file mode 100644 index 0000000000..7e57e00d2f --- /dev/null +++ b/include/wx/xrc/xh_statbar.h @@ -0,0 +1,29 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: xh_statbar.h +// Purpose: XML resource handler for wxStatusBar +// Author: Brian Ravnsgaard Riis +// Created: 2004/01/21 +// RCS-ID: +// Copyright: (c) 2004 Brian Ravnsgaard Riis +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_XH_STATBAR_H_ +#define _WX_XH_STATBAR_H_ + +#if defined(__GNUG__) && !defined(__APPLE__) +#pragma interface "xh_statbar.h" +#endif + +#include "wx/xrc/xmlres.h" + +class WXXMLDLLEXPORT wxStatusBarXmlHandler : public wxXmlResourceHandler +{ + public: + wxStatusBarXmlHandler(); + virtual wxObject *DoCreateResource(); + virtual bool CanHandle(wxXmlNode *node); +}; + +#endif // _WX_XH_STATBAR_H_ + diff --git a/src/xrc/xh_statbar.cpp b/src/xrc/xh_statbar.cpp new file mode 100644 index 0000000000..d69735c63b --- /dev/null +++ b/src/xrc/xh_statbar.cpp @@ -0,0 +1,79 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: xh_statbar.cpp +// Purpose: XRC resource for wxStatusBar +// Author: Brian Ravnsgaard Riis +// Created: 2004/01/21 +// RCS-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" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#include "wx/frame.h" +#include "wx/string.h" + +#if wxUSE_STATUSBAR + +#include "wx/xrc/xh_statbar.h" +#include "wx/statusbr.h" + +wxStatusBarXmlHandler::wxStatusBarXmlHandler() : + wxXmlResourceHandler() +{ + 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")); + + if(fields > 1) + { + int *width = new int[fields]; + + for (unsigned 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; + } + + 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 + diff --git a/src/xrc/xmlrsall.cpp b/src/xrc/xmlrsall.cpp index 2749b9eb00..0b180c5cbf 100644 --- a/src/xrc/xmlrsall.cpp +++ b/src/xrc/xmlrsall.cpp @@ -99,4 +99,7 @@ void wxXmlResource::InitAllHandlers() #if wxUSE_WIZARDDLG AddHandler(new wxWizardXmlHandler); #endif +#if wxUSE_STATUSBAR + AddHandler(new wxStatusBarXmlHandler); +#endif } -- 2.45.2