X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f25881804583790351480098b50f4ce1b924e697..637988a4f6c4f178fec11b22ba809107ad809b5d:/src/xrc/xh_toolb.cpp

diff --git a/src/xrc/xh_toolb.cpp b/src/xrc/xh_toolb.cpp
index 526a3a9377..b35ee00b14 100644
--- a/src/xrc/xh_toolb.cpp
+++ b/src/xrc/xh_toolb.cpp
@@ -28,28 +28,54 @@
 wxToolBarXmlHandler::wxToolBarXmlHandler() 
 : wxXmlResourceHandler(), m_isInside(FALSE), m_toolbar(NULL)
 {
-    ADD_STYLE(wxTB_FLAT);
-    ADD_STYLE(wxTB_DOCKABLE);
-    ADD_STYLE(wxTB_VERTICAL);
-    ADD_STYLE(wxTB_HORIZONTAL);
+    XRC_ADD_STYLE(wxTB_FLAT);
+    XRC_ADD_STYLE(wxTB_DOCKABLE);
+    XRC_ADD_STYLE(wxTB_VERTICAL);
+    XRC_ADD_STYLE(wxTB_HORIZONTAL);
+    XRC_ADD_STYLE(wxTB_3DBUTTONS);
+    XRC_ADD_STYLE(wxTB_TEXT);
+    XRC_ADD_STYLE(wxTB_NOICONS);
+    XRC_ADD_STYLE(wxTB_NODIVIDER);
+    XRC_ADD_STYLE(wxTB_NOALIGN);
 }
 
-
-
 wxObject *wxToolBarXmlHandler::DoCreateResource()
 { 
     if (m_class == wxT("tool"))
     {
         wxCHECK_MSG(m_toolbar, NULL, wxT("Incorrect syntax of XRC resource: tool not within a toolbar!"));
-        m_toolbar->AddTool(GetID(),
-                           GetBitmap(wxT("bitmap")),
-                           GetBitmap(wxT("bitmap2")),
-                           GetBool(wxT("toggle")),
-                           GetPosition().x,
-                           GetPosition().y,
-                           NULL,
-                           GetText(wxT("tooltip")),
-                           GetText(wxT("longhelp")));
+        
+        if (GetPosition() != wxDefaultPosition)
+        {
+            m_toolbar->AddTool(GetID(),
+                               GetBitmap(wxT("bitmap"), wxART_TOOLBAR),
+                               GetBitmap(wxT("bitmap2"), wxART_TOOLBAR),
+                               GetBool(wxT("toggle")),
+                               GetPosition().x,
+                               GetPosition().y,
+                               NULL,
+                               GetText(wxT("tooltip")),
+                               GetText(wxT("longhelp")));
+        }
+        else
+        {        
+            wxItemKind kind = wxITEM_NORMAL;
+            if (GetBool(wxT("radio")))
+                kind = wxITEM_RADIO;
+            if (GetBool(wxT("toggle")))
+            {
+                wxASSERT_MSG( kind == wxITEM_NORMAL,
+                              _T("can't have both toggleable and radion button at once") );
+                kind = wxITEM_CHECK;
+            }        
+            m_toolbar->AddTool(GetID(),
+                               GetText(wxT("label")),
+                               GetBitmap(wxT("bitmap"), wxART_TOOLBAR),
+                               GetBitmap(wxT("bitmap2"), wxART_TOOLBAR),
+                               kind,
+                               GetText(wxT("tooltip")),
+                               GetText(wxT("longhelp")));
+        }
         return m_toolbar; // must return non-NULL
     }
     
@@ -67,10 +93,7 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
         if (!(style & wxNO_BORDER)) style |= wxNO_BORDER;
 #endif
 
-        wxToolBar *toolbar = wxStaticCast(m_instance, wxToolBar);
- 
-        if ( !toolbar )
-            toolbar = new wxToolBar;
+        XRC_MAKE_INSTANCE(toolbar, wxToolBar)
  
         toolbar->Create(m_parentAsWindow,
                          GetID(),
@@ -135,8 +158,6 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
     }
 }
 
-
-
 bool wxToolBarXmlHandler::CanHandle(wxXmlNode *node)
 {
     return ((!m_isInside && IsOfClass(node, wxT("wxToolBar"))) ||