X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8a0681f9338345d0ef32b2ad809d49fd20861119..bf7d7ee7062f7f6028df40e43745235658e38b4d:/include/wx/tbarbase.h diff --git a/include/wx/tbarbase.h b/include/wx/tbarbase.h index c282777eaa..be2c52c70b 100644 --- a/include/wx/tbarbase.h +++ b/include/wx/tbarbase.h @@ -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_