Add expand/collapse button to wxRibbonBar.
This allows the user to toggle the ribbon bar visibility. Closes #14530. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72261 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -103,6 +103,10 @@ enum wxRibbonArtSetting
|
||||
wxRIBBON_ART_PANEL_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
|
||||
wxRIBBON_ART_PANEL_BUTTON_FACE_COLOUR,
|
||||
wxRIBBON_ART_PANEL_BUTTON_HOVER_FACE_COLOUR,
|
||||
|
||||
wxRIBBON_ART_PAGE_TOGGLE_FACE_COLOUR,
|
||||
wxRIBBON_ART_PAGE_TOGGLE_HOVER_FACE_COLOUR,
|
||||
|
||||
wxRIBBON_ART_PAGE_BORDER_COLOUR,
|
||||
wxRIBBON_ART_PAGE_BACKGROUND_TOP_COLOUR,
|
||||
wxRIBBON_ART_PAGE_BACKGROUND_TOP_GRADIENT_COLOUR,
|
||||
@@ -185,6 +189,7 @@ enum wxRibbonGalleryButtonState
|
||||
wxRIBBON_GALLERY_BUTTON_DISABLED
|
||||
};
|
||||
|
||||
class wxRibbonBar;
|
||||
class wxRibbonPage;
|
||||
class wxRibbonPanel;
|
||||
class wxRibbonGallery;
|
||||
@@ -297,6 +302,12 @@ public:
|
||||
wxRibbonButtonKind kind,
|
||||
long state) = 0;
|
||||
|
||||
virtual void DrawToggleButton(
|
||||
wxDC& dc,
|
||||
wxRibbonBar* wnd,
|
||||
const wxRect& rect,
|
||||
bool upBitmap) = 0;
|
||||
|
||||
virtual void GetBarTabWidth(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
@@ -380,6 +391,10 @@ public:
|
||||
bool is_first,
|
||||
bool is_last,
|
||||
wxRect* dropdown_region) = 0;
|
||||
|
||||
virtual wxRect GetBarToggleButtonArea(wxDC& dc,
|
||||
const wxRibbonBar* wnd,
|
||||
wxRect rect)= 0;
|
||||
};
|
||||
|
||||
class WXDLLIMPEXP_RIBBON wxRibbonMSWArtProvider : public wxRibbonArtProvider
|
||||
@@ -491,6 +506,12 @@ public:
|
||||
wxRibbonButtonKind kind,
|
||||
long state);
|
||||
|
||||
void DrawToggleButton(
|
||||
wxDC& dc,
|
||||
wxRibbonBar* wnd,
|
||||
const wxRect& rect,
|
||||
bool upBitmap);
|
||||
|
||||
void GetBarTabWidth(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
@@ -570,6 +591,10 @@ public:
|
||||
bool is_last,
|
||||
wxRect* dropdown_region);
|
||||
|
||||
wxRect GetBarToggleButtonArea(wxDC& dc,
|
||||
const wxRibbonBar* wnd,
|
||||
wxRect rect);
|
||||
|
||||
protected:
|
||||
void ReallyDrawTabSeparator(wxWindow* wnd, const wxRect& rect, double visibility);
|
||||
void DrawPartialPageBackground(wxDC& dc, wxWindow* wnd, const wxRect& rect,
|
||||
@@ -605,6 +630,8 @@ protected:
|
||||
wxBitmap m_gallery_extension_bitmap[4];
|
||||
wxBitmap m_toolbar_drop_bitmap;
|
||||
wxBitmap m_panel_extension_bitmap[2];
|
||||
wxBitmap m_ribbon_toggle_up_bitmap[2];
|
||||
wxBitmap m_ribbon_toggle_down_bitmap[2];
|
||||
|
||||
wxColour m_primary_scheme_colour;
|
||||
wxColour m_secondary_scheme_colour;
|
||||
@@ -629,6 +656,8 @@ protected:
|
||||
wxColour m_panel_active_background_top_gradient_colour;
|
||||
wxColour m_panel_button_face_colour;
|
||||
wxColour m_panel_button_hover_face_colour;
|
||||
wxColour m_page_toggle_face_colour;
|
||||
wxColour m_page_toggle_hover_face_colour;
|
||||
wxColour m_page_background_colour;
|
||||
wxColour m_page_background_gradient_colour;
|
||||
wxColour m_page_background_top_colour;
|
||||
@@ -681,6 +710,7 @@ protected:
|
||||
wxBrush m_gallery_button_hover_background_top_brush;
|
||||
wxBrush m_gallery_button_active_background_top_brush;
|
||||
wxBrush m_gallery_button_disabled_background_top_brush;
|
||||
wxBrush m_ribbon_toggle_brush;
|
||||
|
||||
wxFont m_tab_label_font;
|
||||
wxFont m_panel_label_font;
|
||||
@@ -698,6 +728,7 @@ protected:
|
||||
wxPen m_gallery_border_pen;
|
||||
wxPen m_gallery_item_border_pen;
|
||||
wxPen m_toolbar_border_pen;
|
||||
wxPen m_ribbon_toggle_pen;
|
||||
|
||||
double m_cached_tab_separator_visibility;
|
||||
long m_flags;
|
||||
|
@@ -28,10 +28,12 @@ enum wxRibbonBarOption
|
||||
wxRIBBON_BAR_SHOW_PANEL_EXT_BUTTONS = 1 << 3,
|
||||
wxRIBBON_BAR_SHOW_PANEL_MINIMISE_BUTTONS = 1 << 4,
|
||||
wxRIBBON_BAR_ALWAYS_SHOW_TABS = 1 << 5,
|
||||
wxRIBBON_BAR_SHOW_TOGGLE_BUTTON = 1 << 6,
|
||||
|
||||
wxRIBBON_BAR_DEFAULT_STYLE = wxRIBBON_BAR_FLOW_HORIZONTAL
|
||||
| wxRIBBON_BAR_SHOW_PAGE_LABELS
|
||||
| wxRIBBON_BAR_SHOW_PANEL_EXT_BUTTONS,
|
||||
| wxRIBBON_BAR_SHOW_PANEL_EXT_BUTTONS
|
||||
| wxRIBBON_BAR_SHOW_TOGGLE_BUTTON,
|
||||
|
||||
wxRIBBON_BAR_FOLDBAR_STYLE = wxRIBBON_BAR_FLOW_VERTICAL
|
||||
| wxRIBBON_BAR_SHOW_PAGE_ICONS
|
||||
@@ -135,12 +137,16 @@ public:
|
||||
long GetWindowStyleFlag() const;
|
||||
virtual bool Realize();
|
||||
|
||||
// Implementation only.
|
||||
bool IsToggleButtonHovered() const { return m_toggle_button_hovered; }
|
||||
|
||||
protected:
|
||||
friend class wxRibbonPage;
|
||||
|
||||
virtual wxSize DoGetBestSize() const;
|
||||
wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
|
||||
wxRibbonPageTabInfo* HitTestTabs(wxPoint position, int* index = NULL);
|
||||
void HitTestToggleButton(wxPoint position);
|
||||
|
||||
void CommonInit(long style);
|
||||
void AddPage(wxRibbonPage *page);
|
||||
@@ -168,6 +174,7 @@ protected:
|
||||
wxRibbonPageTabInfoArray m_pages;
|
||||
wxRect m_tab_scroll_left_button_rect;
|
||||
wxRect m_tab_scroll_right_button_rect;
|
||||
wxRect m_toggle_button_rect;
|
||||
long m_flags;
|
||||
int m_tabs_total_width_ideal;
|
||||
int m_tabs_total_width_minimum;
|
||||
@@ -181,6 +188,8 @@ protected:
|
||||
int m_tab_scroll_right_button_state;
|
||||
bool m_tab_scroll_buttons_shown;
|
||||
bool m_arePanelsShown;
|
||||
bool m_bar_hovered;
|
||||
bool m_toggle_button_hovered;
|
||||
|
||||
#ifndef SWIG
|
||||
DECLARE_CLASS(wxRibbonBar)
|
||||
@@ -197,6 +206,7 @@ wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_RIBBON, wxEVT_COMMAND_RIBBONBAR_TAB_MIDDLE_
|
||||
wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_RIBBON, wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_DOWN, wxRibbonBarEvent);
|
||||
wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_RIBBON, wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_UP, wxRibbonBarEvent);
|
||||
wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_RIBBON, wxEVT_COMMAND_RIBBONBAR_TAB_LEFT_DCLICK, wxRibbonBarEvent);
|
||||
wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_RIBBON, wxEVT_COMMAND_RIBBONBAR_TOGGLED, wxRibbonBarEvent);
|
||||
|
||||
typedef void (wxEvtHandler::*wxRibbonBarEventFunction)(wxRibbonBarEvent&);
|
||||
|
||||
@@ -217,6 +227,8 @@ typedef void (wxEvtHandler::*wxRibbonBarEventFunction)(wxRibbonBarEvent&);
|
||||
wx__DECLARE_EVT1(wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_UP, winid, wxRibbonBarEventHandler(fn))
|
||||
#define EVT_RIBBONBAR_TAB_LEFT_DCLICK(winid, fn) \
|
||||
wx__DECLARE_EVT1(wxEVT_COMMAND_RIBBONBAR_TAB_LEFT_DCLICK, winid, wxRibbonBarEventHandler(fn))
|
||||
#define EVT_RIBBONBAR_TOGGLED(winid, fn) \
|
||||
wx__DECLARE_EVT1(wxEVT_COMMAND_RIBBONBAR_TOGGLED, winid, wxRibbonBarEventHandler(fn))
|
||||
#else
|
||||
|
||||
// wxpython/swig event work
|
||||
@@ -227,6 +239,7 @@ typedef void (wxEvtHandler::*wxRibbonBarEventFunction)(wxRibbonBarEvent&);
|
||||
%constant wxEventType wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_DOWN;
|
||||
%constant wxEventType wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_UP;
|
||||
%constant wxEventType wxEVT_COMMAND_RIBBONBAR_TAB_LEFT_DCLICK;
|
||||
%constant wxEventType wxEVT_COMMAND_RIBBONBAR_TOGGLED;
|
||||
|
||||
%pythoncode {
|
||||
EVT_RIBBONBAR_PAGE_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_RIBBONBAR_PAGE_CHANGED, 1 )
|
||||
@@ -236,6 +249,7 @@ typedef void (wxEvtHandler::*wxRibbonBarEventFunction)(wxRibbonBarEvent&);
|
||||
EVT_RIBBONBAR_TAB_RIGHT_DOWN = wx.PyEventBinder( wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_DOWN, 1 )
|
||||
EVT_RIBBONBAR_TAB_RIGHT_UP = wx.PyEventBinder( wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_UP, 1 )
|
||||
EVT_RIBBONBAR_TAB_LEFT_DCLICK = wx.PyEventBinder( wxEVT_COMMAND_RIBBONBAR_TAB_LEFT_DCLICK, 1 )
|
||||
EVT_RIBBONBAR_TOGGLED = wx.PyEventBinder( wxEVT_COMMAND_RIBBONBAR_TOGGLED, 1 )
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user