Source code for enaml.widgets.spin_box
#------------------------------------------------------------------------------
# Copyright (c) 2011, Enthought, Inc.
# All rights reserved.
#------------------------------------------------------------------------------
from traits.api import Int, Bool, Range, Unicode
from .control import Control
[docs]class SpinBox(Control):
""" A spin box widget which manipulates integer values.
"""
#: The minimum value for the spin box. Defaults to 0.
minimum = Int(0)
#: The maximum value for the spin box. Defaults to 100.
maximum = Int(100)
#: The current integer value for the spin box, constrained to
#: minimum <= value <= maximum.
value = Range('minimum', 'maximum')
#: An optional prefix to include in the displayed text.
prefix = Unicode
#: An optional suffix to include in the displayed text.
suffix = Unicode
#: Optional text to display when the spin box is at its minimum.
#: This allows the developer to indicate to the user a special
#: significance to the minimum value e.g. "Auto"
special_value_text = Unicode
#: The step size for the spin box. Defaults to 1.
single_step = Range(low=1)
#: Whether or not the spin box is read-only. If True, the user
#: will not be able to edit the values in the spin box, but they
#: will still be able to copy the text to the clipboard.
read_only = Bool(False)
#: Whether or not the spin box will wrap around at its extremes.
#: Defaults to False.
wrapping = Bool(False)
#: How strongly a component hugs it's contents' width. SpinBoxes
#: ignore the width hug by default, so they expand freely in width.
hug_width = 'ignore'
#--------------------------------------------------------------------------
# Initialization
#--------------------------------------------------------------------------
[docs] def snapshot(self):
""" Return the dict of creation attributes for the control.
"""
snap = super(SpinBox, self).snapshot()
attrs = {
'maximum' : self.maximum,
'minimum' : self.minimum,
'value' : self.value,
'prefix': self.prefix,
'suffix': self.suffix,
'special_value_text': self.special_value_text,
'single_step' : self.single_step,
'read_only': self.read_only,
'wrapping' : self.wrapping,
}
snap.update(attrs)
return snap
[docs] def bind(self):
""" A method called after initialization which allows the widget
to bind any event handlers necessary.
"""
super(SpinBox, self).bind()
attrs = (
'maximum', 'minimum', 'value', 'prefix', 'suffix',
'special_value_text', 'single_step', 'read_only', 'wrapping',
)
self.publish_attributes(*attrs)
#--------------------------------------------------------------------------
# Message Handling
#--------------------------------------------------------------------------
[docs] def on_action_value_changed(self, content):
""" Handle the 'value_changed' action from the client widget.
"""
self.set_guarded(value=content['value'])