There are several key design points that make this library a bit different than the mainstream libraries but apart from that it’s a just widget library, nothing too unexpected here.
One of the major differencies is that widgets are represented by C structures
that store the widget state, read only access could be done just by accessing
the structure members. If you want to change the state you call helper function
that changes it, it may also do sanity checks, and marks the widget to be
repainted. Setting values may also invoke on_event()
callback, e.g. if user
changes checkbox value the application will receive an event.
Another interesting point is that the library uncouples the GUI layout from the
actual application functionality. As a matter of a fact the layout can be
expressed in JSON and loaded from a file. It does not matter where the GUI
elements are put as far as the on_event()
callbacks and widgets uid
match.
An example code is worth of thousands words.
Also if you ever wondered how widget library written by kernel devloper would look like this is probably as close as you can get…