X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e2517f176b1739431be7fb21d120226e2311ded2..9968f7b4cd6752ead5744d4895ed392458d83abd:/src/xrc/xh_toolb.cpp diff --git a/src/xrc/xh_toolb.cpp b/src/xrc/xh_toolb.cpp index 0fa523baa0..b6f518d4af 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,12 @@ 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 ) + { + wxLogError(_("XRC syntax error: \"tool\" only allowed inside a " + "toolbar")); + return NULL; + } wxItemKind kind = wxITEM_NORMAL; if (GetBool(wxT("radio"))) @@ -61,8 +68,13 @@ 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 ) + { + wxLogWarning(_("XRC syntax error: tool can't have both " + "\"radio\" and \"toggle\" properties, " + "ignoring the former.")); + } + kind = wxITEM_CHECK; } @@ -71,9 +83,12 @@ 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 ) + { + wxLogWarning(_("XRC syntax error: drop-down tool can't have " + "neither \"radio\" nor \"toggle\" properties, " + "ignoring them.")); + } kind = wxITEM_DROPDOWN; @@ -85,10 +100,17 @@ 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 ) + { + wxLogError(_("XRC syntax error: invalid drop-down tool " + "contents (expected a menu).")); + } + + if ( nodeMenu->GetNext() ) + { + wxLogWarning(_("XRC syntax error: unexpected extra " + "contents under drop-down tool.")); + } } } @@ -115,7 +137,12 @@ 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 ) + { + wxLogError(_("XRC syntax error: \"separator\" only allowed inside a " + "toolbar")); + return NULL; + } m_toolbar->AddSeparator(); return m_toolbar; // must return non-NULL }