1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/ribbon/page.h
3 // Purpose: Container for ribbon-bar-style interface panels
4 // Author: Peter Cawley
8 // Copyright: (C) Peter Cawley
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_RIBBON_PAGE_H_
13 #define _WX_RIBBON_PAGE_H_
19 #include "wx/ribbon/control.h"
20 #include "wx/ribbon/panel.h"
21 #include "wx/bitmap.h"
24 class wxRibbonPageScrollButton
;
26 class WXDLLIMPEXP_RIBBON wxRibbonPage
: public wxRibbonControl
31 wxRibbonPage(wxRibbonBar
* parent
,
32 wxWindowID id
= wxID_ANY
,
33 const wxString
& label
= wxEmptyString
,
34 const wxBitmap
& icon
= wxNullBitmap
,
37 virtual ~wxRibbonPage();
39 bool Create(wxRibbonBar
* parent
,
40 wxWindowID id
= wxID_ANY
,
41 const wxString
& label
= wxEmptyString
,
42 const wxBitmap
& icon
= wxNullBitmap
,
45 void SetArtProvider(wxRibbonArtProvider
* art
);
47 wxBitmap
& GetIcon() {return m_icon
;}
48 virtual wxSize
GetMinSize() const;
49 void SetSizeWithScrollButtonAdjustment(int x
, int y
, int width
, int height
);
50 void AdjustRectToIncludeScrollButtons(wxRect
* rect
) const;
52 bool DismissExpandedPanel();
54 virtual bool Realize();
55 virtual bool Show(bool show
= true);
56 virtual bool Layout();
57 virtual bool ScrollLines(int lines
);
58 bool ScrollPixels(int pixels
);
59 bool ScrollSections(int sections
);
61 wxOrientation
GetMajorAxis() const;
63 virtual void RemoveChild(wxWindowBase
*child
);
65 void HideIfExpanded();
68 virtual wxSize
DoGetBestSize() const;
69 virtual wxBorder
GetDefaultBorder() const { return wxBORDER_NONE
; }
71 void DoSetSize(int x
, int y
, int width
, int height
, int sizeFlags
= wxSIZE_AUTO
);
72 bool DoActualLayout();
73 void OnEraseBackground(wxEraseEvent
& evt
);
74 void OnPaint(wxPaintEvent
& evt
);
75 void OnSize(wxSizeEvent
& evt
);
77 bool ExpandPanels(wxOrientation direction
, int maximum_amount
);
78 bool CollapsePanels(wxOrientation direction
, int minimum_amount
);
79 void ShowScrollButtons();
80 void HideScrollButtons();
82 void CommonInit(const wxString
& label
, const wxBitmap
& icon
);
83 void PopulateSizeCalcArray(wxSize (wxWindow::*get_size
)(void) const);
85 wxArrayRibbonControl m_collapse_stack
;
88 // NB: Scroll button windows are siblings rather than children (to get correct clipping of children)
89 wxRibbonPageScrollButton
* m_scroll_left_btn
;
90 wxRibbonPageScrollButton
* m_scroll_right_btn
;
91 wxSize
* m_size_calc_array
;
92 size_t m_size_calc_array_size
;
94 int m_scroll_amount_limit
;
95 int m_size_in_major_axis_for_children
;
96 bool m_scroll_buttons_visible
;
99 DECLARE_CLASS(wxRibbonPage
)
100 DECLARE_EVENT_TABLE()
104 #endif // wxUSE_RIBBON
106 #endif // _WX_RIBBON_PAGE_H_