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"))
|
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")),
|
m_combobox->Append(GetText(wxT("text")),
|
||||||
GetBitmap(wxT("bitmap")));
|
GetBitmap(wxT("bitmap")));
|
||||||
|
@@ -88,7 +88,13 @@ wxObject *wxMenuXmlHandler::DoCreateResource()
|
|||||||
kind = wxITEM_RADIO;
|
kind = wxITEM_RADIO;
|
||||||
if (GetBool(wxT("checkable")))
|
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;
|
kind = wxITEM_CHECK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -179,7 +179,12 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem()
|
|||||||
|
|
||||||
wxObject* wxSizerXmlHandler::Handle_spacer()
|
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();
|
wxSizerItem* sitem = MakeSizerItem();
|
||||||
SetSizerItemAttributes(sitem);
|
SetSizerItemAttributes(sitem);
|
||||||
@@ -195,10 +200,13 @@ wxObject* wxSizerXmlHandler::Handle_sizer()
|
|||||||
|
|
||||||
wxXmlNode *parentNode = m_node->GetParent();
|
wxXmlNode *parentNode = m_node->GetParent();
|
||||||
|
|
||||||
wxCHECK_MSG(m_parentSizer != NULL ||
|
if ( !m_parentSizer &&
|
||||||
(parentNode && parentNode->GetType() == wxXML_ELEMENT_NODE &&
|
(!parentNode || parentNode->GetType() != wxXML_ELEMENT_NODE ||
|
||||||
m_parentAsWindow), NULL,
|
!m_parentAsWindow) )
|
||||||
wxT("Sizer must have a window parent node"));
|
{
|
||||||
|
wxLogError(_("XRC syntax error: sizer must have a window parent."));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_class == wxT("wxBoxSizer"))
|
if (m_class == wxT("wxBoxSizer"))
|
||||||
sizer = Handle_wxBoxSizer();
|
sizer = Handle_wxBoxSizer();
|
||||||
|
@@ -53,7 +53,12 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
|
|||||||
{
|
{
|
||||||
if (m_class == wxT("tool"))
|
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;
|
wxItemKind kind = wxITEM_NORMAL;
|
||||||
if (GetBool(wxT("radio")))
|
if (GetBool(wxT("radio")))
|
||||||
@@ -61,8 +66,13 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
|
|||||||
|
|
||||||
if (GetBool(wxT("toggle")))
|
if (GetBool(wxT("toggle")))
|
||||||
{
|
{
|
||||||
wxASSERT_MSG( kind == wxITEM_NORMAL,
|
if ( kind != wxITEM_NORMAL )
|
||||||
_T("can't have both toggle and radio button at once") );
|
{
|
||||||
|
wxLogWarning(_("XRC syntax error: tool can't have both "
|
||||||
|
"\"radio\" and \"toggle\" properties, "
|
||||||
|
"ignoring the former."));
|
||||||
|
}
|
||||||
|
|
||||||
kind = wxITEM_CHECK;
|
kind = wxITEM_CHECK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,9 +81,12 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
|
|||||||
wxXmlNode * const nodeDropdown = GetParamNode("dropdown");
|
wxXmlNode * const nodeDropdown = GetParamNode("dropdown");
|
||||||
if ( nodeDropdown )
|
if ( nodeDropdown )
|
||||||
{
|
{
|
||||||
wxASSERT_MSG( kind == wxITEM_NORMAL,
|
if ( kind != wxITEM_NORMAL )
|
||||||
"drop down button can't be a check/radio "
|
{
|
||||||
"button too" );
|
wxLogWarning(_("XRC syntax error: drop-down tool can't have "
|
||||||
|
"neither \"radio\" nor \"toggle\" properties, "
|
||||||
|
"ignoring them."));
|
||||||
|
}
|
||||||
|
|
||||||
kind = wxITEM_DROPDOWN;
|
kind = wxITEM_DROPDOWN;
|
||||||
|
|
||||||
@@ -85,10 +98,17 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
|
|||||||
{
|
{
|
||||||
wxObject *res = CreateResFromNode(nodeMenu, NULL);
|
wxObject *res = CreateResFromNode(nodeMenu, NULL);
|
||||||
menu = wxDynamicCast(res, wxMenu);
|
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(),
|
if ( nodeMenu->GetNext() )
|
||||||
"only single menu tag allowed inside dropdown" );
|
{
|
||||||
|
wxLogWarning(_("XRC syntax error: unexpected extra "
|
||||||
|
"contents under drop-down tool."));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,7 +135,12 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
|
|||||||
|
|
||||||
else if (m_class == wxT("separator"))
|
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();
|
m_toolbar->AddSeparator();
|
||||||
return m_toolbar; // must return non-NULL
|
return m_toolbar; // must return non-NULL
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user