Source code for enaml.widgets.split_item
#------------------------------------------------------------------------------
# Copyright (c) 2012, Enthought, Inc.
# All rights reserved.
#------------------------------------------------------------------------------
from traits.api import Any, Bool, Range, Property, cached_property
from .container import Container
from .widget import Widget
[docs]class SplitItem(Widget):
""" A widget which can be used as an item in a Splitter.
A SplitItem is a widget which can be used as a child of a Splitter
widget. It can have at most a single child widget which is an
instance of Container.
"""
#: The stretch factor for this item. The stretch factor determines
#: how much an item is resized relative to its neighbors when the
#: splitter space is allocated.
stretch = Range(low=0, value=1)
#: Whether or not the item can be collapsed to zero width by the
#: user. This holds regardless of the minimum size of the item.
collapsible = Bool(True)
#: A read only property which returns the split widget.
split_widget = Property(depends_on='children')
#: This is a deprecated attribute. It should no longer be used.
preferred_size = Any
#--------------------------------------------------------------------------
# Initialization
#--------------------------------------------------------------------------
[docs] def snapshot(self):
""" Return the dict of creation attributes for the control.
"""
snap = super(SplitItem, self).snapshot()
snap['stretch'] = self.stretch
snap['collapsible'] = self.collapsible
return snap
[docs] def bind(self):
""" Bind the change handlers for the widget.
"""
super(SplitItem, self).bind()
self.publish_attributes('stretch', 'collapsible')
#--------------------------------------------------------------------------
# Private API
#--------------------------------------------------------------------------
@cached_property
def _get_split_widget(self):
""" The getter for the 'split_widget' property.
Returns
-------
result : Container or None
The split widget for the SplitItem, or None if not provided.
"""
widget = None
for child in self.children:
if isinstance(child, Container):
widget = child
return widget