|Framework code is that which in principle can be shared and re-used between different applications. Sharing and re-use of open source programs is termed Connected Open Source. Audacity includes code that could be of potential use outside a sound editor, and which could be packaged as an application framework.
Useful cross-application code
- Do/Undo/Redo mechanism.
- Project open/close/autosave/recover/most-recently-used-list
- ShuttleGui mechanism to reduce size of code for creating wxWidgets dialogs, shuttling data in and out and to preferences.
- External scripting mechanism (experimental, CVS Head).
- Toolbar docking and sizing.
- Extended buttons, with mouse-over behaviour.
- Graphs, including annotation (labels) in a second track, zooming and panning.
- DraggableGridSizer (in Audacity-Extra project).
- Sliders with more than one slider on them, able to set a threshold on a graph and a threshold for a warning indicator beside a displayed value. (in Audacity-Extra project).
- Built-in screenshot tools.
- Welcome screen with html tips.
Use of code in other projects
Some of the above code is licensed under the wxWidgets license. This lets us include it in Audacity (which is itself released under the more restrictive license), while allowing it to be used by other projects on the same basis as all wxWidgets code. In time, some of this code can migrate to wxWidgets, or alternatively be packaged as an application framework that is useful for building other applications on wxWidgets.
The advantage to Audacity development is that improvements and enhancements to the infrastructure can be shared with other wxWidgets projects.