genxproj - toolkit
The project uses the xuipng toolkit that in turn depends on genhvbox. This
may seem to be an unusual toolkit choice. Rationale:
- X window Embedding: one of the most important property of genxproj
is that it can embed the main window of any X11 application, without the
application's cooperation. This can be done using raw Xlib calls. Using a
common toolkit (such as gtk) would require extra effort to bypass the
toolkit to do the raw X calls.
- Look & feel: applications genxproj embeds use toolkits too. If genxproj
and the embedded application uses the same toolkit, it may be harder to
distinguish between the UI of the project manager and the embedded app. Using
an unusual toolkit helps having a distinct look.
- Both genhvbox and xuipng are very small - both are below 1000 sloc. Usual
toolkits are 2 magnitudes larger, in the range of a few 100k sloc. Using small
libs helps reducing code complexity.
- xuipng builds the gui from a plain text (lihata) data file and pngs and
allows gui logic to be implemented in a script. This combination makes gui
development much faster and more flexible than the classic "code builds the gui"
approach.
- Xuipng draws only the background color, text and pngs. It does not draw
widgets, borders, boxes. This helps building customized, per flow GUI by
replacing pngs.