Metadata-Version: 1.0
Name: horae.groupselect
Version: 1.0a1
Summary: Provides a grouped Dropdown widget for zope.formlib
Home-page: UNKNOWN
Author: Simon Kaeser
Author-email: skaeser@gmail.com
License: GPL
Description: Introduction
        ============
        
        ``horae.groupselect`` provides a grouped ``Dropdown`` widget for
        `zope.formlib <http://pypi.python.org/pypi/zope.formlib>`_ using
        the default ``optgroup`` elements provided by HTML.
        
        Usage
        =====
        
        To use a grouped dropdown widget the previously used ``Choice`` field
        of the schema has to be replaced by a ``GroupedChoice`` field provided
        in ``horae.groupedselect.field``. A ``GroupedChoice`` field takes the
        exactly same parameters as the stock ``Choice`` field but additionally
        an instance of a groups provider (implementing
        ``horae.groupedselect.interfaces.IGroups``) has to be provided over the
        parameter ``groups``. The mentioned groups provider converts the
        vocabulary of the field into a list of groups.
        
        Imagine field to select a country and you would like to group them by
        region::
        
        from zope import interface, implements
        from zope.schema import vocabulary
        
        from horae.groupedselect import field, interfaces
        
        class Country(object):
        def __init__(self, region, country):
        self.region = region
        self.country = country
        
        class CountryGroups(object):
        implements(interfaces.IGroups)
        
        def groups(self, vocabulary):
        """
        Converts the given vocabulary into a list of groups:
        
        return (('Group 1', (term1, term2, term3)),
        ('Group 2', (term6, term5, term6)),)
        """
        groups = {}
        for term in vocabulary:
        if not term.value.region in groups:
        groups[term.value.region] = ()
        groups[term.value.region] = groups[term.value.region] + \
        (term,)
        return groups.items()
        
        class ICountrySelection(interface.Interface):
        
        country = field.GroupedChoice(
        title = u'Country',
        vocabulary = vocabulary.SimpleVocabulary((
        # ...
        vocabulary.SimpleTerm(
        Country(u'Europe', u'Switzerland'),
        'ch',
        u'Switzerland'
        ),
        vocabulary.SimpleTerm(
        Country(u'Europe', u'Germany'),
        'de',
        u'Germany'
        ),
        vocabulary.SimpleTerm(
        Country(u'Europe', u'Austria'),
        'at',
        u'Austria'
        ),
        vocabulary.SimpleTerm(
        Country(u'Europe', u'France'),
        'fr',
        u'France'
        ),
        # ...
        vocabulary.SimpleTerm(
        Country(u'North America', u'USA'),
        'us',
        u'USA'
        ),
        vocabulary.SimpleTerm(
        Country(u'Europe', u'Canada'),
        'ca',
        u'Canada'
        ),
        # ...
        )),
        groups = CountryGroups()
        )
        
        Dependencies
        ============
        
        * `zope.schema <http://pypi.python.org/pypi/zope.schema>`_
        * `zope.formlib <http://pypi.python.org/pypi/zope.formlib>`_
        
        Changelog
        =========
        
        1.0a1 (2012-01-16)
        ------------------
        
        * Initial release
        
        
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
