<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=User%3AMandingo</id>
	<title>User:Mandingo - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=User%3AMandingo"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=User:Mandingo&amp;action=history"/>
	<updated>2026-10-28T01:35:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=User:Mandingo&amp;diff=28012&amp;oldid=prev</id>
		<title>Mandingo: Blanked the page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=User:Mandingo&amp;diff=28012&amp;oldid=prev"/>
		<updated>2011-06-25T17:48:26Z</updated>

		<summary type="html">&lt;p&gt;Blanked the page&lt;/p&gt;
&lt;a href=&quot;http://wiki.linuxmce.org/index.php?title=User:Mandingo&amp;amp;diff=28012&amp;amp;oldid=28011&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Mandingo</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=User:Mandingo&amp;diff=28011&amp;oldid=prev</id>
		<title>Mandingo: Created page with &quot;skinning_engine      *       Skinning Engine           o             Summary and Rationale           o             Current System           o             Requirements           o...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=User:Mandingo&amp;diff=28011&amp;oldid=prev"/>
		<updated>2011-06-25T17:46:23Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;skinning_engine      *       Skinning Engine           o             Summary and Rationale           o             Current System           o             Requirements           o...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;skinning_engine&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
      Skinning Engine&lt;br /&gt;
          o&lt;br /&gt;
            Summary and Rationale&lt;br /&gt;
          o&lt;br /&gt;
            Current System&lt;br /&gt;
          o&lt;br /&gt;
            Requirements&lt;br /&gt;
          o&lt;br /&gt;
            Skinning Engine Proposals&lt;br /&gt;
          o&lt;br /&gt;
            How QT Quick and QML might be used in QT 4.7.x&lt;br /&gt;
          o&lt;br /&gt;
            Forum discussion&lt;br /&gt;
          o&lt;br /&gt;
            Ideas for Skinning Engines&lt;br /&gt;
          o&lt;br /&gt;
            Qt 4 based Skinning Engine&lt;br /&gt;
&lt;br /&gt;
Skinning Engine&lt;br /&gt;
Summary and Rationale&lt;br /&gt;
&lt;br /&gt;
Status: This specification is in drafting. Please feel free to add comments.&lt;br /&gt;
&lt;br /&gt;
Supported Widgets&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
      Push-buttons&lt;br /&gt;
    *&lt;br /&gt;
      Multi-state push buttons&lt;br /&gt;
    *&lt;br /&gt;
      Sliders&lt;br /&gt;
          o&lt;br /&gt;
            horizontal or vertical&lt;br /&gt;
    *&lt;br /&gt;
      Text labels&lt;br /&gt;
    *&lt;br /&gt;
      Knobs&lt;br /&gt;
    *&lt;br /&gt;
      VU meter&lt;br /&gt;
    *&lt;br /&gt;
      Embed library widget&lt;br /&gt;
    *&lt;br /&gt;
      Status light&lt;br /&gt;
&lt;br /&gt;
Requirements&lt;br /&gt;
&lt;br /&gt;
Metadata/Manifest&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
      Include the following metadata:&lt;br /&gt;
          o&lt;br /&gt;
            author&lt;br /&gt;
          o&lt;br /&gt;
            title&lt;br /&gt;
          o&lt;br /&gt;
            description&lt;br /&gt;
          o&lt;br /&gt;
            language&lt;br /&gt;
          o&lt;br /&gt;
            skin version&lt;br /&gt;
          o&lt;br /&gt;
            license&lt;br /&gt;
          o&lt;br /&gt;
            update-URL&lt;br /&gt;
          o&lt;br /&gt;
            suggested screen resolution&lt;br /&gt;
          o&lt;br /&gt;
            min screen resolution&lt;br /&gt;
&lt;br /&gt;
Base Widget&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
      Nameable&lt;br /&gt;
    *&lt;br /&gt;
      Position, Size&lt;br /&gt;
          o&lt;br /&gt;
            Potentially offer absolute positioning mode for legacy support, but in general deprecate absolute positioning.&lt;br /&gt;
          o&lt;br /&gt;
            Use size-hints (max-min size) instead of single size.&lt;br /&gt;
    *&lt;br /&gt;
      Tooltip&lt;br /&gt;
    *&lt;br /&gt;
      Connections&lt;br /&gt;
          o&lt;br /&gt;
            EmitOnDownPress and EmitOnRelease properties (to obviate need for double-connections)&lt;br /&gt;
          o&lt;br /&gt;
            Choose mouse button.&lt;br /&gt;
    *&lt;br /&gt;
      Tab ordering?&lt;br /&gt;
