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
+ 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.
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.
@endStyleTable
@library{wxribbon}
{
public:
/**
- Default constructor.
+ Default constructor.
With this constructor, Create() should be called in order to create
the ribbon panel.
*/
/**
Constructs a ribbon panel.
-
+
@param parent
Pointer to a parent window, which is typically a wxRibbonPage,
though it can be any window.
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
*/
wxBitmap& GetMinimisedIcon();
const wxBitmap& GetMinimisedIcon() 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 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()
*/
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()
*/
if(minimised != m_minimised)
{
m_minimised = minimised;
- // Note that for sizers, this routine disallows the use of mixed shown
+ // Note that for sizers, this routine disallows the use of mixed shown
// and hidden controls
// TODO ? use some list of user set invisible children to restore status.
for (wxWindowList::compatibility_iterator node = GetChildren().GetFirst();
{
if(GetSizer())
{
- // we have no information on size change direction
+ // we have no information on size change direction
// so check both
wxSize size = GetMinNotMinimisedSize();
if(size.x > at_size.x || size.y > at_size.y)
{
// A panel never sizes continuously, even if all of its children can,
// as it would appear out of place along side non-continuous panels.
- return false;
+
+ // JS 2012-03-09: introducing wxRIBBON_PANEL_STRETCH to allow
+ // the panel to fill its parent page. For example we might have
+ // a list of styles in one of the pages, which should stretch to
+ // fill available space.
+ return (m_flags & wxRIBBON_PANEL_STRETCH) != 0;
}
wxSize wxRibbonPanel::DoGetNextSmallerSize(wxOrientation direction,
wxRibbonControl* ribbon_child = wxDynamicCast(child, wxRibbonControl);
if(ribbon_child != NULL)
{
- smaller = ribbon_child->GetNextSmallerSize(direction, child_relative);
+ smaller = ribbon_child->GetNextSmallerSize(direction, child_relative);
minimise = (smaller == child_relative);
}
}
if(GetSizer())
{
- // We could just let the sizer expand in flow direction but see comment
+ // We could just let the sizer expand in flow direction but see comment
// in IsSizingContinuous()
larger = GetPanelSizerBestSize();
// and adjust for page in non flow direction
}
// else use previously calculated m_smallest_unminimised_size
wxClientDC dc((wxRibbonPanel*) this);
- return m_art->GetPanelClientSize(dc,
- this,
+ return m_art->GetPanelClientSize(dc,
+ this,
m_smallest_unminimised_size,
NULL);
}
}
// Move sizer to new panel
- if(GetSizer())
+ if(GetSizer())
{
wxSizer* sizer = GetSizer();
- SetSizer(NULL, false);
+ SetSizer(NULL, false);
m_expanded_panel->SetSizer(sizer);
}