Concrete proposal

From Tango Desktop Project
Jump to: navigation, search

Here's a concrete proposal.

Write a fine-grained library for drawing widget components

Figure out how each toolkit draws the base components of its widgets (GTK+, Qt, XUL, SWT/OO.o). For GTK+, this is the set of virtual methods in GtkStyleClass.

Create a library with these lowest-level widget components (boxes, shaded lines, tabs, button-looking thingies, etc.). You can go crazy here, but think of how to make it easy to create different themes with this scheme: should the equivalent of GTK+'s paint_box() just be some SVG which graphic designers can change?

Write a theme engine for each toolkit which uses this library.

(This is essentially Metatheme, from what I can gather)

Implement font-based spacing

For GTK+, this is bug #101859; perhaps Qt and XUL could use similar approaches.

Then, make those spacings symbolic rather than hard-coded. Remember in Gnome 1.x when we had GNOME_PAD_SMALL, GNOME_PAD_MEDIUM, etc? These went away when everyone started using Glade.

Audit apps so that they use these symbolic values, or at least numeric values like described in the bug report, so that they'll do things consistently. Existing code and GUI definitions should not break!

Modify GUI editors

Modify things like Glade so that they use symbolic spacing as described above instead of hardcoded values. Don't wait for Stetic to happen, but add support to it as well.

Implement container-based layout in

A herculean task, but needed badly.

I don't know if it uses pixels or twips for its widget positions. If it uses twips, maybe we can make it do something sane from the beginning.

Audit apps that do funny stuff with widgets

Basically, any app that does its own custom drawing instead of using the predefined elements described in the first section.