| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: ribbon/page.h
- // Purpose: interface of wxRibbonPage
- // Author: Peter Cawley
- // Licence: wxWindows licence
- ///////////////////////////////////////////////////////////////////////////////
- /**
- @class wxRibbonPage
- Container for related ribbon panels, and a tab within a ribbon bar.
-
- @see wxRibbonBar
- @see wxRibbonPanel
- @library{wxribbon}
- @category{ribbon}
- */
- class wxRibbonPage : public wxRibbonControl
- {
- public:
- /**
- Default constructor.
- With this constructor, Create() should be called in order to create
- the ribbon page.
- */
- wxRibbonPage();
- /**
- Constructs a ribbon page, which must be a child of a ribbon bar.
-
- @param parent
- Pointer to a parent wxRibbonBar (unlike most controls, a wxRibbonPage
- can only have wxRibbonBar as a parent).
- @param id
- Window identifier.
- @param label
- Label to be used in the wxRibbonBar's tab list for this page (if the
- ribbon bar is set to display labels).
- @param icon
- Icon to be used in the wxRibbonBar's tab list for this page (if the
- ribbon bar is set to display icons).
- @param style
- Currently unused, should be zero.
- */
- wxRibbonPage(wxRibbonBar* parent,
- wxWindowID id = wxID_ANY,
- const wxString& label = wxEmptyString,
- const wxBitmap& icon = wxNullBitmap,
- long style = 0);
- /**
- Destructor.
- */
- virtual ~wxRibbonPage();
-
- /**
- Create a ribbon page in two-step ribbon page construction.
- Should only be called when the default constructor is used, and
- arguments have the same meaning as in the full constructor.
- */
- bool Create(wxRibbonBar* parent,
- wxWindowID id = wxID_ANY,
- const wxString& label = wxEmptyString,
- const wxBitmap& icon = wxNullBitmap,
- long style = 0);
- /**
- Set the art provider to be used. Normally called automatically by
- wxRibbonBar when the page is created, or the art provider changed on the
- bar.
-
- The new art provider will be propagated to the children of the page.
- */
- void SetArtProvider(wxRibbonArtProvider* art);
- /**
- Get the icon used for the page in the ribbon bar tab area (only
- displayed if the ribbon bar is actually showing icons).
- */
- wxBitmap& GetIcon();
-
- /**
- Set the size of the page and the external scroll buttons (if any).
-
- When a page is too small to display all of its children, scroll buttons
- will appear (and if the page is sized up enough, they will disappear again).
- Slightly counter-intuitively, these buttons are created as siblings of the
- page rather than children of the page (to achieve correct cropping and
- paint ordering of the children and the buttons). When there are no scroll
- buttons, this function behaves the same as SetSize(), however when there
- are scroll buttons, it positions them at the edges of the given area, and
- then calls SetSize() with the remaining area.
-
- This is provided as a separate function to SetSize() rather than within
- the implementation of SetSize(), as interacting algorithms may not expect
- SetSize() to also set the size of siblings.
- */
- void SetSizeWithScrollButtonAdjustment(int x, int y, int width, int height);
-
- /**
- Expand a rectangle of the page to include external scroll buttons (if
- any). When no scroll buttons are shown, has no effect.
-
- @param[in,out] rect
- The rectangle to adjust. The width and height will not be reduced,
- and the x and y will not be increased.
- */
- void AdjustRectToIncludeScrollButtons(wxRect* rect) const;
-
- /**
- Dismiss the current externally expanded panel, if there is one.
-
- When a ribbon panel automatically minimises, it can be externally
- expanded into a floating window. When the user clicks a button in such
- a panel, the panel should generally re-minimise. Event handlers for
- buttons on ribbon panels should call this method to achieve this
- behaviour.
-
- @return @true if a panel was minimised, @false otherwise.
- */
- bool DismissExpandedPanel();
-
- /**
- Perform a full re-layout of all panels on the page.
-
- Should be called after panels are added to the page, or the sizing
- behaviour of a panel on the page changes (i.e. due to children being
- added to it). Usually called automatically when wxRibbonBar::Realize()
- is called.
-
- Will invoke wxRibbonPanel::Realize() for all child panels.
- */
- virtual bool Realize();
- /**
- Scroll the page by some amount up / down / left / right.
-
- When the page's children are too big to fit in the onscreen area given to
- the page, scroll buttons will appear, and the page can be programmatically
- scrolled. Positive values of @a lines will scroll right or down, while
- negative values will scroll up or left (depending on the direction in which
- panels are stacked). A line is equivalent to a constant number of pixels.
-
- @return @true if the page scrolled at least one pixel in the given
- direction, @false if it did not scroll.
-
- @see GetMajorAxis()
- @see ScrollPixels()
- @see ScrollSections()
- */
- virtual bool ScrollLines(int lines);
-
- /**
- Scroll the page by a set number of pixels up / down / left / right.
-
- When the page's children are too big to fit in the onscreen area given to
- the page, scroll buttons will appear, and the page can be programmatically
- scrolled. Positive values of @a lines will scroll right or down, while
- negative values will scroll up or left (depending on the direction in which
- panels are stacked).
-
- @return @true if the page scrolled at least one pixel in the given
- direction, @false if it did not scroll.
-
- @see GetMajorAxis()
- @see ScrollLines()
- @see ScrollSections()
- */
- bool ScrollPixels(int pixels);
- /**
- Scroll the page by an entire child section.
- The @a sections parameter value should be 1 or -1. This will scroll
- enough to uncover a partially visible child section or totally uncover
- the next child section that may not be visible at all.
- @return @true if the page scrolled at least one pixel in the given
- direction, @false if it did not scroll.
- @see ScrollPixels()
- @see ScrollSections()
- @since 2.9.5
- */
- bool ScrollSections(int sections);
- /**
- Get the direction in which ribbon panels are stacked within the page.
-
- This is controlled by the style of the containing wxRibbonBar, meaning
- that all pages within a bar will have the same major axis. As well as
- being the direction in which panels are stacked, it is also the axis in
- which scrolling will occur (when required).
-
- @return wxHORIZONTAL or wxVERTICAL (never wxBOTH).
- */
- wxOrientation GetMajorAxis() const;
- };
|