From dd91da4ed1e9d2ba5d3bc2fae64a8e4ea86b5d41 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 27 Jan 2003 01:13:35 +0000 Subject: [PATCH] added Add/InsertTool() (patch 672032) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18958 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 2 ++ docs/latex/wx/toolbar.tex | 10 +++++++++- include/wx/tbarbase.h | 3 +++ src/common/tbarbase.cpp | 27 ++++++++++++++++++++++----- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index ec79242546..2e04106f19 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -32,6 +32,8 @@ All GUI ports: - fixed handling of URLs and filenames in wxFileSystem - implemented alignment for wxGrid bool editor and renderer - support wxListCtrl columns alignment for all platforms and not just MSW +- added wxToolBar Add/InsertTool(tool) (Janusz Piwowarski) + - Changed to type-safe wxSizerItemList for wxSizer child items. Deprecated: diff --git a/docs/latex/wx/toolbar.tex b/docs/latex/wx/toolbar.tex index 4326648f39..12f14173e8 100644 --- a/docs/latex/wx/toolbar.tex +++ b/docs/latex/wx/toolbar.tex @@ -186,9 +186,12 @@ Adds a separator for spacing groups of tools. \param{const wxString\& }{longHelpString = ""},\rtfsp \param{wxObject* }{clientData = NULL}} +\func{wxToolBarTool*}{AddTool}{\param{wxToolBarTool* }{tool}} + Adds a tool to the toolbar. The first (short and most commonly used) version has fewer parameters than the full version at the price of not being able to -specify some of the more rarely used button features. +specify some of the more rarely used button features. The last version allows +to add an existing tool. \wxheading{Parameters} @@ -217,6 +220,8 @@ parent frame when the mouse pointer is inside the tool} \docparam{clientData}{An optional pointer to client data which can be retrieved later using \helpref{wxToolBar::GetToolClientData}{wxtoolbargettoolclientdata}.} +\docparam{tool}{The tool to be added.} + \wxheading{Remarks} After you have added tools to a toolbar, you must call \helpref{wxToolBar::Realize}{wxtoolbarrealize} in @@ -518,6 +523,9 @@ You must call \helpref{Realize}{wxtoolbarrealize} for the change to take place. \param{const wxBitmap\&}{ bitmap2 = wxNullBitmap}, \param{bool}{ isToggle = false},\rtfsp \param{wxObject* }{clientData = NULL}, \param{const wxString\& }{shortHelpString = ""}, \param{const wxString\& }{longHelpString = ""}} +\func{wxToolBarTool *}{InsertTool}{\param{size\_t }{pos},\rtfsp +\param{wxToolBarTool* }{tool}} + Inserts the tool with the specified attributes into the toolbar at the given position. diff --git a/include/wx/tbarbase.h b/include/wx/tbarbase.h index 9cd4e2ea77..9e885dfab7 100644 --- a/include/wx/tbarbase.h +++ b/include/wx/tbarbase.h @@ -324,6 +324,9 @@ public: wxObject *clientData = NULL ); + virtual wxToolBarToolBase *AddTool (wxToolBarToolBase *tool); + virtual wxToolBarToolBase *InsertTool (size_t pos, wxToolBarToolBase *tool); + // add an arbitrary control to the toolbar, return TRUE if ok (notice that // the control will be deleted by the toolbar and that it will also adjust // its position/size) diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp index 5f4b02fa90..16589483c6 100644 --- a/src/common/tbarbase.cpp +++ b/src/common/tbarbase.cpp @@ -164,13 +164,32 @@ wxToolBarToolBase *wxToolBarBase::InsertTool(size_t pos, wxToolBarToolBase *tool = CreateTool(id, label, bitmap, bmpDisabled, kind, clientData, shortHelp, longHelp); - if ( !tool || !DoInsertTool(pos, tool) ) + if ( !InsertTool(pos, tool) ) { delete tool; return NULL; } + return tool; +} + +wxToolBarToolBase *wxToolBarBase::AddTool(wxToolBarToolBase *tool) +{ + return InsertTool(GetToolsCount(), tool); +} + +wxToolBarToolBase * +wxToolBarBase::InsertTool(size_t pos, wxToolBarToolBase *tool) +{ + wxCHECK_MSG( pos <= GetToolsCount(), (wxToolBarToolBase *)NULL, + _T("invalid position in wxToolBar::InsertTool()") ); + + if ( !tool || !DoInsertTool(pos, tool) ) + { + return NULL; + } + m_tools.Insert(pos, tool); return tool; @@ -194,15 +213,13 @@ wxToolBarToolBase *wxToolBarBase::InsertControl(size_t pos, wxControl *control) wxToolBarToolBase *tool = CreateTool(control); - if ( !tool || !DoInsertTool(pos, tool) ) + if ( !InsertTool(pos, tool) ) { delete tool; return NULL; } - m_tools.Insert(pos, tool); - return tool; } @@ -213,7 +230,7 @@ wxControl *wxToolBarBase::FindControl( int id ) node = node->GetNext() ) { wxControl *control = node->GetData()->GetControl(); - + if (control) { if (control->GetId() == id) -- 2.47.2