Time for a long overdue update on the status of Tesseract. Since the last blog posts I made about it, Tesseract has been almost completely rewritten to correct some fundamental flaws in its design. The new version is vastly improved, and moves platform dependant code away from everything else, meaning it will be easy to write (for example), a Qt or Windows backend later (currently the only backend is for Gtk).
The basic concepts remain the same, to enable both simple and complex GUIs to be created easily, and to be easy to maintain & modify. This is still accomplished through the use of TIM (Tesseract Interface Markup), an XML based representation of the GUI. However, since the rewrite TIM has gained a lot more power to customise both the appearance and the behaviour of controls, saving even further on code than previously. This does make the XML more verbose than previously, but TIM has gained more features to help with this. I will write more about TIM and its structure later.
For now, lets look at a screenshot:

Vastly different in appearance to the previous versions, this test application shows some of the basic functionality of Tesseract, although much of it can only be appreciated when the application is running in front of you (you get to see spinning boxes!). The controls from before the rewrite are all present and accounted for, with the addition of new List, StatusBar, TabControl and TabPage controls. Controls are fairly easy to customise, and a lot of controls here have had their appearance modified directly in the TIM markup.
The second "Click Me!" button is customized from the normal button (to the left), by simply changing its background & border properties from the markup. The large "Test" label has had its TextFill property set to a red-green LinearGradient, the large frame upon which the TabControl, List, "Test" Label and "Rotate Test" Frames lie has had its Background property set to a green-blue LinearGradient and a white RadialGradient. Last but not least, the Window control has had its Background property set to a translucent blue. Since the rewrite, Tesseract has become composite aware, meaning if a composite window manager (compiz, beryl, etc) is running then it can take advantage of this to present a translucent window if the Window controls background is translucent.
There are still minor issues with some areas of rendering, and more controls need implementing, but Tesseract is growing more useful each day, which I will soon show with some small yet useful applications created with C# and Tesseract (**ahem**Widgets**ahem**).