]> git.saurik.com Git - wxWidgets.git/commitdiff
replace asserts in XRC code with wxLogError/Warning() calls as XRC can come from...
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 2 Dec 2008 18:23:22 +0000 (18:23 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 2 Dec 2008 18:23:22 +0000 (18:23 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57074 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/xrc/xh_bmpcbox.cpp
src/xrc/xh_menu.cpp
src/xrc/xh_sizer.cpp
src/xrc/xh_toolb.cpp

index 138d2ee58b8e32b73c27e0ca13ecbb5abb0a04cb..87c4c20e194b20beb2c34895f233166bb7b04fb1 100644 (file)
@@ -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")));
index c278e30691ea9909bbab6a941abcfb33c4d2c3f1..f836539c69c2230f7dc555d84fbe134edd9a0d31 100644 (file)
@@ -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;
             }
 
index 8b86cce220a4fed49b3e55147c0dbd32b3a8d114..ea64786b64add418d833c093d8d3fc791184b6b7 100644 (file)
@@ -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();
index 0fa523baa0ffac9ef7b9f30bdc9106f3c5694d3b..fe7a6aa01a84d919f51e5c0a908805a7740924c5 100644 (file)
@@ -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" );
-
-                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 +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
     }