1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/ribbon/page.h
3 // Purpose: Container for ribbon-bar-style interface panels
4 // Author: Peter Cawley
7 // Copyright: (C) Peter Cawley
8 // Licence: wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_RIBBON_PAGE_H_
12 #define _WX_RIBBON_PAGE_H_
18 #include "wx/ribbon/control.h"
19 #include "wx/ribbon/panel.h"
20 #include "wx/bitmap.h"
23 class wxRibbonPageScrollButton
;
25 class WXDLLIMPEXP_RIBBON wxRibbonPage
: public wxRibbonControl
30 wxRibbonPage(wxRibbonBar
* parent
,
31 wxWindowID id
= wxID_ANY
,
32 const wxString
& label
= wxEmptyString
,
33 const wxBitmap
& icon
= wxNullBitmap
,
36 virtual ~wxRibbonPage();
38 bool Create(wxRibbonBar
* parent
,
39 wxWindowID id
= wxID_ANY
,
40 const wxString
& label
= wxEmptyString
,
41 const wxBitmap
& icon
= wxNullBitmap
,
44 void SetArtProvider(wxRibbonArtProvider
* art
);
46 wxBitmap
& GetIcon() {return m_icon
;}
47 virtual wxSize
GetMinSize() const;
48 void SetSizeWithScrollButtonAdjustment(int x
, int y
, int width
, int height
);
49 void AdjustRectToIncludeScrollButtons(wxRect
* rect
) const;
51 bool DismissExpandedPanel();
53 virtual bool Realize();
54 virtual bool Show(bool show
= true);
55 virtual bool Layout();
56 virtual bool ScrollLines(int lines
);
57 bool ScrollPixels(int pixels
);
58 bool ScrollSections(int sections
);
60 wxOrientation
GetMajorAxis() const;
62 virtual void RemoveChild(wxWindowBase
*child
);
64 void HideIfExpanded();
67 virtual wxSize
DoGetBestSize() const;
68 virtual wxBorder
GetDefaultBorder() const { return wxBORDER_NONE
; }
70 void DoSetSize(int x
, int y
, int width
, int height
, int sizeFlags
= wxSIZE_AUTO
);
71 bool DoActualLayout();
72 void OnEraseBackground(wxEraseEvent
& evt
);
73 void OnPaint(wxPaintEvent
& evt
);
74 void OnSize(wxSizeEvent
& evt
);
76 bool ExpandPanels(wxOrientation direction
, int maximum_amount
);
77 bool CollapsePanels(wxOrientation direction
, int minimum_amount
);
78 void ShowScrollButtons();
79 void HideScrollButtons();
81 void CommonInit(const wxString
& label
, const wxBitmap
& icon
);
82 void PopulateSizeCalcArray(wxSize (wxWindow::*get_size
)(void) const);
84 wxArrayRibbonControl m_collapse_stack
;
87 // NB: Scroll button windows are siblings rather than children (to get correct clipping of children)
88 wxRibbonPageScrollButton
* m_scroll_left_btn
;
89 wxRibbonPageScrollButton
* m_scroll_right_btn
;
90 wxSize
* m_size_calc_array
;
91 size_t m_size_calc_array_size
;
93 int m_scroll_amount_limit
;
94 int m_size_in_major_axis_for_children
;
95 bool m_scroll_buttons_visible
;
98 DECLARE_CLASS(wxRibbonPage
)
103 #endif // wxUSE_RIBBON
105 #endif // _WX_RIBBON_PAGE_H_