| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: ribbon/panel.h
- // Purpose: interface of wxRibbonPage
- // Author: Peter Cawley
- // Licence: wxWindows licence
- ///////////////////////////////////////////////////////////////////////////////
- /**
- @class wxRibbonPanelEvent
- Event used to indicate various actions relating to a wxRibbonPanel.
- See wxRibbonPanel for available event types.
- @since 2.9.4
- @library{wxribbon}
- @category{events,ribbon}
- @see wxRibbonPanel
- */
- class wxRibbonPanelEvent : public wxCommandEvent
- {
- public:
- /**
- Constructor.
- */
- wxRibbonPanelEvent(wxEventType command_type = wxEVT_NULL,
- int win_id = 0,
- wxRibbonPanel* panel = NULL)
- /**
- Returns the panel relating to this event.
- */
- wxRibbonPanel* GetPanel();
- /**
- Sets the page relating to this event.
- */
- void SetPanel(wxRibbonPanel* page);
- };
- /**
- @class wxRibbonPanel
- Serves as a container for a group of (ribbon) controls. A wxRibbonPage will
- typically have panels for children, with the controls for that page placed
- on the panels.
- A panel adds a border and label to a group of controls, and can be
- minimised (either automatically to conserve space, or manually by the user).
- Non ribbon controls can be placed on a panel using wxSizers to manage
- layout. Panel size is governed by the sizer's minimum calculated size and
- the parent wxRibbonPage's dimensions. For functional and aesthetic reasons
- it is recommended that ribbon and non ribbon controls are not mixed in one
- panel.
- @sa wxRibbonPage
- @beginStyleTable
- @style{wxRIBBON_PANEL_DEFAULT_STYLE}
- Defined as no other flags set.
- @style{wxRIBBON_PANEL_NO_AUTO_MINIMISE}
- Prevents the panel from automatically minimising to conserve screen
- space.
- @style{wxRIBBON_PANEL_EXT_BUTTON}
- Causes an extension button to be shown in the panel's chrome (if the
- bar in which it is contained has wxRIBBON_BAR_SHOW_PANEL_EXT_BUTTONS
- set). The behaviour of this button is application controlled, but
- typically will show an extended drop-down menu relating to the
- panel.
- @style{wxRIBBON_PANEL_MINIMISE_BUTTON}
- Causes a (de)minimise button to be shown in the panel's chrome (if
- the bar in which it is contained has the
- wxRIBBON_BAR_SHOW_PANEL_MINIMISE_BUTTONS style set). This flag is
- typically combined with wxRIBBON_PANEL_NO_AUTO_MINIMISE to make a
- panel which the user always has manual control over when it
- minimises.
- @style{wxRIBBON_PANEL_STRETCH}
- Stretches a single panel to fit the parent page.
- @style{wxRIBBON_PANEL_FLEXIBLE}
- Allows the panel to size in both directions; currently only useful
- when a single wxRibbonToolBar is the child of the panel, particularly
- in vertical orientation where the number of rows is dependent on the
- amount of horizontal space available. Set the minimum and maximum
- toolbar rows to take full advantage of this wrapping behaviour.
- @endStyleTable
- @beginEventEmissionTable{wxRibbonPanelEvent}
- @event{EVT_RIBBONPANEL_EXTBUTTON_ACTIVATED(id, func)}
- Triggered when the user activate the panel extension button.
- @endEventTable
- @library{wxribbon}
- @category{ribbon}
- */
- class wxRibbonPanel : public wxRibbonControl
- {
- public:
- /**
- Default constructor.
- With this constructor, Create() should be called in order to create
- the ribbon panel.
- */
- wxRibbonPanel();
- /**
- Constructs a ribbon panel.
- @param parent
- Pointer to a parent window, which is typically a wxRibbonPage,
- though it can be any window.
- @param id
- Window identifier.
- @param label
- Label to be used in the wxRibbonPanel's chrome.
- @param minimised_icon
- Icon to be used in place of the panel's children when the panel
- is minimised.
- @param pos
- The initial position of the panel. Not relevant when the parent is
- a ribbon page, as the position and size of the panel will be
- dictated by the page.
- @param size
- The initial size of the panel. Not relevant when the parent is a
- ribbon page, as the position and size of the panel will be
- dictated by the page.
- @param style
- Style flags for the panel.
- */
- wxRibbonPanel(wxWindow* parent,
- wxWindowID id = wxID_ANY,
- const wxString& label = wxEmptyString,
- const wxBitmap& minimised_icon = wxNullBitmap,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxRIBBON_PANEL_DEFAULT_STYLE);
- /**
- Create a ribbon panel in two-step ribbon panel construction.
- Should only be called when the default constructor is used, and
- arguments have the same meaning as in the full constructor.
- */
- bool Create(wxWindow* parent,
- wxWindowID id = wxID_ANY,
- const wxString& label = wxEmptyString,
- const wxBitmap& icon = wxNullBitmap,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxRIBBON_PANEL_DEFAULT_STYLE);
- /**
- Destructor.
- */
- virtual ~wxRibbonPanel();
- /**
- Get the bitmap to be used in place of the panel children when it is
- minimised.
- */
- wxBitmap& GetMinimisedIcon();
- const wxBitmap& GetMinimisedIcon() const;
- /**
- Test if the panel has an extension button.
- Such button is shown in the top right corner of the panel if
- @c wxRIBBON_PANEL_EXT_BUTTON style is used for it.
- @since 2.9.4
- @return @true if the panel and its wxRibbonBar allow it in their styles.
- */
- virtual bool HasExtButton() const;
- /**
- Query if the panel is currently minimised.
- */
- bool IsMinimised() const;
- /**
- Query if the panel would be minimised at a given size.
- */
- bool IsMinimised(wxSize at_size) const;
- /**
- Query is the mouse is currently hovered over the panel.
- @return @true if the cursor is within the bounds of the panel (i.e.
- hovered over the panel or one of its children), @false otherwise.
- */
- bool IsHovered() const;
- /**
- Query if the mouse is currently hovered over the extension button.
- Extension button is only shown for panels with @c
- wxRIBBON_PANEL_EXT_BUTTON style.
- @since 2.9.4
- */
- bool IsExtButtonHovered() const;
- /**
- Query if the panel can automatically minimise itself at small sizes.
- */
- bool CanAutoMinimise() const;
- /**
- Show the panel externally expanded.
- When a panel is minimised, it can be shown full-size in a pop-out
- window, which is referred to as being (externally) expanded. Note that
- when a panel is expanded, there exist two panels - the original panel
- (which is referred to as the dummy panel) and the expanded panel. The
- original is termed a dummy as it sits in the ribbon bar doing nothing,
- while the expanded panel holds the panel children.
- @return @true if the panel was expanded, @false if it was not (possibly
- due to it not being minimised, or already being expanded).
- @see HideExpanded()
- @see GetExpandedPanel()
- */
- bool ShowExpanded();
- /**
- Hide the panel's external expansion.
- @return @true if the panel was un-expanded, @false if it was not
- (normally due to it not being expanded in the first place).
- @see HideExpanded()
- @see GetExpandedPanel()
- */
- bool HideExpanded();
- /**
- Set the art provider to be used. Normally called automatically by
- wxRibbonPage when the panel is created, or the art provider changed on the
- page.
- The new art provider will be propagated to the children of the panel.
- */
- void SetArtProvider(wxRibbonArtProvider* art);
- /**
- Realize all children of the panel.
- */
- bool Realize();
- /**
- Get the dummy panel of an expanded panel.
- Note that this should be called on an expanded panel to get the dummy
- associated with it - it will return NULL when called on the dummy
- itself.
- @see ShowExpanded()
- @see GetExpandedPanel()
- */
- wxRibbonPanel* GetExpandedDummy();
- /**
- Get the expanded panel of a dummy panel.
- Note that this should be called on a dummy panel to get the expanded
- panel associated with it - it will return NULL when called on the
- expanded panel itself.
- @see ShowExpanded()
- @see GetExpandedDummy()
- */
- wxRibbonPanel* GetExpandedPanel();
- };
|