replace asserts in XRC code with wxLogError/Warning() calls as XRC can come from an external source and doesn't necessarily indicate a programming error
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57074 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -41,7 +41,12 @@ wxObject *wxBitmapComboBoxXmlHandler::DoCreateResource()
|
||||
{
|
||||
if (m_class == wxT("ownerdrawnitem"))
|
||||
{
|
||||
wxCHECK_MSG(m_combobox, NULL, wxT("Incorrect syntax of XRC resource: ownerdrawnitem not within a bitmapcombobox!"));
|
||||
if ( !m_combobox )
|
||||
{
|
||||
wxLogError(_("XRC syntex error: ownerdrawnitem only allowed within "
|
||||
" a bitmapcombobox!"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
m_combobox->Append(GetText(wxT("text")),
|
||||
GetBitmap(wxT("bitmap")));
|
||||
|
@@ -88,7 +88,13 @@ wxObject *wxMenuXmlHandler::DoCreateResource()
|
||||
kind = wxITEM_RADIO;
|
||||
if (GetBool(wxT("checkable")))
|
||||
{
|
||||
wxASSERT_MSG( kind == wxITEM_NORMAL, _T("can't have both checkable and radio button at once") );
|
||||
if ( kind != wxITEM_NORMAL )
|
||||
{
|
||||
wxLogWarning(_("XRC syntax error: a menu item can't have "
|
||||
"both \"radio\" and \"checkable\" "
|
||||
"properties, ignoring the former."));
|
||||
}
|
||||
|
||||
kind = wxITEM_CHECK;
|
||||
}
|
||||
|
||||
|
@@ -179,7 +179,12 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem()
|
||||
|
||||
wxObject* wxSizerXmlHandler::Handle_spacer()
|
||||
{
|
||||
wxCHECK_MSG(m_parentSizer, NULL, wxT("Incorrect syntax of XRC resource: spacer not within sizer!"));
|
||||
if ( !m_parentSizer )
|
||||
{
|
||||
wxLogError(_("XRC syntax error: \"spacer\" only allowed inside a "
|
||||
"sizer"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
wxSizerItem* sitem = MakeSizerItem();
|
||||
SetSizerItemAttributes(sitem);
|
||||
@@ -195,10 +200,13 @@ wxObject* wxSizerXmlHandler::Handle_sizer()
|
||||
|
||||
wxXmlNode *parentNode = m_node->GetParent();
|
||||
|
||||
wxCHECK_MSG(m_parentSizer != NULL ||
|
||||
(parentNode && parentNode->GetType() == wxXML_ELEMENT_NODE &&
|
||||
m_parentAsWindow), NULL,
|
||||
wxT("Sizer must have a window parent node"));
|
||||
if ( !m_parentSizer &&
|
||||
(!parentNode || parentNode->GetType() != wxXML_ELEMENT_NODE ||
|
||||
!m_parentAsWindow) )
|
||||
{
|
||||
wxLogError(_("XRC syntax error: sizer must have a window parent."));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (m_class == wxT("wxBoxSizer"))
|
||||
sizer = Handle_wxBoxSizer();
|
||||
|
@@ -53,7 +53,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 +66,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 +81,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 +98,17 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
|
||||
{
|
||||
wxObject *res = CreateResFromNode(nodeMenu, NULL);
|
||||
menu = wxDynamicCast(res, wxMenu);
|
||||
wxASSERT_MSG( menu, "invalid drop down object contents" );
|
||||
if ( !menu )
|
||||
{
|
||||
wxLogError(_("XRC syntax error: invalid drop-down tool "
|
||||
"contents (expected a menu)."));
|
||||
}
|
||||
|
||||
wxASSERT_MSG( !nodeMenu->GetNext(),
|
||||
"only single menu tag allowed inside dropdown" );
|
||||
if ( nodeMenu->GetNext() )
|
||||
{
|
||||
wxLogWarning(_("XRC syntax error: unexpected extra "
|
||||
"contents under drop-down tool."));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +135,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
|
||||
}
|
||||
|
Reference in New Issue
Block a user