]> git.saurik.com Git - wxWidgets.git/commitdiff
Add wxRibbonButtonBar::InsertXXXButton() methods.
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 29 Dec 2011 22:05:39 +0000 (22:05 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 29 Dec 2011 22:05:39 +0000 (22:05 +0000)
Allow inserting buttons into the ribbon bar and not only appending them.

Closes #13811.

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

docs/changes.txt
include/wx/ribbon/buttonbar.h
interface/wx/ribbon/buttonbar.h
src/ribbon/buttonbar.cpp

index 9a8090e939e2a9a34092a632bc380fdc89758a73..29b3f0d36a813f04516aa6a7fceb560e5872a884 100644 (file)
@@ -462,6 +462,7 @@ All (GUI):
 - Show ribbon tools help strings in tooltips (John Roberts).
 - Improve row/column selection modes in wxGrid (joostn).
 - Allow using wxEVT_UPDATE_UI with wxRibbonButtonBar (Emilien Kia).
+- Add wxRibbonButtonBar::InsertXXXButton() methods (Emilien Kia).
 
 GTK:
 
index b662997c4741a6cc4ecd89f05d75c37b6a889295..440a6c2af0f320d4bb718a60840aa20ae5b78970 100644 (file)
@@ -84,6 +84,49 @@ public:
                 const wxString& help_string = wxEmptyString,
                 wxObject* client_data = NULL);
 
+    virtual wxRibbonButtonBarButtonBase* InsertButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string,
+                wxRibbonButtonKind kind = wxRIBBON_BUTTON_NORMAL);
+
+    virtual wxRibbonButtonBarButtonBase* InsertDropdownButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string = wxEmptyString);
+
+    virtual wxRibbonButtonBarButtonBase* InsertHybridButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string = wxEmptyString);
+
+    virtual wxRibbonButtonBarButtonBase* InsertToggleButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string = wxEmptyString);
+
+    virtual wxRibbonButtonBarButtonBase* InsertButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxBitmap& bitmap_small = wxNullBitmap,
+                const wxBitmap& bitmap_disabled = wxNullBitmap,
+                const wxBitmap& bitmap_small_disabled = wxNullBitmap,
+                wxRibbonButtonKind kind = wxRIBBON_BUTTON_NORMAL,
+                const wxString& help_string = wxEmptyString,
+                wxObject* client_data = NULL);
+
+    virtual size_t GetButtonCount() const;
+
     virtual bool Realize();
     virtual void ClearButtons();
     virtual bool DeleteButton(int button_id);
index dd36d7c1b4e34a4f7293161b4c3d80ee4347b496..9f1bfe12b3d51fcbba8baa6a8b23eed564643110 100644 (file)
@@ -252,6 +252,131 @@ public:
                 const wxString& help_string = wxEmptyString,
                 wxObject* client_data = NULL);
 
