Widgets
-------

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 link:example_widgets_login.html[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...

Widgets generic documetation
----------------------------

* link:widgets_app_info.html[App info]
* link:widgets_json.html[JSON layout format]
* link:widgets_events.html[Event handlers]
* link:widgets_alignment.html[Alignment and fill]
* link:widgets_tattr.html[Text attributes]
* link:widgets_render_context.html[Render context]
* link:widgets_free.html[Widget destructor]
* link:widget_classes.html[Widget classes]
* link:widgets_color_scheme.html[Widget color scheme]
* link:widgets_colors.html[Widget colors]
* link:widgets_disable.html[Disable widgets]

Individual widgets documentation
--------------------------------

* link:widget_label.html[Label widget]
* link:widget_button.html[Button widget]
* link:widget_checkbox.html[Checkbox widget]
* link:widget_choice.html[Radiobutton widget]
* link:widget_choice.html[Spinbutton widget]
* link:widget_tbox.html[Tbox widget]
* link:widget_pbar.html[Progressbar widget]
* link:widget_pixmap.html[Pixmap widget]
* link:widget_grid.html[Grid widget]
* link:widget_hbox_vbox.html[Hbox widget]
* link:widget_hbox_vbox.html[Vbox widget]
* link:widget_table.html[Table widget]
* link:widget_tabs.html[Tabs widget]
* link:widget_frame.html[Frame widget]
* link:widget_markup.html[Markup widget]

Dialog documentation
--------------------

* link:widgets_dialog.html[Dialog implementation]
* link:dialog_msg.html[Message dialogs]
