#------------------------------------------------------------------------------
# Copyright (c) 2012, Enthought, Inc.
# All rights reserved.
#------------------------------------------------------------------------------
from traits.api import Bool, Str, Tuple, Range, Enum
from enaml.core.messenger import Messenger
#: A predefined trait which defines a size tuple. A size value of
#: (-1, -1) represents a default size.
SizeTuple = Tuple(Range(low=-1, value=-1), Range(low=-1, value=-1))
[docs]class Widget(Messenger):
""" The base class of all visible widgets in Enaml.
"""
#: Whether or not the widget is enabled.
enabled = Bool(True)
#: Whether or not the widget is visible.
visible = Bool(True)
#: A flag indicating whether or not to show the focus rectangle for
#: the given widget. This is not necessarily support by all widgets
#: on all clients. A value of None indicates to use the default as
#: supplied by the client.
show_focus_rect = Enum(None, True, False)
#: The background color of the widget. Supports CSS3 color strings.
bgcolor = Str
#: The foreground color of the widget. Supports CSS3 color strings.
fgcolor = Str
#: The font used for the widget. Supports CSS font formats.
font = Str
#: The minimum size for the widget. The default means that the
#: client should determine an intelligent minimum size.
minimum_size = SizeTuple
#: The maximum size for the widget. The default means that the
#: client should determine and inteliigent maximum size.
maximum_size = SizeTuple
#--------------------------------------------------------------------------
# Initialization
#--------------------------------------------------------------------------
def snapshot(self):
snap = super(Widget, self).snapshot()
snap['enabled'] = self.enabled
snap['visible'] = self.visible
snap['bgcolor'] = self.bgcolor
snap['fgcolor'] = self.fgcolor
snap['font'] = self.font
snap['minimum_size'] = self.minimum_size
snap['maximum_size'] = self.maximum_size
snap['show_focus_rect'] = self.show_focus_rect
return snap
[docs] def bind(self):
""" Bind the change handlers for a widget component.
"""
super(Widget, self).bind()
attrs = (
'enabled', 'visible', 'bgcolor', 'fgcolor', 'font',
'minimum_size', 'maximum_size', 'show_focus_rect',
)
self.publish_attributes(*attrs)