AGW Logo

agw_title aui.framemanager


description Description

framemanager.py is the central module of the AUI class framework.

AuiManager manages the panes associated with it for a particular wx.Frame, using a pane’s AuiPaneInfo information to determine each pane’s docking and floating behavior. AuiManager uses wxPython’ 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.

AuiManager works as follows: the programmer adds panes to the class, or makes changes to existing pane properties (dock position, floating state, show state, etc...). To apply these changes, AuiManager’s Update function is called. This batch processing can be used to avoid flicker, by modifying more than one pane at a time, and then “committing” all of the changes at once by calling Update().

Panes can be added quite easily:

text1 = wx.TextCtrl(self, -1)
text2 = wx.TextCtrl(self, -1)
self._mgr.AddPane(text1, AuiPaneInfo().Left().Caption("Pane Number One"))
self._mgr.AddPane(text2, AuiPaneInfo().Bottom().Caption("Pane Number Two"))

self._mgr.Update()

Later on, the positions can be modified easily. The following will float an existing pane in a tool window:

self._mgr.GetPane(text1).Float()

layers Layers, Rows and Directions, Positions

Inside AUI, the docking layout is figured out by checking several pane parameters. Four of these are important for determining where a pane will end up.

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.

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 it’s 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.

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 in row 0, and the second in row 1. Rows can also be used on vertically docked panes.

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 AUI sample (AUI.py).

Module author: Andrea Gavana <andrea.gavana@gmail.com>


hierarchy Inheritance Diagram

Inheritance diagram for module: aui.framemanager

Inheritance diagram of aui.framemanager.AuiCenterDockingGuide, aui.framemanager.AuiDockInfo, aui.framemanager.AuiDockUIPart, aui.framemanager.AuiDockingGuide, aui.framemanager.AuiDockingGuideInfo, aui.framemanager.AuiDockingGuideWindow, aui.framemanager.AuiDockingHintWindow, aui.framemanager.AuiFloatingFrame, aui.framemanager.AuiManager, aui.framemanager.AuiManagerEvent, aui.framemanager.AuiManager_DCP, aui.framemanager.AuiPaneButton, aui.framemanager.AuiPaneInfo, aui.framemanager.AuiSingleDockingGuide


svn_main SVN Revisions

A graphical representation of the SVN commits in the last year.

Click on any date in the picture to jump to that particular revision page, containing information about committers, log messages and SVN diffs.

framemanager

Revision Graph For framemanager


2to3 Python 3 Issues (via 2to3)

No issues have been detected by 2to3.py.