Difference between revisions of "GSoC 2008 - Transitioning To wxAUI"

From Audacity Wiki
Jump to: navigation, search
(Flexibility)
(moving some of intro into "Pros", adding to Category:Feature Planning (this seems to be both a project background page and a project page?))
Line 1: Line 1:
 
[[Image:GSoC.png|left|Summer of Code 2008 logo]]
 
[[Image:GSoC.png|left|Summer of Code 2008 logo]]
wxAUI (Advanced User Interface) is an addition to the wxWidgets GUI framework, which gives the user a  
+
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. This document should discuss the pros and cons of transitioning Audacity from its own implementation of floatable windows and toolbars to the wxAUI framework, and should show problems which may occur while doing it.
more modern and user-customizable interface with floatable windows.  
+
<br clear="all" />
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.  
 
  
 +
== Pros ==
  
 +
wxAUI is 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.
 +
 +
 +
== Cons==
  
 
[[Image:wxAUI1.png|thumb|wxAUI: docked toolbars]]
 
[[Image:wxAUI1.png|thumb|wxAUI: docked toolbars]]
===Global differences===
+
 
 +
==Global differences==
 
The main difference to normal wxWidgets programs is that you need a framemanager (wxAuiMan-  
 
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  
 
ager) which manages all frames and toolbars. Though you can recursively add managed windows  
Line 28: Line 27:
  
 
[[Image:wxAUI3.png|thumb|wxAUI: docking of floating toolbars]]
 
[[Image:wxAUI3.png|thumb|wxAUI: docking of floating toolbars]]
===Look and Feel===
+
==Look and Feel==
 
A major benefit from using wxAUI is the native look of the floating windows as well as the docked toolbars.
 
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
 
wxAUI uses native widgets to show the windows and therefore adapt very well into the native look and feel of the
Line 35: Line 34:
 
The docking of panels is not native and even not as nice as Audacitys way.
 
The docking of panels is not native and even not as nice as Audacitys way.
  
===Accessibility===  
+
==Accessibility==  
 
One important thing is the compliance of wxAUI with accessibility features in Audacity. wxAUI  
 
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
 
uses normal wxWindows for showing the pane's content, so all accessibility features controlled by the wxWindow
Line 43: Line 42:
 
which is read by screen readers.
 
which is read by screen readers.
  
===Flexibility===
+
==Flexibility==
 
When transition to a new framework this should give you more flexibility than your old implementation.  
 
When transition to a new framework this should give you more flexibility than your old implementation.  
 
At this area there are big impairments of wxAUI.  
 
At this area there are big impairments of wxAUI.  
Line 59: Line 58:
  
 
(to be continued...)
 
(to be continued...)
 +
 +
[[Category:Feature Planning]]

Revision as of 04:55, 27 June 2008

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. This document should discuss the pros and cons of transitioning Audacity from its own implementation of floatable windows and toolbars to the wxAUI framework, and should show problems which may occur while doing it.

Pros

wxAUI is 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.


Cons

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 floating 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.

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. At this area 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. Even with MaxSize() you can not stop that behavior, so you will end up in having streched toolbars.

wxAUI: a 'resizable' toolbar

There is a resizable attribute for panes, but it is not a resizable as used in the meter bar of Audacity. It makes the whole pane resizable, in case of toolbars the whole docking area of the toolbars, not only the toolbar itself. So with toolbars you get some strange behavior with the resizable attribute, e.g. you can not always drag toolbars to a floatable position. The resizable pane additionally always fills the whole left width of the docking area.


(to be continued...)