Well, as always, when I get bored, something good comes out of it.

This time I was annoyed with the fact that if I wanted to change the layout of Lancelot, I would have to dig in the code and switch layouts, parents, children etc. Without doubt, Lancelot is currently the most complicated (UI-wise) application based on libPlasma. (I’m not taking into consideration Amarok2 since it has only one part of its UI based on plasma - just the center piece - which is trivial ATM)

So I decided it was the time to switch to a XML-based definition of the UI. The problem, of course, was that there is no such feature in Plasma yet - there is a Designer and UIC for QWidgets, but not for Plasma and QGraphicsView

So, what could I do? The answer was simple - write PUIC - Plasma UI Compiler - which takes a XML formated file and generates C++ code from it. The tool is under heavy development meaning that most of current Plasma widgets are not yet supported (read: none of the Plasma’s widgets are supported :) ). Currently, it supports a couple of layouts (Border, Node and Flip) and Lancelot’s widgets.

Since PUIC is the integral part of Lancelot (for the time being), or to be more precise, the integral part of Lancelot’s build system (basic CMake support for PUIC is done also), the first thing on my TODO list is to complete the transition to XML-based UI, thus completing the support for all Lancelot’s widgets. After that, PUIC will be separated to grow on its own, and other layouts will be added with all Plasma’s widgets.

p.s. I have removed Lancelot from extragear’s build until this is finished. p.p.s. Sorry for extremely long sentences. p.p.p.s. No screenshots this time… be patient…


You can support my work on , or you can get my book Functional Programming in C++ at if you're into that sort of thing.