]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/aui/framemanager.h
Make wxBitmap::ConvertToDisabled() available in all ports.
[wxWidgets.git] / interface / wx / aui / framemanager.h
index 6e6d5ad581272802de1d74f345e723f60a76afa9..36855b16a164475c384378851ec6357dc7256265 100644 (file)
@@ -3,12 +3,12 @@
 // 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
 {
@@ -23,7 +23,7 @@ enum wxAuiManagerDock
 
 
 /**
-    @todo TOWRITE
+    @todo wxAuiManager behavior style flags.
 */
 enum wxAuiManagerOption
 {
@@ -35,6 +35,7 @@ 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 |
@@ -46,16 +47,15 @@ enum wxAuiManagerOption
     @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
@@ -69,8 +69,8 @@ enum wxAuiManagerOption
     @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
 
@@ -85,33 +85,50 @@ enum wxAuiManagerOption
     @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
 {
@@ -202,8 +219,8 @@ public:
         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);
     //@}
 
     /**
@@ -365,8 +382,8 @@ public:
         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);
     //@}
 
     /**
@@ -399,8 +416,8 @@ public:
         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();
     //@}
 
     //@{
@@ -410,8 +427,8 @@ public:
         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();
     //@}
 
     /**
@@ -478,16 +495,16 @@ public:
     /**
         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);
     //@}
 
     /**
@@ -516,10 +533,10 @@ public:
     bool HasCloseButton() const;
 
     /**
-        HasFlag() returns @true if the the property specified by flag is active for the
-        pane.
+        HasFlag() returns @true if the property specified by flag is active for
+        the pane.
     */
-    bool HasFlag(unsigned int flag) const;
+    bool HasFlag(int flag) const;
 
     /**
         HasGripper() returns @true if the pane displays a gripper.
@@ -556,11 +573,22 @@ public:
     /**
         IsBottomDockable() returns @true if the pane can be docked at the bottom of the
         managed frame.
+
+        @see IsDockable()
     */
     bool IsBottomDockable() const;
 
     /**
-        IsDocked() returns @true if the pane is docked.
+        Returns @true if the pane can be docked at any side.
+
+        @see IsTopDockable(), IsBottomDockable(), IsLeftDockable(), IsRightDockable()
+
+        @since 2.9.2
+    */
+    bool IsDockable() const;
+
+    /**
+        IsDocked() returns @true if the pane is currently docked.
     */
     bool IsDocked() const;
 
@@ -583,6 +611,8 @@ public:
     /**
         IsLeftDockable() returns @true if the pane can be docked on the left of the
         managed frame.
+
+        @see IsDockable()
     */
     bool IsLeftDockable() const;
 
@@ -606,6 +636,8 @@ public:
     /**
         IsRightDockable() returns @true if the pane can be docked on the right of the
         managed frame.
+
+        @see IsDockable()
     */
     bool IsRightDockable() const;
 
@@ -622,6 +654,8 @@ public:
     /**
         IsTopDockable() returns @true if the pane can be docked at the top of the
         managed frame.
+
+        @see IsDockable()
     */
     bool IsTopDockable() const;
 
@@ -648,8 +682,8 @@ public:
     /**
         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);
     //@}
 
     /**
@@ -662,8 +696,8 @@ public:
         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);
     //@}
 
     /**
@@ -730,7 +764,7 @@ public:
         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.
@@ -767,3 +801,104 @@ public:
     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);
+};
+