291 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			291 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        ribbon/panel.h
 | |
| // Purpose:     interface of wxRibbonPage
 | |
| // Author:      Peter Cawley
 | |
| // Licence:     wxWindows licence
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| 
 | |
| enum wxRibbonPanelOption
 | |
| {
 | |
|     wxRIBBON_PANEL_NO_AUTO_MINIMISE,
 | |
|     wxRIBBON_PANEL_EXT_BUTTON,
 | |
|     wxRIBBON_PANEL_MINIMISE_BUTTON,
 | |
|     wxRIBBON_PANEL_STRETCH,
 | |
|     wxRIBBON_PANEL_FLEXIBLE,
 | |
|     wxRIBBON_PANEL_DEFAULT_STYLE
 | |
| };
 | |
| 
 | |
| 
 | |
| /**
 | |
|     @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);
 | |
| };
 | |
| 
 | |
| wxEventType wxEVT_RIBBONPANEL_EXTBUTTON_ACTIVATED;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     @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();
 | |
| };
 |