]> git.saurik.com Git - wxWidgets.git/blobdiff - src/xrc/xh_toolb.cpp
new file added
[wxWidgets.git] / src / xrc / xh_toolb.cpp
index fc0c19c7b9cac829d6b5eaa2751938c5667d1fc3..c6e75a361554b42b62197ee08c4ecbc28cf2ecda 100644 (file)
@@ -78,6 +78,7 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
 
             kind = wxITEM_CHECK;
         }
+
 #if wxUSE_MENUS
         // check whether we have dropdown tag inside
         wxMenu *menu = NULL; // menu for drop down items
@@ -137,22 +138,44 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
 
         if ( GetBool(wxT("disabled")) )
             m_toolbar->EnableTool(GetID(), false);
+
+        if ( GetBool(wxS("checked")) )
+        {
+            if ( kind == wxITEM_NORMAL )
+            {
+                ReportParamError
+                (
+                    "checked",
+                    "only <radio> nor <toggle> tools can be checked"
+                );
+            }
+            else
+            {
+                m_toolbar->ToggleTool(GetID(), true);
+            }
+        }
+
 #if wxUSE_MENUS
         if ( menu )
             tool->SetDropdownMenu(menu);
 #endif
-        
+
         return m_toolbar; // must return non-NULL
     }
 
-    else if (m_class == wxT("separator"))
+    else if (m_class == wxT("separator") || m_class == wxT("space"))
     {
         if ( !m_toolbar )
         {
-            ReportError("separator only allowed inside wxToolBar");
+            ReportError("separators only allowed inside wxToolBar");
             return NULL;
         }
-        m_toolbar->AddSeparator();
+
+        if ( m_class == wxT("separator") )
+            m_toolbar->AddSeparator();
+        else
+            m_toolbar->AddStretchableSpace();
+
         return m_toolbar; // must return non-NULL
     }
 
@@ -206,6 +229,7 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
                 wxControl *control = wxDynamicCast(created, wxControl);
                 if (!IsOfClass(n, wxT("tool")) &&
                     !IsOfClass(n, wxT("separator")) &&
+                    !IsOfClass(n, wxT("space")) &&
                     control != NULL)
                     toolbar->AddControl(control);
             }
@@ -232,6 +256,7 @@ bool wxToolBarXmlHandler::CanHandle(wxXmlNode *node)
 {
     return ((!m_isInside && IsOfClass(node, wxT("wxToolBar"))) ||
             (m_isInside && IsOfClass(node, wxT("tool"))) ||
+            (m_isInside && IsOfClass(node, wxT("space"))) ||
             (m_isInside && IsOfClass(node, wxT("separator"))));
 }