&lt;br /&gt;
Widget Layout&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
      Widget Grouping&lt;br /&gt;
          o&lt;br /&gt;
            Nameable&lt;br /&gt;
          o&lt;br /&gt;
            Have a size hint and optionally an absolute position.&lt;br /&gt;
          o&lt;br /&gt;
            Provide a hide/show-control. Uses the group&amp;#039;s name.&lt;br /&gt;
    *&lt;br /&gt;
      Layouts&lt;br /&gt;
          o&lt;br /&gt;
            Allow a widget group to have a layout assigned to it.&lt;br /&gt;
    *&lt;br /&gt;
      Windows&lt;br /&gt;
          o&lt;br /&gt;
            Windows are the root of each hierarchy of widgets&lt;br /&gt;
    *&lt;br /&gt;
      Widget Templates&lt;br /&gt;
          o&lt;br /&gt;
            Ability to specify some template for a widget for saving time, sanity.&lt;br /&gt;
&lt;br /&gt;
Widgets&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
      Buttons&lt;br /&gt;
          o&lt;br /&gt;
            Allow multi-state button or push-button.&lt;br /&gt;
          o&lt;br /&gt;
            Support pixmaps for each button position&lt;br /&gt;
          o&lt;br /&gt;
            Allow non-pixmap buttons. Use QSS to styling.&lt;br /&gt;
    *&lt;br /&gt;
      Slider&lt;br /&gt;
          o&lt;br /&gt;
            Allow vertical or horizontal orientation&lt;br /&gt;
          o&lt;br /&gt;
            Separate image for slider and knob&lt;br /&gt;
          o&lt;br /&gt;
            Allow non-pixmap sliders. Use QSS for styling.&lt;br /&gt;
    *&lt;br /&gt;
      Drop-down Chooser&lt;br /&gt;
          o&lt;br /&gt;
            Allow styling via QSS.&lt;br /&gt;
          o&lt;br /&gt;
            No pixmap option, as it&amp;#039;s text-only.&lt;br /&gt;
          o&lt;br /&gt;
            Requires Control 2.0, since if you connect it to a text control it must know what values it may take on.&lt;br /&gt;
    *&lt;br /&gt;
      Knobs&lt;br /&gt;
          o&lt;br /&gt;
            Single knob image that is rotated plus background image.&lt;br /&gt;
          o&lt;br /&gt;
            Allow specification of &amp;#039;translation&amp;#039; function (i.e. log-potmeter or potmeter)&lt;br /&gt;
          o&lt;br /&gt;
            Allow non-pixmap knobs. Use QSS for styling.&lt;br /&gt;
    *&lt;br /&gt;
      Library Widget&lt;br /&gt;
          o&lt;br /&gt;
            Still a monolithic widget. Don&amp;#039;t think it adds value to allow much customization here.&lt;br /&gt;
          o&lt;br /&gt;
            Use QSS for all appearance styling.&lt;br /&gt;
    *&lt;br /&gt;
      Text labels&lt;br /&gt;
          o&lt;br /&gt;
            Make use of Controls to display text instead of hard-coding text.&lt;br /&gt;
          o&lt;br /&gt;
            Potentially allow scripts to dynamically affect what is shown.&lt;br /&gt;
          o&lt;br /&gt;
            Allow Marquee effect so you can read text that goes out of the control.&lt;br /&gt;
    *&lt;br /&gt;
      VU Meter&lt;br /&gt;
          o&lt;br /&gt;
            Allow QSS styling (how???) or pixmaps.&lt;br /&gt;
    *&lt;br /&gt;
      Status light&lt;br /&gt;
          o&lt;br /&gt;
            Connects to a control and dynamically switches its pixmap or QSS property based on the control&amp;#039;s value&lt;br /&gt;
    *&lt;br /&gt;
      Sampler Widget&lt;br /&gt;
          o&lt;br /&gt;
            Requirements unknown.&lt;br /&gt;
    *&lt;br /&gt;
      Effects Widget&lt;br /&gt;
          o&lt;br /&gt;
            Requirements unknown.&lt;br /&gt;
          o&lt;br /&gt;
            Potentially with a much better control system we can support neat things&lt;br /&gt;
