initial commit
Signed-off-by: Peter Siegmund <mars3142@noreply.mars3142.dev>
This commit is contained in:
306
libs/wxWidgets-3.3.1/interface/wx/ribbon/panel.h
Normal file
306
libs/wxWidgets-3.3.1/interface/wx/ribbon/panel.h
Normal file
@@ -0,0 +1,306 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 = nullptr);
|
||||
|
||||
/**
|
||||
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.
|
||||
|
||||
A wxRibbonPage can show or hide its panels to offer a dynamic experience
|
||||
for the end user. For example, a page can hide certain panels and show others
|
||||
when the user interacts with other elements in the application. As an example
|
||||
of toggling the visibility of a panel:
|
||||
|
||||
@code
|
||||
wxRibbonPanel* panel = m_ribbon->GetPage(0)->GetPanelById(ID_EDITOR_PANEL);
|
||||
if ( panel != nullptr )
|
||||
{
|
||||
panel->Show(!panel->IsShown());
|
||||
}
|
||||
// Update the UI
|
||||
m_ribbon->Realise();
|
||||
m_ribbon->Layout();
|
||||
@endcode
|
||||
|
||||
@see 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();
|
||||
};
|
||||
Reference in New Issue
Block a user