]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/tbarbase.h
Trying to hide evidence of my negative programming skills...
[wxWidgets.git] / include / wx / tbarbase.h
index c282777eaa81b8794ba1a8c32cc5c8705932fede..be2c52c70bcba59e2ded025d3675284e40fc42f4 100644 (file)
@@ -22,6 +22,8 @@
 
 #include "wx/defs.h"
 
+#if wxUSE_TOOLBAR
+
 #include "wx/bitmap.h"
 #include "wx/list.h"
 #include "wx/control.h"
@@ -140,10 +142,14 @@ public:
 
     wxObject *GetClientData() const
     {
-        wxASSERT_MSG( m_toolStyle != wxTOOL_STYLE_CONTROL,
-                      _T("this toolbar tool doesn't have client data") );
-
-        return m_clientData;
+        if ( m_toolStyle == wxTOOL_STYLE_CONTROL )
+        {
+            return (wxObject*)m_control->GetClientData();
+        }
+        else
+        {
+            return m_clientData;
+        }
     }
 
     // modifiers: return TRUE if the state really changed
@@ -158,6 +164,18 @@ public:
     void SetBitmap1(const wxBitmap& bmp) { m_bitmap1 = bmp; }
     void SetBitmap2(const wxBitmap& bmp) { m_bitmap2 = bmp; }
 
+    void SetClientData(wxObject *clientData)
+    {
+        if ( m_toolStyle == wxTOOL_STYLE_CONTROL )
+        {
+            m_control->SetClientData(clientData);
+        }
+        else
+        {
+            m_clientData = clientData;
+        }
+    }
+
     // add tool to/remove it from a toolbar
     virtual void Detach() { m_tbar = (wxToolBarBase *)NULL; }
     virtual void Attach(wxToolBarBase *tbar) { m_tbar = tbar; }
@@ -190,7 +208,7 @@ protected:
 };
 
 // a list of toolbar tools
-WX_DECLARE_LIST(wxToolBarToolBase, wxToolBarToolsList);
+WX_DECLARE_EXPORTED_LIST(wxToolBarToolBase, wxToolBarToolsList);
 
 // ----------------------------------------------------------------------------
 // the base class for all toolbars
@@ -205,12 +223,22 @@ public:
     // toolbar construction
     // --------------------
 
+    // the most commonly used version of AddTool()
+    wxToolBarToolBase *AddTool(int id,
+                               const wxBitmap& bitmap,
+                               const wxString& shortHelpString = wxEmptyString,
+                               const wxString& longHelpString = wxEmptyString)
+    {
+        return AddTool(id, bitmap, wxNullBitmap, FALSE, NULL,
+                       shortHelpString, longHelpString);
+    }
+
     // If pushedBitmap is NULL, a reversed version of bitmap is created and
     // used as the pushed/toggled image. If toggle is TRUE, the button toggles
     // between the two states.
     wxToolBarToolBase *AddTool(int id,
                                const wxBitmap& bitmap,
-                               const wxBitmap& pushedBitmap = wxNullBitmap,
+                               const wxBitmap& pushedBitmap,
                                bool toggle = FALSE,
                                wxObject *clientData = NULL,
                                const wxString& shortHelpString = wxEmptyString,
@@ -284,7 +312,9 @@ public:
     // Set this to be togglable (or not)
     virtual void SetToggle(int id, bool toggle);
 
-    virtual wxObject *GetToolClientData(int index) const;
+    // set/get tools client data (not for controls)
+    virtual wxObject *GetToolClientData(int id) const;
+    virtual void SetToolClientData(int id, wxObject *clientData);
 
     // return TRUE if the tool is toggled
     virtual bool GetToolState(int id) const;
@@ -307,10 +337,13 @@ public:
     virtual void SetToolSeparation(int separation)
         { m_toolSeparation = separation; }
 
-    virtual wxSize GetToolMargins() { return wxSize(m_xMargin, m_yMargin); }
+    virtual wxSize GetToolMargins() { return GetMargins(); }
     virtual int GetToolPacking() { return m_toolPacking; }
     virtual int GetToolSeparation() { return m_toolSeparation; }
 
+    // for compatibility
+    wxSize GetMargins() const { return wxSize(m_xMargin, m_yMargin); }
+
     // toolbar geometry
     // ----------------
 
@@ -379,6 +412,9 @@ public:
     // Do the toolbar button updates (check for EVT_UPDATE_UI handlers)
     virtual void DoToolbarUpdates();
 
+    // don't want toolbars to accept the focus by tabbing to them
+    virtual bool AcceptsFocusFromKeyboard() const { return FALSE; }
+
 protected:
     // to implement in derived classes
     // -------------------------------
@@ -436,8 +472,11 @@ protected:
 
 private:
     DECLARE_EVENT_TABLE()
+    DECLARE_CLASS(wxToolBarBase)
 };
 
+#endif // wxUSE_TOOLBAR
+
 #endif
     // _WX_TBARBASE_H_