]> git.saurik.com Git - wxWidgets.git/blob - include/wx/ribbon/page.h
Applying patch #10784: eliminate gauge flicker
[wxWidgets.git] / include / wx / ribbon / page.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/ribbon/page.h
3 // Purpose: Container for ribbon-bar-style interface panels
4 // Author: Peter Cawley
5 // Modified by:
6 // Created: 2009-05-25
7 // RCS-ID: $Id$
8 // Copyright: (C) Peter Cawley
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_RIBBON_PAGE_H_
13 #define _WX_RIBBON_PAGE_H_
14
15 #include "wx/defs.h"
16
17 #if wxUSE_RIBBON
18
19 #include "wx/ribbon/control.h"
20 #include "wx/ribbon/panel.h"
21 #include "wx/bitmap.h"
22
23 class wxRibbonBar;
24 class wxRibbonPageScrollButton;
25
26 class WXDLLIMPEXP_RIBBON wxRibbonPage : public wxRibbonControl
27 {
28 public:
29 wxRibbonPage();
30
31 wxRibbonPage(wxRibbonBar* parent,
32 wxWindowID id = wxID_ANY,
33 const wxString& label = wxEmptyString,
34 const wxBitmap& icon = wxNullBitmap,
35 long style = 0);
36
37 virtual ~wxRibbonPage();
38
39 bool Create(wxRibbonBar* parent,
40 wxWindowID id = wxID_ANY,
41 const wxString& label = wxEmptyString,
42 const wxBitmap& icon = wxNullBitmap,
43 long style = 0);
44
45 void SetArtProvider(wxRibbonArtProvider* art);
46
47 wxBitmap& GetIcon() {return m_icon;}
48 virtual wxSize GetMinSize() const;
49 virtual wxSize DoGetBestSize() const;
50 void SetSizeWithScrollButtonAdjustment(int x, int y, int width, int height);
51 void AdjustRectToIncludeScrollButtons(wxRect* rect) const;
52
53 bool DismissExpandedPanel();
54
55 virtual bool Realize();
56 virtual bool Show(bool show = true);
57 virtual bool Layout();
58 virtual bool ScrollLines(int lines);
59 bool ScrollPixels(int pixels);
60
61 wxOrientation GetMajorAxis() const;
62
63 virtual void RemoveChild(wxWindowBase *child);
64
65 protected:
66 virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
67
68 void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
69 void OnEraseBackground(wxEraseEvent& evt);
70 void OnPaint(wxPaintEvent& evt);
71 void OnSize(wxSizeEvent& evt);
72
73 bool ExpandPanels(wxOrientation direction, int maximum_amount);
74 bool CollapsePanels(wxOrientation direction, int minimum_amount);
75 void ShowScrollButtons();
76 void HideScrollButtons();
77
78 void CommonInit(const wxString& label, const wxBitmap& icon);
79
80 wxArrayRibbonControl m_collapse_stack;
81 wxBitmap m_icon;
82 wxSize m_old_size;
83 // NB: Scroll button windows are siblings rather than children (to get correct clipping of children)
84 wxRibbonPageScrollButton* m_scroll_left_btn;
85 wxRibbonPageScrollButton* m_scroll_right_btn;
86 int m_scroll_amount;
87 int m_scroll_amount_limit;
88 int m_size_in_major_axis_for_children;
89 bool m_scroll_buttons_visible;
90
91 #ifndef SWIG
92 DECLARE_CLASS(wxRibbonPage)
93 DECLARE_EVENT_TABLE()
94 #endif
95 };
96
97 #endif // wxUSE_RIBBON
98
99 #endif // _WX_RIBBON_PAGE_H_