X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e2517f176b1739431be7fb21d120226e2311ded2..adc27ddcb536d711f2940f0d0db258ae5e61eb6d:/src/xrc/xh_toolb.cpp diff --git a/src/xrc/xh_toolb.cpp b/src/xrc/xh_toolb.cpp index 0fa523baa0..b88c400d3f 100644 --- a/src/xrc/xh_toolb.cpp +++ b/src/xrc/xh_toolb.cpp @@ -21,6 +21,8 @@ #ifndef WX_PRECOMP #include "wx/frame.h" + #include "wx/log.h" + #include "wx/menu.h" #include "wx/toolbar.h" #endif @@ -53,7 +55,11 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() { if (m_class == wxT("tool")) { - wxCHECK_MSG(m_toolbar, NULL, wxT("Incorrect syntax of XRC resource: tool not within a toolbar!")); + if ( !m_toolbar ) + { + ReportError("tool only allowed inside a wxToolBar"); + return NULL; + } wxItemKind kind = wxITEM_NORMAL; if (GetBool(wxT("radio"))) @@ -61,8 +67,15 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() if (GetBool(wxT("toggle"))) { - wxASSERT_MSG( kind == wxITEM_NORMAL, - _T("can't have both toggle and radio button at once") ); + if ( kind != wxITEM_NORMAL ) + { + ReportParamError + ( + "toggle", + "tool can't have both and properties" + ); + } + kind = wxITEM_CHECK; } @@ -71,9 +84,14 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() wxXmlNode * const nodeDropdown = GetParamNode("dropdown"); if ( nodeDropdown ) { - wxASSERT_MSG( kind == wxITEM_NORMAL, - "drop down button can't be a check/radio " - "button too" ); + if ( kind != wxITEM_NORMAL ) + { + ReportParamError + ( + "dropdown", + "drop-down tool can't have neither nor properties" + ); + } kind = wxITEM_DROPDOWN; @@ -85,24 +103,37 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() { wxObject *res = CreateResFromNode(nodeMenu, NULL); menu = wxDynamicCast(res, wxMenu); - wxASSERT_MSG( menu, "invalid drop down object contents" ); - - wxASSERT_MSG( !nodeMenu->GetNext(), - "only single menu tag allowed inside dropdown" ); + if ( !menu ) + { + ReportError + ( + nodeMenu, + "drop-down tool contents can only be a wxMenu" + ); + } + + if ( nodeMenu->GetNext() ) + { + ReportError + ( + nodeMenu->GetNext(), + "unexpected extra contents under drop-down tool" + ); + } } } - wxToolBarToolBase * const - tool = m_toolbar->AddTool - ( - GetID(), - GetText(wxT("label")), - GetBitmap(wxT("bitmap"), wxART_TOOLBAR), - GetBitmap(wxT("bitmap2"), wxART_TOOLBAR), - kind, - GetText(wxT("tooltip")), - GetText(wxT("longhelp")) - ); + wxToolBarToolBase * const tool = + m_toolbar->AddTool + ( + GetID(), + GetText(wxT("label")), + GetBitmap(wxT("bitmap"), wxART_TOOLBAR, m_toolSize), + GetBitmap(wxT("bitmap2"), wxART_TOOLBAR, m_toolSize), + kind, + GetText(wxT("tooltip")), + GetText(wxT("longhelp")) + ); if ( GetBool(wxT("disabled")) ) m_toolbar->EnableTool(GetID(), false); @@ -115,7 +146,11 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() else if (m_class == wxT("separator")) { - wxCHECK_MSG(m_toolbar, NULL, wxT("Incorrect syntax of XRC resource: separator not within a toolbar!")); + if ( !m_toolbar ) + { + ReportError("separator only allowed inside wxToolBar"); + return NULL; + } m_toolbar->AddSeparator(); return m_toolbar; // must return non-NULL } @@ -137,9 +172,9 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() GetName()); SetupWindow(toolbar); - wxSize bmpsize = GetSize(wxT("bitmapsize")); - if (!(bmpsize == wxDefaultSize)) - toolbar->SetToolBitmapSize(bmpsize); + m_toolSize = GetSize(wxT("bitmapsize")); + if (!(m_toolSize == wxDefaultSize)) + toolbar->SetToolBitmapSize(m_toolSize); wxSize margins = GetSize(wxT("margins")); if (!(margins == wxDefaultSize)) toolbar->SetMargins(margins.x, margins.y);