Categories of widgets
---------------------

Focusable vs non-focusable

Non-focusable widgets are essentially a decoration. Examples are WLabel
and WFrame. Focusable are widgets which can be tabbed and which can
accept user input, and the rest of standard widgets are such.

Widgets can be tested for focusability using w.focusable property.

Editable vs non-editable

Focusable widgets are subdivided into editable vs non-editable. Editable
widgets contain state which a user can change. Non-editable widgets
are intended to execute actions on user interaction. Examples of
non-editable widgets are WButton, WMenuBar, WMenuBox.

Choice widgets

A subset of editable widgets are choice widgets. They deal with selecting
one of the items among a number of choices. WRadioButton, WListBox and
WDropDown are choice widgets. For consistency, it makes sense to treat
WCheckbox as a choice widget too, with choices being False and True.

BaseWidget
  Non-focusable
    WLabel
    WFrame
  Focusable
    Non-editable
      WButton
      WMenuBar
      WMenuBox
    Editable
      Choice widget
        WCheckbox
        WRadioButton
        WListBox
        WDropDown
        WCompletionList
      Non-choice widget
        WTextEntry
        WMultiLine
        WAutoComplete
