X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/073e104114531fdfc3e1ea01d51b2c1048f78b74..e733c4ce1e24cf7e4b0b0d8362fc59aaa7a7641c:/src/xrc/xh_toolb.cpp?ds=sidebyside diff --git a/src/xrc/xh_toolb.cpp b/src/xrc/xh_toolb.cpp index fc0c19c7b9..cef30a1906 100644 --- a/src/xrc/xh_toolb.cpp +++ b/src/xrc/xh_toolb.cpp @@ -3,7 +3,6 @@ // Purpose: XRC resource for wxToolBar // Author: Vaclav Slavik // Created: 2000/08/11 -// RCS-ID: $Id$ // Copyright: (c) 2000 Vaclav Slavik // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -26,6 +25,8 @@ #include "wx/toolbar.h" #endif +#include "wx/xml/xml.h" + IMPLEMENT_DYNAMIC_CLASS(wxToolBarXmlHandler, wxXmlResourceHandler) wxToolBarXmlHandler::wxToolBarXmlHandler() @@ -78,6 +79,7 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() kind = wxITEM_CHECK; } + #if wxUSE_MENUS // check whether we have dropdown tag inside wxMenu *menu = NULL; // menu for drop down items @@ -137,22 +139,44 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() if ( GetBool(wxT("disabled")) ) m_toolbar->EnableTool(GetID(), false); + + if ( GetBool(wxS("checked")) ) + { + if ( kind == wxITEM_NORMAL ) + { + ReportParamError + ( + "checked", + "only nor tools can be checked" + ); + } + else + { + m_toolbar->ToggleTool(GetID(), true); + } + } + #if wxUSE_MENUS if ( menu ) tool->SetDropdownMenu(menu); #endif - + return m_toolbar; // must return non-NULL } - else if (m_class == wxT("separator")) + else if (m_class == wxT("separator") || m_class == wxT("space")) { if ( !m_toolbar ) { - ReportError("separator only allowed inside wxToolBar"); + ReportError("separators only allowed inside wxToolBar"); return NULL; } - m_toolbar->AddSeparator(); + + if ( m_class == wxT("separator") ) + m_toolbar->AddSeparator(); + else + m_toolbar->AddStretchableSpace(); + return m_toolbar; // must return non-NULL } @@ -206,6 +230,7 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() wxControl *control = wxDynamicCast(created, wxControl); if (!IsOfClass(n, wxT("tool")) && !IsOfClass(n, wxT("separator")) && + !IsOfClass(n, wxT("space")) && control != NULL) toolbar->AddControl(control); } @@ -215,8 +240,6 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() m_isInside = false; m_toolbar = NULL; - toolbar->Realize(); - if (m_parentAsWindow && !GetBool(wxT("dontattachtoframe"))) { wxFrame *parentFrame = wxDynamicCast(m_parent, wxFrame); @@ -224,6 +247,8 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() parentFrame->SetToolBar(toolbar); } + toolbar->Realize(); + return toolbar; } } @@ -232,6 +257,7 @@ bool wxToolBarXmlHandler::CanHandle(wxXmlNode *node) { return ((!m_isInside && IsOfClass(node, wxT("wxToolBar"))) || (m_isInside && IsOfClass(node, wxT("tool"))) || + (m_isInside && IsOfClass(node, wxT("space"))) || (m_isInside && IsOfClass(node, wxT("separator")))); }