// Purpose: interface of wxAuiManager
// Author: wxWidgets team
// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
- @todo TOWRITE
+ @todo wxAuiPaneInfo dock direction types used with wxAuiManager.
*/
enum wxAuiManagerDock
{
/**
- @todo TOWRITE
+ @todo wxAuiManager behavior style flags.
*/
enum wxAuiManagerOption
{
wxAUI_MGR_RECTANGLE_HINT = 1 << 5,
wxAUI_MGR_HINT_FADE = 1 << 6,
wxAUI_MGR_NO_VENETIAN_BLINDS_FADE = 1 << 7,
+ wxAUI_MGR_LIVE_RESIZE = 1 << 8,
wxAUI_MGR_DEFAULT = wxAUI_MGR_ALLOW_FLOATING |
wxAUI_MGR_TRANSPARENT_HINT |
@class wxAuiManager
wxAuiManager is the central class of the wxAUI class framework.
- See also @ref overview_aui.
wxAuiManager manages the panes associated with it for a particular wxFrame,
using a pane's wxAuiPaneInfo information to determine each pane's docking
and floating behavior.
- wxAuiManager uses wxWidgets' sizer mechanism to plan the layout of each frame.
- It uses a replaceable dock art class to do all drawing, so all drawing is
- localized in one area, and may be customized depending on an application's
- specific needs.
+ wxAuiManager uses wxWidgets' sizer mechanism to plan the layout of each
+ frame. It uses a replaceable dock art class to do all drawing, so all
+ drawing is localized in one area, and may be customized depending on an
+ application's specific needs.
wxAuiManager works as follows: the programmer adds panes to the class,
or makes changes to existing pane properties (dock position, floating
@code
wxTextCtrl* text1 = new wxTextCtrl(this, -1);
wxTextCtrl* text2 = new wxTextCtrl(this, -1);
- m_mgr.AddPane(text1, wxLEFT, wxT("Pane Caption"));
- m_mgr.AddPane(text2, wxBOTTOM, wxT("Pane Caption"));
+ m_mgr.AddPane(text1, wxLEFT, "Pane Caption");
+ m_mgr.AddPane(text2, wxBOTTOM, "Pane Caption");
m_mgr.Update();
@endcode
@section auimanager_layers Layers, Rows and Directions, Positions
Inside wxAUI, the docking layout is figured out by checking several pane
- parameters. Four of these are important for determining where a pane will end up:
-
- @li Direction: Each docked pane has a direction, Top, Bottom, Left, Right, or Center.
- This is fairly self-explanatory. The pane will be placed in the location specified
- by this variable.
- @li Position: More than one pane can be placed inside of a dock. Imagine two panes
- being docked on the left side of a window. One pane can be placed over another.
- In proportionally managed docks, the pane position indicates its sequential position,
- starting with zero. So, in our scenario with two panes docked on the left side,
- the top pane in the dock would have position 0, and the second one would occupy
+ parameters. Four of these are important for determining where a pane will
+ end up:
+
+ @li Direction: Each docked pane has a direction, Top, Bottom, Left, Right,
+ or Center. This is fairly self-explanatory. The pane will be placed in
+ the location specified by this variable.
+ @li Position: More than one pane can be placed inside of a dock. Imagine
+ two panes being docked on the left side of a window. One pane can be
+ placed over another. In proportionally managed docks, the pane
+ position indicates its sequential position, starting with zero. So, in
+ our scenario with two panes docked on the left side, the top pane in
+ the dock would have position 0, and the second one would occupy
position 1.
- @li Row: A row can allow for two docks to be placed next to each other. One of the
- most common places for this to happen is in the toolbar. Multiple toolbar rows
- are allowed, the first row being row 0, and the second row 1. Rows can also be
- used on vertically docked panes.
- @li Layer: A layer is akin to an onion. Layer 0 is the very center of the managed pane.
- Thus, if a pane is in layer 0, it will be closest to the center window (also
- sometimes known as the "content window"). Increasing layers "swallow up" all
- layers of a lower value. This can look very similar to multiple rows, but is
- different because all panes in a lower level yield to panes in higher levels.
- The best way to understand layers is by running the wxAUI sample.
-
+ @li Row: A row can allow for two docks to be placed next to each other.
+ One of the most common places for this to happen is in the toolbar.
+ Multiple toolbar rows are allowed, the first row being row 0, and the
+ second row 1. Rows can also be used on vertically docked panes.
+ @li Layer: A layer is akin to an onion. Layer 0 is the very center of the
+ managed pane. Thus, if a pane is in layer 0, it will be closest to the
+ center window (also sometimes known as the "content window").
+ Increasing layers "swallow up" all layers of a lower value. This can
+ look very similar to multiple rows, but is different because all panes
+ in a lower level yield to panes in higher levels. The best way to
+ understand layers is by running the wxAUI sample.
+
+
+ @beginEventEmissionTable{wxAuiManagerEvent}
+ @event{EVT_AUI_PANE_BUTTON(func)}
+ Triggered when any button is pressed for any docked panes.
+ @event{EVT_AUI_PANE_CLOSE(func)}
+ Triggered when a docked or floating pane is closed.
+ @event{EVT_AUI_PANE_MAXIMIZE(func)}
+ Triggered when a pane is maximized.
+ @event{EVT_AUI_PANE_RESTORE(func)}
+ Triggered when a pane is restored.
+ @event{EVT_AUI_RENDER(func)}
+ This event can be caught to override the default renderer in order to
+ custom draw your wxAuiManager window (not recommended).
+ @endEventTable
@library{wxbase}
@category{aui}
- @see wxAuiPaneInfo, wxAuiDockArt
+ @see @ref overview_aui, wxAuiNotebook, wxAuiDockArt, wxAuiPaneInfo
*/
class wxAuiManager : public wxEvtHandler
{
interface. If the lookup failed (meaning the pane could not be found in the
manager), a call to the returned wxAuiPaneInfo's IsOk() method will return @false.
*/
- wxAuiPaneInfo GetPane(wxWindow* window);
- wxAuiPaneInfo GetPane(const wxString& name);
+ wxAuiPaneInfo& GetPane(wxWindow* window);
+ wxAuiPaneInfo& GetPane(const wxString& name);
//@}
/**
This method is used to specify wxAuiManager's settings flags. @a flags
specifies options which allow the frame management behavior to be modified.
*/
- void SetFlags(int flags);
+ void SetFlags(unsigned int flags);
/**
Called to specify the frame or window which is to be managed by wxAuiManager.
BestSize() sets the ideal size for the pane. The docking manager will attempt
to use this size as much as possible when docking or floating the pane.
*/
- wxAuiPaneInfo BestSize(const wxSize& size);
- wxAuiPaneInfo BestSize(int x, int y);
+ wxAuiPaneInfo& BestSize(const wxSize& size);
+ wxAuiPaneInfo& BestSize(int x, int y);
//@}
/**
right, bottom) are subtracted from the layout.
This is the same thing as calling Direction(wxAUI_DOCK_CENTRE).
*/
- wxAuiPaneInfo Centre();
- wxAuiPaneInfo Center();
+ wxAuiPaneInfo& Centre();
+ wxAuiPaneInfo& Center();
//@}
//@{
This function provides an easy way of preparing a pane to be displayed in
the center dock position.
*/
- wxAuiPaneInfo CentrePane();
- wxAuiPaneInfo CenterPane();
+ wxAuiPaneInfo& CentrePane();
+ wxAuiPaneInfo& CenterPane();
//@}
/**
/**
FloatingPosition() sets the position of the floating pane.
*/
- wxAuiPaneInfo FloatingPosition(const wxPoint& pos);
- wxAuiPaneInfo FloatingPosition(int x, int y);
+ wxAuiPaneInfo& FloatingPosition(const wxPoint& pos);
+ wxAuiPaneInfo& FloatingPosition(int x, int y);
//@}
//@{
/**
FloatingSize() sets the size of the floating pane.
*/
- wxAuiPaneInfo FloatingSize(const wxSize& size);
- wxAuiPaneInfo FloatingSize(int x, int y);
+ wxAuiPaneInfo& FloatingSize(const wxSize& size);
+ wxAuiPaneInfo& FloatingSize(int x, int y);
//@}
/**
/**
MaxSize() sets the maximum size of the pane.
*/
- wxAuiPaneInfo MaxSize(const wxSize& size);
- wxAuiPaneInfo MaxSize(int x, int y);
+ wxAuiPaneInfo& MaxSize(const wxSize& size);
+ wxAuiPaneInfo& MaxSize(int x, int y);
//@}
/**
MinSize() sets the minimum size of the pane. Please note that this is only
partially supported as of this writing.
*/
- wxAuiPaneInfo MinSize(const wxSize& size);
- wxAuiPaneInfo MinSize(int x, int y);
+ wxAuiPaneInfo& MinSize(const wxSize& size);
+ wxAuiPaneInfo& MinSize(int x, int y);
//@}
/**
SetFlag() turns the property given by flag on or off with the option_state
parameter.
*/
- wxAuiPaneInfo& SetFlag(unsigned int flag, bool option_state);
+ wxAuiPaneInfo& SetFlag(int flag, bool option_state);
/**
Show() indicates that a pane should be shown.
wxAuiPaneInfo& operator=(const wxAuiPaneInfo& c);
};
+
+
+/**
+ @class wxAuiManagerEvent
+
+ Event used to indicate various actions taken with wxAuiManager.
+
+ See wxAuiManager for available event types.
+
+ @beginEventTable{wxAuiManagerEvent}
+ @event{EVT_AUI_PANE_BUTTON(func)}
+ Triggered when any button is pressed for any docked panes.
+ @event{EVT_AUI_PANE_CLOSE(func)}
+ Triggered when a docked or floating pane is closed.
+ @event{EVT_AUI_PANE_MAXIMIZE(func)}
+ Triggered when a pane is maximized.
+ @event{EVT_AUI_PANE_RESTORE(func)}
+ Triggered when a pane is restored.
+ @event{EVT_AUI_RENDER(func)}
+ This event can be caught to override the default renderer in order to
+ custom draw your wxAuiManager window (not recommended).
+ @endEventTable
+
+ @library{wxaui}
+ @category{events,aui}
+
+ @see wxAuiManager, wxAuiPaneInfo
+*/
+class wxAuiManagerEvent : public wxEvent
+{
+public:
+ /**
+ Constructor.
+ */
+ wxAuiManagerEvent(wxEventType type = wxEVT_NULL);
+
+ /**
+ @return @true if this event can be vetoed.
+
+ @see Veto()
+ */
+ bool CanVeto();
+
+ /**
+ @return The ID of the button that was clicked.
+ */
+ int GetButton();
+
+ /**
+ @todo What is this?
+ */
+ wxDC* GetDC();
+
+ /**
+ @return @true if this event was vetoed.
+
+ @see Veto()
+ */
+ bool GetVeto();
+
+ /**
+ @return The wxAuiManager this event is associated with.
+ */
+ wxAuiManager* GetManager();
+
+ /**
+ @return The pane this event is associated with.
+ */
+ wxAuiPaneInfo* GetPane();
+
+ /**
+ Sets the ID of the button clicked that triggered this event.
+ */
+ void SetButton(int button);
+
+ /**
+ Sets whether or not this event can be vetoed.
+ */
+ void SetCanVeto(bool can_veto);
+
+ /**
+ @todo What is this?
+ */
+ void SetDC(wxDC* pdc);
+
+ /**
+ Sets the wxAuiManager this event is associated with.
+ */
+ void SetManager(wxAuiManager* manager);
+
+ /**
+ Sets the pane this event is associated with.
+ */
+ void SetPane(wxAuiPaneInfo* pane);
+
+ /**
+ Cancels the action indicated by this event if CanVeto() is @true.
+ */
+ void Veto(bool veto = true);
+};
+