]> git.saurik.com Git - wxWidgets.git/blob - include/wx/ribbon/page.h
Don't define __STRICT_ANSI__, we should build both with and without it.
[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 // Copyright: (C) Peter Cawley
8 // Licence: wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
10
11 #ifndef _WX_RIBBON_PAGE_H_
12 #define _WX_RIBBON_PAGE_H_
13
14 #include "wx/defs.h"
15
16 #if wxUSE_RIBBON
17
18 #include "wx/ribbon/control.h"
19 #include "wx/ribbon/panel.h"
20 #include "wx/bitmap.h"
21
22 class wxRibbonBar;
23 class wxRibbonPageScrollButton;
24
25 class WXDLLIMPEXP_RIBBON wxRibbonPage : public wxRibbonControl
26 {
27 public:
28 wxRibbonPage();
29
30 wxRibbonPage(wxRibbonBar* parent,
31 wxWindowID id = wxID_ANY,
32 const wxString& label = wxEmptyString,
33 const wxBitmap& icon = wxNullBitmap,
34 long style = 0);
35
36 virtual ~wxRibbonPage();
37
38 bool Create(wxRibbonBar* parent,
39 wxWindowID id = wxID_ANY,
40 const wxString& label = wxEmptyString,
41 const wxBitmap& icon = wxNullBitmap,
42 long style = 0);
43
44 void SetArtProvider(wxRibbonArtProvider* art);
45
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;
50
51 bool DismissExpandedPanel();
52
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);
59
60 wxOrientation GetMajorAxis() const;
61
62 virtual void RemoveChild(wxWindowBase *child);
63
64 void HideIfExpanded();
65
66 protected:
67 virtual wxSize DoGetBestSize() const;
68 virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
69
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);
75
76 bool ExpandPanels(wxOrientation direction, int maximum_amount);
77 bool CollapsePanels(wxOrientation direction, int minimum_amount);
78 void ShowScrollButtons();
79 void HideScrollButtons();
80
81 void CommonInit(const wxString& label, const wxBitmap& icon);
82 void PopulateSizeCalcArray(wxSize (wxWindow::*get_size)(void) const);
83
84 wxArrayRibbonControl m_collapse_stack;
85 wxBitmap m_icon;
86 wxSize m_old_size;
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;
92 int m_scroll_amount;
93 int m_scroll_amount_limit;
94 int m_size_in_major_axis_for_children;
95 bool m_scroll_buttons_visible;
96
97 #ifndef SWIG
98 DECLARE_CLASS(wxRibbonPage)
99 DECLARE_EVENT_TABLE()
100 #endif
101 };
102
103 #endif // wxUSE_RIBBON
104
105 #endif // _WX_RIBBON_PAGE_H_