GSoC 2008 - Transitioning To wxAUI

From Audacity Wiki
Revision as of 23:42, 26 June 2008 by Hildensia (talk | contribs)
Jump to: navigation, search
Summer of Code 2008 logo
wxAUI (Advanced User Interface) is an addition to the wxWidgets GUI framework, which

gives the user a more modern and user-customizable interface with floatable windows. It is also themeable and specific configurations of controls can be saved. Since the workflow of an audio editor like Audacity is largely dependent on the task the user is performing Audacity could benefit a lot from having a customizable user interface. The natural way of achieving this is using the usual framework and since wxAUI is integrated into wxWidgets in its newer versions wxAUI is the natural way. Today Audacity uses its own implemtation of floatable windows and toolbars. This document should discuss the pros and cons of transitioning Audacity to the wxAUI framework and should show problems which may occur while doing it.


wxAUI: docked toolbars

Global differences

The main difference to normal wxWidgets programs is that you need a framemanager (wxAuiMan- ager) which manages all frames and toolbars. Though you can recursively add managed windows in Audacity one global wxAuiManager should do the job. After creating a wxAuiManager you have to add panes to it. This is a similar concept to sizers, which are widely used in Audacity. A pane is simply a wxWindow or a derived class. Though you can recursively add managed windows in Audacity one global wxAuiManager should do the job. Each Pane can have a lot of attributes, which are defined in a special wxAuiPaneInfo Object.

All this is a very perspicuous concept, which is easy to use. Its documentation is well done, as most of the wxWidgets docs.


wxAUI: docking of toolbars

Look and Feel

A major benefit from using wxAUI is the native look of the floating windows as well as the docked toolbars. wxAUI uses native widgets to show the windows and therefore adapt very well into the native look and feel of the platforms. Compared to the user-drawn toolbars of Audacity this would be much more common to the end-user.

The docking of panels is not native and even not as nice as Audacitys way.

wxAUI: named floating toolbars

Accessibility

One important thing is the compliance of wxAUI with accessibility features in Audacity. wxAUI uses normal wxWindows for showing the pane's content, so all accessibility features controlled by the wxWindow will work without any major changes. Most of them will even work without any change at all.

Screen reader functionality in fact will benefit from the use of wxAUI, since control-panels can be named, which is read by screen readers.

Flexibility

When transition to a new framework this should give you more flexibility than your old implementation.

There are big impairments of wxAUI. There is no simple way to create multiple-row panes. When ever you drag a smaler pane beneath a multiple-row pane it is expanded to the height of the biggest pane in the row.