Add wxRibbonBar::{Show,Hide}Panels() and ArePanelsShown() accessor.
Also add a toggle button to the sample to test the new functionality
(unfortunately it couldn't be done by a control in the ribbon itself as there
would be no way to show the panels back then).
Closes #12707.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66612
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
- Added possibility to disable individual wxDataViewCtrl items (Neno Ganchev).
- wxHTML: render in RTL order inside RTL window (Richard Bullington-McGuire).
- wxRibbon: added EVT_RIBBONGALLERY_CLICKED event (John Roberts).
- Added possibility to disable individual wxDataViewCtrl items (Neno Ganchev).
- wxHTML: render in RTL order inside RTL window (Richard Bullington-McGuire).
- wxRibbon: added EVT_RIBBONGALLERY_CLICKED event (John Roberts).
+- wxRibbon: allow hiding the panels and showing tabs only (snowleopard).
- Add support for CP-866 encoding to wxEncodingConverter (madnut).
- Consistency fixes for keyboard events across all major ports.
- Added EVT_RIBBONBAR_TAB_LEFT_DCLICK event (snowleopard).
- Add support for CP-866 encoding to wxEncodingConverter (madnut).
- Consistency fixes for keyboard events across all major ports.
- Added EVT_RIBBONBAR_TAB_LEFT_DCLICK event (snowleopard).
wxRibbonPage* GetPage(int n);
bool DismissExpandedPanel();
wxRibbonPage* GetPage(int n);
bool DismissExpandedPanel();
+ void ShowPanels(bool show = true);
+ void HidePanels() { ShowPanels(false); }
+ bool ArePanelsShown() const { return m_arePanelsShown; }
+
virtual bool HasMultiplePages() const { return true; }
void SetWindowStyleFlag(long style);
virtual bool HasMultiplePages() const { return true; }
void SetWindowStyleFlag(long style);
int m_tab_scroll_left_button_state;
int m_tab_scroll_right_button_state;
bool m_tab_scroll_buttons_shown;
int m_tab_scroll_left_button_state;
int m_tab_scroll_right_button_state;
bool m_tab_scroll_buttons_shown;
#ifndef SWIG
DECLARE_CLASS(wxRibbonBar)
#ifndef SWIG
DECLARE_CLASS(wxRibbonBar)
for the currently active page, or @false if there is no active page.
*/
bool DismissExpandedPanel();
for the currently active page, or @false if there is no active page.
*/
bool DismissExpandedPanel();
+
+ /**
+ Shows or hides the panel area of the ribbon bar.
+
+ If the panel area is hidden, then only the tab of the ribbon bar will
+ be shown. This is useful for giving the user more screen space to work
+ with when he/she doesn't need to see the ribbon's options.
+
+ @since 2.9.2
+ */
+ void ShowPanels(bool show = true);
+
+ /**
+ Hides the panel area of the ribbon bar.
+
+ This method simply calls ShowPanels() with @false argument.
+
+ @since 2.9.2
+ */
+ void HidePanels();
+
+ /**
+ Indicates whether the panel area of the ribbon bar is shown.
+
+ @see ShowPanels()
+
+ @since 2.9.2
+ */
+ bool ArePanelsShown() const;
/**
Perform initial layout and size calculations of the bar and its
/**
Perform initial layout and size calculations of the bar and its
#include "wx/colordlg.h"
#include "wx/artprov.h"
#include "wx/combobox.h"
#include "wx/colordlg.h"
#include "wx/artprov.h"
#include "wx/combobox.h"
#include "wx/wrapsizer.h"
// -- application --
#include "wx/wrapsizer.h"
// -- application --
ID_POSITION_LEFT,
ID_POSITION_LEFT_LABELS,
ID_POSITION_LEFT_BOTH,
ID_POSITION_LEFT,
ID_POSITION_LEFT_LABELS,
ID_POSITION_LEFT_BOTH,
};
void OnCircleButton(wxRibbonButtonBarEvent& evt);
};
void OnCircleButton(wxRibbonButtonBarEvent& evt);
void OnPositionLeftBoth(wxCommandEvent& evt);
void OnPositionLeftDropdown(wxRibbonToolBarEvent& evt);
void OnPositionLeftBoth(wxCommandEvent& evt);
void OnPositionLeftDropdown(wxRibbonToolBarEvent& evt);
+ void OnTogglePanels(wxCommandEvent& evt);
+
protected:
wxRibbonGallery* PopulateColoursPanel(wxWindow* panel, wxColour def,
int gallery_id);
protected:
wxRibbonGallery* PopulateColoursPanel(wxWindow* panel, wxColour def,
int gallery_id);
wxRibbonGallery* m_primary_gallery;
wxRibbonGallery* m_secondary_gallery;
wxTextCtrl* m_logwindow;
wxRibbonGallery* m_primary_gallery;
wxRibbonGallery* m_secondary_gallery;
wxTextCtrl* m_logwindow;
+ wxToggleButton* m_togglePanels;
+
wxColourData m_colour_data;
wxColour m_default_primary;
wxColour m_default_secondary;
wxColourData m_colour_data;
wxColour m_default_primary;
wxColour m_default_secondary;
EVT_MENU(ID_POSITION_TOP, MyFrame::OnPositionTopLabels)
EVT_MENU(ID_POSITION_TOP_ICONS, MyFrame::OnPositionTopIcons)
EVT_MENU(ID_POSITION_TOP_BOTH, MyFrame::OnPositionTopBoth)
EVT_MENU(ID_POSITION_TOP, MyFrame::OnPositionTopLabels)
EVT_MENU(ID_POSITION_TOP_ICONS, MyFrame::OnPositionTopIcons)
EVT_MENU(ID_POSITION_TOP_BOTH, MyFrame::OnPositionTopBoth)
+EVT_TOGGLEBUTTON(ID_TOGGLE_PANELS, MyFrame::OnTogglePanels)
END_EVENT_TABLE()
#include "align_center.xpm"
END_EVENT_TABLE()
#include "align_center.xpm"
wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY |
wxTE_LEFT | wxTE_BESTWRAP | wxBORDER_NONE);
wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY |
wxTE_LEFT | wxTE_BESTWRAP | wxBORDER_NONE);
+ m_togglePanels = new wxToggleButton(this, ID_TOGGLE_PANELS, "&Toggle panels");
+ m_togglePanels->SetValue(true);
+
wxSizer *s = new wxBoxSizer(wxVERTICAL);
s->Add(m_ribbon, 0, wxEXPAND);
s->Add(m_logwindow, 1, wxEXPAND);
wxSizer *s = new wxBoxSizer(wxVERTICAL);
s->Add(m_ribbon, 0, wxEXPAND);
s->Add(m_logwindow, 1, wxEXPAND);
+ s->Add(m_togglePanels, wxSizerFlags().Border());
+void MyFrame::OnTogglePanels(wxCommandEvent& WXUNUSED(evt))
+{
+ m_ribbon->ShowPanels(m_togglePanels->GetValue());
+}
+
void MyFrame::AddText(wxString msg)
{
m_logwindow->AppendText(msg);
void MyFrame::AddText(wxString msg)
{
m_logwindow->AppendText(msg);
return m_pages.Item(m_current_page).page->DismissExpandedPanel();
}
return m_pages.Item(m_current_page).page->DismissExpandedPanel();
}
+void wxRibbonBar::ShowPanels(const bool show)
+{
+ m_arePanelsShown = show;
+ SetMinSize(wxSize(GetSize().GetWidth(), DoGetBestSize().GetHeight()));
+ Realise();
+ GetParent()->Layout();
+}
+
void wxRibbonBar::SetWindowStyleFlag(long style)
{
m_flags = style;
void wxRibbonBar::SetWindowStyleFlag(long style)
{
m_flags = style;
m_tab_scroll_left_button_state = wxRIBBON_SCROLL_BTN_NORMAL;
m_tab_scroll_right_button_state = wxRIBBON_SCROLL_BTN_NORMAL;
m_tab_scroll_buttons_shown = false;
m_tab_scroll_left_button_state = wxRIBBON_SCROLL_BTN_NORMAL;
m_tab_scroll_right_button_state = wxRIBBON_SCROLL_BTN_NORMAL;
m_tab_scroll_buttons_shown = false;
+ m_arePanelsShown = true;
}
wxRibbonBar::wxRibbonBar(wxWindow* parent,
}
wxRibbonBar::wxRibbonBar(wxWindow* parent,
m_tab_scroll_left_button_state = wxRIBBON_SCROLL_BTN_NORMAL;
m_tab_scroll_right_button_state = wxRIBBON_SCROLL_BTN_NORMAL;
m_tab_scroll_buttons_shown = false;
m_tab_scroll_left_button_state = wxRIBBON_SCROLL_BTN_NORMAL;
m_tab_scroll_right_button_state = wxRIBBON_SCROLL_BTN_NORMAL;
m_tab_scroll_buttons_shown = false;
+ m_arePanelsShown = true;
}
m_minWidth = min_size.GetWidth();
}
m_minWidth = min_size.GetWidth();
- m_minHeight = min_size.GetHeight();
+ m_minHeight = m_arePanelsShown ? min_size.GetHeight() : m_tab_height;
}
wxSize wxRibbonBar::DoGetBestSize() const
}
wxSize wxRibbonBar::DoGetBestSize() const
{
best.IncBy(0, m_tab_height);
}
{
best.IncBy(0, m_tab_height);
}
+ if(!m_arePanelsShown)
+ {
+ best.SetHeight(m_tab_height);
+ }