]> git.saurik.com Git - wxWidgets.git/commitdiff
Add wxRibbonButtonBar::GetItem(), GetItemById() and GetItemId().
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 20 Sep 2012 20:01:12 +0000 (20:01 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 20 Sep 2012 20:01:12 +0000 (20:01 +0000)
Allow accessing the ribbon bar buttons either by index or ID.

See #14630.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/ribbon/buttonbar.h
interface/wx/ribbon/buttonbar.h
src/ribbon/buttonbar.cpp

index 440a6c2af0f320d4bb718a60840aa20ae5b78970..216d6e2a2e021dc12a8a1c6130735891bac67c97 100644 (file)
@@ -126,6 +126,10 @@ public:
                 wxObject* client_data = NULL);
 
     virtual size_t GetButtonCount() const;
                 wxObject* client_data = NULL);
 
     virtual size_t GetButtonCount() const;
+    virtual wxRibbonButtonBarButtonBase *GetItem(size_t n) const;
+    virtual wxRibbonButtonBarButtonBase *GetItemById(int id) const;
+    virtual int GetItemId(wxRibbonButtonBarButtonBase *button) const;
+
 
     virtual bool Realize();
     virtual void ClearButtons();
 
     virtual bool Realize();
     virtual void ClearButtons();
index e7e80e806a296fdca02f93bfd4d41fc810692eae..292d21b3262d92eac80e3c3a6676d0c94414d5c1 100644 (file)
@@ -377,6 +377,29 @@ public:
     */
     virtual size_t GetButtonCount() const;
 
     */
     virtual size_t GetButtonCount() const;
 
+    /**
+        Returns the N-th button of the bar.
+
+        @see GetButtonCount()
+
+        @since 2.9.5
+    */
+    virtual wxRibbonButtonBarButtonBase *GetItem(size_t n) const;
+
+    /**
+        Returns the first button having a given id or NULL if none matches.
+
+        @since 2.9.5
+    */
+    virtual wxRibbonButtonBarButtonBase *GetItemById(int id) const;
+
+    /**
+        Returns the id of a button.
+
+        @since 2.9.5
+    */
+    virtual int GetItemId(wxRibbonButtonBarButtonBase *) const;
+
     /**
         Calculate button layouts and positions.
         
     /**
         Calculate button layouts and positions.
         
index a40938b9e01a901daff58d53bc7bb0b1c2939b7c..b558e6daacefb20f494ab438bf23dd9cf32fc1a6 100644 (file)
@@ -1139,6 +1139,32 @@ void wxRibbonButtonBar::OnMouseLeave(wxMouseEvent& WXUNUSED(evt))
     if(repaint)
         Refresh(false);
 }
     if(repaint)
         Refresh(false);
 }
+wxRibbonButtonBarButtonBase *wxRibbonButtonBar::GetItem(size_t n) const
+{
+    wxCHECK_MSG(n >= 0 && n < m_buttons.GetCount(), NULL, "wxRibbonButtonBar item's index is out of bound");
+    return m_buttons.Item(n);
+}
+
+wxRibbonButtonBarButtonBase *wxRibbonButtonBar::GetItemById(int button_id) const
+{
+    size_t count = m_buttons.GetCount();
+    for ( size_t i = 0; i < count; ++i )
+    {
+        wxRibbonButtonBarButtonBase* button = m_buttons.Item(i);
+        if ( button->id == button_id )
+            return button;
+    }
+
+    return NULL;
+
+}
+
+int wxRibbonButtonBar::GetItemId(wxRibbonButtonBarButtonBase *item) const
+{
+    wxCHECK_MSG(item != NULL, wxNOT_FOUND, "wxRibbonButtonBar item should not be NULL");
+    return item->id;
+}
+
 
 bool wxRibbonButtonBarEvent::PopupMenu(wxMenu* menu)
 {
 
 bool wxRibbonButtonBarEvent::PopupMenu(wxMenu* menu)
 {