As some of you might know (although I guess most of you might not be aware), Timotei and me participated in GSOC 2014 this year. My project was to create a Look n' Feel editor to CEED for all 0.8.X version of CEGUI (we also support higher versions of course). This is a feature that has been missing in CEGUI since ever. CEGUI had tools for layout creation and editing, such as the CELayoutEditor, which existed before the development of CEED. However creating a skinning or "look n' feel" editor, has never been attempted so far. I saw this as a pity because such a tool has to be considered crucial for GUI development. Skinning (in XML) is otherwise very tideous: no preview, no good overview of the attributes, no helpful features such as suggestions and every change has to be tested by starting an application.
With a proper tool however, it becomes really easy. This is why I decided to work on this project. I was new to CEED development and Python, but I relatively quickly worked myself into the CEED code base and learnt to develop in Python. PyCharms provided us with a free license for Open Source projects, which we are thankful for. Unfortunately, when I started to get to the "real" development of the editor, I encountered numerous issues in the CEGUI C++ files. Some of the code dates back to 10 years ago and seems to have hardly been updated. Also a newly added "inheritation" feature showed numerous occasions of faulty behaviour. Due to this, a lot of the Falagard code had to be reworked by me, which took a good chunk of time during the GSoC project. On a more positive note: I was able to fix a lot of issues and rework a lot of functions which results in now cleaner code.
Now we get to the real stuff: The editor. In the screenshot below, you see me editing a Vanilla/Button look n' feel in CEED. Generally it would be recommended to either inherit this button and work on the inherited LNF, or to copy paste the definition into a new file and work on that file. But for the sake of a quick preview I m directly editing the original file. On the top left you can see the WidgetLook (WL) selector (selects a WidgetLook defined in the LNF file being edited), which consists of a dropdown selection to choose from the available WidgetLooks and of an Edit button. On clicking edit, the specific WL is opened. Below is the hierarchy window. It contains the editable attributes from the XML in a ordered and categorised fashion. Selecting an attribute shows new options on the Falagard Element editor on the right. These options can be edited with a double-click. Depending on the type of attribute, we offer the easiest and most intutitive way to change the value. For example Images (and Fonts) can be selected from a dropdownlist containing all loaded Image (or Font) definitions, bool is represented by a checkbox etc etc. The changes are directly applied and can be seen. In the shown case the "NormalImage" PropertyDefinition's initial value is overwritten. This means that now there is an image set for the button by default. All other values, no matter of what kind or part of what element, can be changed analogously.
I added alternating colours for the display, as i also did for the other windows and also for the pre-existing layout-editor. This is based on the way QtDesigner looks, I hope you guys enjoy this change, I personally definitely prefer it over the alternating grey tones we had before. I also worked a bit on the Code editor. By default the LNF code editor now highlights the part of the code that is part of the currently edited WidgetLook. Additionally, it jumps to the beginning of that code when changing to the editor. This should make it much easier to edit code by hand because the user does not need to scroll there and has an easier impression of what is currently relevant in the LNF code.
The LNF editor is not complete yet, but the main part of the work is done, the overall setup has been done, many features are tested and are actually working very well. It can already used for simple skinning such as mere replacement of images in a LNF file. In the future we will make all these things even easier and allow a broader set of changes to LNFs. If you consider already using the CEED changes, you have to be aware that the LNF editor is currently unstable (make backups and save regularly!) and some parts are not fully implemented yet, therefore it should be used with great caution until we officially say it is finished.