#------------------------------------------------------------------------------
# Copyright (c) 2013-2025, Nucleic Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
#------------------------------------------------------------------------------
""" An example of the `Form` widget.

A `Form` is a simple subclass of `Container` which automatically lays
out it children in two columns, neatly aligning the widget edges. If
a `Form` has an odd number of children, the last child will span both
columns. The typical use case of a `Form` alternates `Label` and `Field`
instances, but there is not restriction on the types of children used
with a form, except that they be constrainable.

<< autodoc-me >>
"""
from enaml.layout.api import hbox
from enaml.widgets.api import Window, Form, Container, Label, Slider, Field


enamldef Main(Window):
    Form:
        Label:
            text = 'First Name'
        Field:
            pass
        Label:
            text = 'Last Name'
        Field:
            pass
        Label:
            text = 'Age'
        Container:
            padding = 0
            constraints = [
                hbox(lbl, sldr),
                lbl.v_center == sldr.v_center,
            ]
            Label: lbl:
                text << '%d' % sldr.value
                constraints = [width == 25]
            Slider: sldr:
                pass
        Field:
            placeholder = 'Odd Number Child'
