Methanal 0.2.1 (2010-07-23)
===================================

The new release brings some bug fixes, usability improvements (row striping,
dependency styling, a modification indicator) and some useful new features
(enhanced tab management in TabViews, pushing new content to DynamicTabs from
the server, visual grouping of tab labels in a TabView) but most importantly it
deprecates all the Grouped and Object ChoiceInput subclasses.

The correct way to perform grouping or passing arbitrary Python objects to
ChoiceInputs is to use an Enum. To group values in a ChoiceInput simply give
them all the same value (a Unicode string) for the "group" enumeration extra.
To use arbitrary Python objects the ObjectEnum type should be used to contain
EnumItem instances whose "value" is the Python object.

The following example demonstrates creating a SelectInput with two groups each
containing two values:

    values = Enum(
        'Grouped values',
        [EnumItem(u'1', u'Item 1', group=u'Group 1'),
         EnumItem(u'2', u'Item 2', group=u'Group 1'),
         EnumItem(u'3', u'Item 3', group=u'Group 2'),
         EnumItem(u'4', u'Item 4', group=u'Group 2')])
  SelectInput(..., values=values)

The following example demonstrates creating a MultiCheckboxInput backed by
arbitrary Python objects:

    ham = Ham(...)
    cheese = Cheese(...)
    tomato = Tomato(...)
    values = ObjectEnum(
        'Delicious sandwich ingredients',
        [EnumItem(ham, u'Ham'),
         EnumItem(cheese, u'Cheese'),
         EnumItem(tomato, u'Tomato')])
    MultiCheckboxInput(..., values=values)
