Add wxRibbonButtonBar::InsertXXXButton() methods.

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
This commit is contained in:
Vadim Zeitlin
2011-12-29 22:05:39 +00:00
parent f01e56249a
commit ff4cb9160e
4 changed files with 237 additions and 2 deletions

View 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)