Status: This specification is in drafting. Please feel free to add comments.
Mixxx has used the same old skinning engine for a long time now. Although the current skinning engine is usable, it is not very flexible.
See description of XML format here: Creating Skins
Supported Widgets
Metadata/Manifest
Base Widget
Widget Layout
Widgets
Given the above requirements, list various proposals for skin formats here:
It might be possible to describe a Mixxx skin by using pure QML. According to http://doc.qt.nokia.com/4.7-snapshot/qml-extending-tutorial-index.html QML can be extended to match our own language concepts. In other words, we may extend our existing widget classes in a way they can be accessed by QML,see http://doc.qt.nokia.com/4.7-snapshot/declarative-tutorials-extending-chapter1-basics.html for a simple example.
Tobias Rafreider has created a branch for that purpose.
More information about Qt Quick and QML may be found on http://doc.qt.nokia.com/4.7-snapshot/declarativeui.html
I found a nice example of QML usage for a DJ Software: http://www.avid.com/US/products/Torq-2 — Daniel Lindenfelser 2011/01/21 10:51
There was a productive discussion that happened in the forums: http://mixxx.org/forums/viewtopic.php?f=1&t=729 Please check the forums for additional information.
Feel free to add your cons and pros for any of the ideas to this page
The current ideas are:
Qt 4 is the cross-platform framework that is used for many things by Mixxx itself.
For the creation of a skinning system, Qt supports many things: layouts, style sheets, vector graphics, raster/OpenVG/OpenGL rendering, useful low-level painting system, XML, animation framework (since 4.6 or as official add-on), declarative UI technology (since 4.6)…
By combining some of these technologies it should be possible to create an advanced skinning engine for Mixxx.
Supporting SVG as an image format does not mean we cannot do the Qt4 based skinning engine approach above. We can support a number of formats, including SVG. Making an exclusively vector-based skinning engine is too limiting for skin designers.
A vector graphics based GUI (like with SVG files) which would allow dynamic resizing and storage efficiency.
Libnui is a cross-platform 3D accelerated GUI library. More information is available at http://www.libnui.net/