From 6fd5fa4fcc83bfc4be401e0d4e752f48ae0a38bf Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 17 Dec 1999 13:10:05 +0000 Subject: [PATCH] added wxToolBar::SetToolClientData git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5012 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/wx/toolbar.tex | 50 ++++++++++++++++++++++----------------- include/wx/tbarbase.h | 28 ++++++++++++++++++---- src/common/tbarbase.cpp | 9 +++++++ 3 files changed, 60 insertions(+), 27 deletions(-) diff --git a/docs/latex/wx/toolbar.tex b/docs/latex/wx/toolbar.tex index 39465088d1..97e8e580a8 100644 --- a/docs/latex/wx/toolbar.tex +++ b/docs/latex/wx/toolbar.tex @@ -566,6 +566,31 @@ change to take place, it will happen immediately. \helpref{DeleteTool}{wxtoolbardeletetool} +\membersection{wxToolBar::SetMargins}\label{wxtoolbarsetmargins} + +\func{void}{SetMargins}{\param{const wxSize\&}{ size}} + +\func{void}{SetMargins}{\param{int}{ x}, \param{int}{ y}} + +Set the values to be used as margins for the toolbar. + +\wxheading{Parameters} + +\docparam{size}{Margin size.} + +\docparam{x}{Left margin, right margin and inter-tool separation value.} + +\docparam{y}{Top margin, bottom margin and inter-tool separation value.} + +\wxheading{Remarks} + +This must be called before the tools are added if absolute positioning is to be used, and the +default (zero-size) margins are to be overridden. + +\wxheading{See also} + +\helpref{wxToolBar::GetMargins}{wxtoolbargetmargins}, \helpref{wxSize}{wxsize} + \membersection{wxToolBar::SetToolBitmapSize}\label{wxtoolbarsettoolbitmapsize} \func{void}{SetToolBitmapSize}{\param{const wxSize\&}{ size}} @@ -589,30 +614,11 @@ and not the eventual size of the tool button. \helpref{wxToolBar::GetToolBitmapSize}{wxtoolbargettoolbitmapsize},\rtfsp \helpref{wxToolBar::GetToolSize}{wxtoolbargettoolsize} -\membersection{wxToolBar::SetMargins}\label{wxtoolbarsetmargins} - -\func{void}{SetMargins}{\param{const wxSize\&}{ size}} - -\func{void}{SetMargins}{\param{int}{ x}, \param{int}{ y}} - -Set the values to be used as margins for the toolbar. - -\wxheading{Parameters} +\membersection{wxToolBar::SetToolClientData}\label{wxtoolbarsettoolclientdata} -\docparam{size}{Margin size.} +\func{void}{GetToolClientData}{\param{wxObject* }{clientData}} -\docparam{x}{Left margin, right margin and inter-tool separation value.} - -\docparam{y}{Top margin, bottom margin and inter-tool separation value.} - -\wxheading{Remarks} - -This must be called before the tools are added if absolute positioning is to be used, and the -default (zero-size) margins are to be overridden. - -\wxheading{See also} - -\helpref{wxToolBar::GetMargins}{wxtoolbargetmargins}, \helpref{wxSize}{wxsize} +Sets the client data associated with the tool. \membersection{wxToolBar::SetToolLongHelp}\label{wxtoolbarsettoollonghelp} diff --git a/include/wx/tbarbase.h b/include/wx/tbarbase.h index c282777eaa..288f2d3a64 100644 --- a/include/wx/tbarbase.h +++ b/include/wx/tbarbase.h @@ -140,10 +140,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 m_control->GetClientData(); + } + else + { + return m_clientData; + } } // modifiers: return TRUE if the state really changed @@ -158,6 +162,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; } @@ -284,7 +300,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; diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp index 7864d099dd..f66ce0f3b1 100644 --- a/src/common/tbarbase.cpp +++ b/src/common/tbarbase.cpp @@ -403,6 +403,15 @@ wxObject *wxToolBarBase::GetToolClientData(int id) const return tool ? tool->GetClientData() : (wxObject *)NULL; } +void wxToolBarBase::SetToolClientData(int id, wxObject *clientData) +{ + wxToolBarToolBase *tool = FindById(id); + + wxCHECK_RET( tool, _T("no such tool in wxToolBar::SetToolClientData") ); + + tool->SetClientData(clientData); +} + bool wxToolBarBase::GetToolState(int id) const { wxToolBarToolBase *tool = FindById(id); -- 2.47.2