+    /**
+        Inserts a button to the button bar (simple version) at the given position.
+
+        @see AddButton()
+
+        @since 2.9.4
+    */
+    virtual wxRibbonButtonBarButtonBase* InsertButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string,
+                wxRibbonButtonBarButtonKind kind = wxRIBBON_BUTTONBAR_BUTTON_NORMAL);
+
+    /**
+        Inserts a dropdown button to the button bar (simple version) at the
+            given position.
+
+        @see InsertButton()
+        @see AddDropdownButton()
+        @see AddButton()
+
+        @since 2.9.4
+    */
+    virtual wxRibbonButtonBarButtonBase* InsertDropdownButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string = wxEmptyString);
+
+    /**
+        Inserts a hybrid button to the button bar (simple version) at the given
+            position.
+
+        @see InsertButton()
+        @see AddHybridButton()
+        @see AddButton()
+
+        @since 2.9.4
+    */
+    virtual wxRibbonButtonBarButtonBase* InsertHybridButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string = wxEmptyString);
+
+    /**
+        Inserts a toggle button to the button bar (simple version) at the given
+            position.
+
+        @see InsertButton()
+        @see AddToggleButton()
+        @see AddButton()
+
+        @since 2.9.4
+    */
+    virtual wxRibbonButtonBarButtonBase* InsertToggleButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string = wxEmptyString);
+
+    /**
+        Insert a button to the button bar at the given position.
+
+        @param pos
+            Position of the new button in the button bar.
+        @param button_id
+            ID of the new button (used for event callbacks).
+        @param label
+            Label of the new button.
+        @param bitmap
+            Large bitmap of the new button. Must be the same size as all other
+            large bitmaps used on the button bar.
+        @param bitmap_small
+            Small bitmap of the new button. If left as null, then a small
+            bitmap will be automatically generated. Must be the same size as
+            all other small bitmaps used on the button bar.
+        @param bitmap_disabled
+            Large bitmap of the new button when it is disabled. If left as
+            null, then a bitmap will be automatically generated from @a bitmap.
+        @param bitmap_small_disabled
+            Small bitmap of the new button when it is disabled. If left as
+            null, then a bitmap will be automatically generated from @a
+            bitmap_small.
+        @param kind
+            The kind of button to add.
+        @param help_string
+            The UI help string to associate with the new button.
+        @param client_data
+            Client data to associate with the new button.
+
+        @return An opaque pointer which can be used only with other button bar
+            methods.
+
+        @see InsertDropdownButton()
+        @see InsertHybridButton()
+        @see InsertToggleButton()
+        @see AddButton()
+
+        @since 2.9.4
+    */
+    virtual wxRibbonButtonBarButtonBase* InsertButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxBitmap& bitmap_small = wxNullBitmap,
+                const wxBitmap& bitmap_disabled = wxNullBitmap,
+                const wxBitmap& bitmap_small_disabled = wxNullBitmap,
+                wxRibbonButtonBarButtonKind kind = wxRIBBON_BUTTONBAR_BUTTON_NORMAL,
+                const wxString& help_string = wxEmptyString,
+                wxObject* client_data = NULL);
+
+    /**
+        Returns the number of buttons in this button bar.
+
+        @since 2.9.4
+    */
+    virtual size_t GetButtonCount() const;
+
     /**
         Calculate button layouts and positions.
         
index a9f733e950ae96826b77715b993aa00de44406c3..3e73865a017e571f548fd6d1c50eb45d85ecedea 100644 (file)
@@ -279,6 +279,23 @@ wxRibbonButtonBarButtonBase* wxRibbonButtonBar::AddButton(
                 wxRibbonButtonKind kind,
                 const wxString& help_string,
                 wxObject* client_data)
+{
+    return InsertButton(GetButtonCount(), button_id, label, bitmap,
+        bitmap_small, bitmap_disabled,bitmap_small_disabled, kind, help_string,
+        client_data);
+}
+
+wxRibbonButtonBarButtonBase* wxRibbonButtonBar::InsertButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxBitmap& bitmap_small,
+                const wxBitmap& bitmap_disabled,
+                const wxBitmap& bitmap_small_disabled,
+                wxRibbonButtonKind kind,
+                const wxString& help_string,
+                wxObject* client_data)
 {
     wxASSERT(bitmap.IsOk() || bitmap_small.IsOk());
     if(m_buttons.IsEmpty())
@@ -348,12 +365,56 @@ wxRibbonButtonBarButtonBase* wxRibbonButtonBar::AddButton(
     FetchButtonSizeInfo(base, wxRIBBON_BUTTONBAR_BUTTON_MEDIUM, temp_dc);
     FetchButtonSizeInfo(base, wxRIBBON_BUTTONBAR_BUTTON_LARGE, temp_dc);
 
-    // TODO
-    m_buttons.Add(base);
+    m_buttons.Insert(base, pos);
     m_layouts_valid = false;
     return base;
 }
 
+wxRibbonButtonBarButtonBase* wxRibbonButtonBar::InsertButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string,
+                wxRibbonButtonKind kind)
+{
+    return InsertButton(pos, button_id, label, bitmap, wxNullBitmap,
+        wxNullBitmap, wxNullBitmap, kind, help_string);
+}
+
+wxRibbonButtonBarButtonBase* wxRibbonButtonBar::InsertDropdownButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string)
+{
+    return InsertButton(pos, button_id, label, bitmap, help_string,
+        wxRIBBON_BUTTON_DROPDOWN);
+}
+
+wxRibbonButtonBarButtonBase* wxRibbonButtonBar::InsertToggleButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string)
+{
+    return InsertButton(pos, button_id, label, bitmap, help_string,
+        wxRIBBON_BUTTON_TOGGLE);
+}
+
+wxRibbonButtonBarButtonBase* wxRibbonButtonBar::InsertHybridButton(
+                size_t pos,
+                int button_id,
+                const wxString& label,
+                const wxBitmap& bitmap,
+                const wxString& help_string)
+{
+    return InsertButton(pos, button_id, label, bitmap, help_string,
+        wxRIBBON_BUTTON_HYBRID);
+}
+
 void wxRibbonButtonBar::FetchButtonSizeInfo(wxRibbonButtonBarButtonBase* button,
         wxRibbonButtonBarButtonState size, wxDC& dc)
 {
@@ -382,6 +443,11 @@ wxBitmap wxRibbonButtonBar::MakeDisabledBitmap(const wxBitmap& original)
     return wxBitmap(img.ConvertToGreyscale());
 }
 
+size_t wxRibbonButtonBar::GetButtonCount() const
+{
+    return m_buttons.GetCount();
+}
+
 bool wxRibbonButtonBar::Realize()
 {
     if(!m_layouts_valid)