&lt;br /&gt;
Skinning Engine Proposals&lt;br /&gt;
&lt;br /&gt;
Given the above requirements, list various proposals for skin formats here:&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
      Qt4, Qt Style Sheet-based approach&lt;br /&gt;
    *&lt;br /&gt;
      Qt 4.7 QML/Kinetic-based approach&lt;br /&gt;
    *&lt;br /&gt;
      HTML/CSS Based Skins&lt;br /&gt;
&lt;br /&gt;
How QT Quick and QML might be used in QT 4.7.x&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Tobias Rafreider has created a branch for that purpose.&lt;br /&gt;
&lt;br /&gt;
More information about Qt Quick and QML may be found on http://doc.qt.nokia.com/4.7-snapshot/declarativeui.html&lt;br /&gt;
&lt;br /&gt;
Ideas for Skinning Engines&lt;br /&gt;
&lt;br /&gt;
Feel free to add your cons and pros for any of the ideas to this page&lt;br /&gt;
&lt;br /&gt;
The current ideas are:&lt;br /&gt;
Qt 4 based Skinning Engine&lt;br /&gt;
&lt;br /&gt;
Qt 4 is the cross-platform framework.&lt;br /&gt;
&lt;br /&gt;
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)…&lt;br /&gt;
&lt;br /&gt;
By combining some of these technologies it should be possible to create an advanced skinning engine for LMCE.&lt;br /&gt;
To investigate&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
      Explore the Declarative UI Technology in Qt 4.6 to see if it can help in creating a skinning engine.&lt;br /&gt;
          o&lt;br /&gt;
            It looks very promising: http://labs.trolltech.com/blogs/category/labs/graphics/kinetic/declarative_ui/&lt;br /&gt;
    *&lt;br /&gt;
      Explore QWidget versus QGraphicsView for layout.&lt;br /&gt;
          o&lt;br /&gt;
            How does the performance stack up?&lt;br /&gt;
          o&lt;br /&gt;
            QWidgets can be rendered in a QGV, but how does this affect performance?&lt;br /&gt;
                +&lt;br /&gt;
                  But when the visualization is rendered in OpenGL, we&amp;#039;ll probably have to render the whole QGV in OpenGL&lt;br /&gt;
          o&lt;br /&gt;
            QGV will give us a really cool and flexible UI in combination with the Animation/DUI framework&lt;br /&gt;
          o&lt;br /&gt;
            QGV will give us fast software-based UI rendering, as well as support for rendering the UI through OpenGL and since Qt 4.6 also OpenVG&lt;br /&gt;
    *&lt;br /&gt;
      Explore if and how style sheets can help&lt;br /&gt;
          o&lt;br /&gt;
            Style sheets are very useful to skin stuff like scrollbars and other default widgets&lt;br /&gt;
          o&lt;br /&gt;
            The more important stuff like buttons should probably be skinned by reimplementing paintEvent, because this gives more possibilities&lt;br /&gt;
                +&lt;br /&gt;
                  Style sheets may be slower than reimplementing paintEvent - although it has to be investigated to be sure&lt;br /&gt;
                +&lt;br /&gt;
                  More advanced animations (besides simple hover/overroll effects) cannot be created with style sheets only&lt;br /&gt;
&lt;br /&gt;
Pro&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
      Support pixmap skins (porting of current skins will be easier this way, and performance will probably be higher than using SVG)&lt;br /&gt;
    *&lt;br /&gt;
      Support SVG skins (for those who want, SVG skins should be an option as well&lt;br /&gt;
          o&lt;br /&gt;
            Performance may be lower, but we could optionally render SVG as pixmaps to improve performance&lt;br /&gt;
    *&lt;br /&gt;
      Possibility to implement a layout system (because interface elements should not stretch)&lt;br /&gt;
    *&lt;br /&gt;
      The window itself should be themable/deformable too. Could be achieved by either composite or with a mask (or both)&lt;/div&gt;</summary>
		<author><name>Mandingo</name></author>
	</entry>
</feed>