AUI

(31-Mar-2009)

AUI is an Advanced User Interface library that aims to implement "cutting-edge" interface usability and design features so developers can quickly and easily create beautiful and usable application interfaces.

Vision and Design Principles

AUI attempts to encapsulate the following aspects of the user interface:

  • Frame Management: Frame management provides the means to open, move and hide common controls that are needed to interact with the document, and allow these configurations to be saved into different perspectives and loaded at a later time.
  • Toolbars: Toolbars are a specialized subset of the frame management system and should behave similarly to other docked components. However, they also require additional functionality, such as "spring-loaded" rebar support, "chevron" buttons and end-user customizability.
  • Modeless Controls: Modeless controls expose a tool palette or set of options that float above the application content while allowing it to be accessed. Usually accessed by the toolbar, these controls disappear when an option is selected, but may also be "torn off" the toolbar into a floating frame of their own.
  • Look and Feel: Look and feel encompasses the way controls are drawn, both when shown statically as well as when they are being moved. This aspect of user interface design incorporates "special effects" such as transparent window dragging as well as frame animation.

What's New

Current wxAUI Version Tracked: wxWidgets 2.9.0 (SVN HEAD)

The wxPython AUI version fixes the following bugs or implement the following missing features (the list is not exhaustive):



Plus the following features:

  • AuiManager:

    1. Implementation of a simple minimize pane system: Clicking on this minimize button causes a new AuiToolBar to be created and added to the frame manager, (currently the implementation is such that panes at West will have a toolbar at the right, panes at South will have toolbars at the bottom etc...) and the pane is hidden in the manager. Clicking on the restore button on the newly created toolbar will result in the toolbar being removed and the original pane being restored;
    2. Panes can be docked on top of each other to form AuiNotebooks; AuiNotebooks tabs can be torn off to create floating panes;
    3. On Windows XP, use the nice sash drawing provided by XP while dragging the sash;
    4. Possibility to set an icon on docked panes;
    5. Possibility to draw a sash visual grip, for enhanced visualization of sashes;
    6. Implementation of a native docking art (ModernDockArt). Windows XP only, requires Mark Hammond’s pywin32 package (winxptheme);
    7. Possibility to set a transparency for floating panes (a la Paint .NET);
    8. Snapping the main frame to the screen in any positin specified by horizontal and vertical alignments;
    9. Snapping floating panes on left/right/top/bottom or any combination of directions, a la Winamp.

  • AuiNotebook:

    1. Implementation of the style AUI_NB_HIDE_ON_SINGLE_TAB, a la wx.lib.agw.flatnotebook;

    2. Implementation of the style AUI_NB_SMART_TABS, a la wx.lib.agw.flatnotebook;

    3. Implementation of the style AUI_NB_USE_IMAGES_DROPDOWN  which allows to show tab images on the tab dropdown menu instead of bare check menu items (a lawx.lib.agw.flatnotebook);

    4. 6 different tab arts are available, namely:

      • Default “glossy” theme (as in wx.aui.AuiNotebook)
      • Simple theme (as in wx.aui.AuiNotebook)
      • Firefox 2 theme
      • Visual Studio 2003 theme (VC71)
      • Visual Studio 2005 theme (VC81)
      • Google Chrome theme (only AUI_NB_TOP at the moment)
    5. Enabling/disabling tabs;

    6. Setting the colour of the tab’s text.


  • AuiToolBar:

    1. AUI_TB_PLAIN_BACKGROUND style that allows to easy setup a plain background to the AUI toolbar, without the need to override drawing methods. This style contrasts with the default behaviour of the wx.aui.AuiToolBar that draws a background gradient and this break the window design when putting it within a control that has margin between the borders and the toolbar (example: put wx.aui.AuiToolBar within a wx.StaticBoxSizer that has a plain background);
    2. AuiToolBar allow item alignment:   http://trac.wxwidgets.org/ticket/10174;
    3. AUIToolBar DrawButton() improvement:  http://trac.wxwidgets.org/ticket/10303;
    4. AuiToolBar automatically assign new id for tools:  http://trac.wxwidgets.org/ticket/10173;
    5. AuiToolBar Allow right-click on any kind of button:  http://trac.wxwidgets.org/ticket/10079;
    6. AuiToolBar idle update only when visible:  http://trac.wxwidgets.org/ticket/10075.

TODOs


  • Documentation, documentation and documentation;
  • Fix tabmdi.AuiMDIParentFrame and friends, they do not work correctly at present;
  • Allow specification of CaptionLeft() to AuiPaneInfo to show the caption bar of docked panes on the left instead of on the top (with caption text rotated by 90 degrees then). This is similar to what wxDockIt did;
  • Make developer-created AuiNotebooks and automatic (framemanager-created) AuiNotebooks behave the same way (undocking of tabs);
  • Find a way to dock panes in already floating panes (AuiFloatingFrames), as they already have their own AuiManager;
  • Add events for panes when they are about to float or to be docked (something like EVT_AUI_PANE_FLOATING/ED and EVT_AUI_PANE_DOCKING/ED);
  • Implement the 4-ways splitter behaviour for horizontal and vertical sashes if they intersect;
  • Extend tabart.py with more aui tab arts;
  • Allow controls in tabs (a la Eclipse) as described here:  http://lists.wxwidgets.org/pipermail/wxpython-users/2007-January/060451.html and especially here: http://archives.devshed.com/forums/attachment.php?attachmentid=4337;
  • Harmonize the AuiNotebook API with the wx.Notebook one, especially regarding setting/getting tab images (i.e., using wx.ImageList);
  • Implement AUI_NB_LEFT and AUI_NB_RIGHT tab locations in AuiNotebook, and support AUI_NB_BOTTOM for the Google Chrome tab art;
  • Move AuiDefaultToolBarArt into a separate module (as with tabart.py and dockart.py) and provide more arts for toolbars (maybe from wx.lib.agw.flatmenu?)
  • Support multiple-rows/multiple columns toolbars;
  • Integrate as much as possible with wx.lib.agw.flatmenu, from dropdown menus in AuiNotebook to toolbars and menu positioning;
  • Possibly handle minimization of panes in a different way (or provide an option to switch to another way of minimizing panes);
  • Clean up/speed up the code, especially time-consuming for-loops;
  • Possibly integrate wxPyRibbon (still on development), at least on Windows.




Download AUI

Python Files

Download AUIDocs

Sphinx-Based Documentation