Source code for enaml.widgets.notebook
#------------------------------------------------------------------------------
# Copyright (c) 2012, Enthought, Inc.
# All rights reserved.
#------------------------------------------------------------------------------
from traits.api import Enum, Bool, Property, cached_property
from .constraints_widget import ConstraintsWidget
from .page import Page
[docs]class Notebook(ConstraintsWidget):
""" A component which displays its children as tabbed pages.
"""
#: The style of tabs to use in the notebook. Preferences style
#: tabs are appropriate for configuration dialogs and the like.
#: Document style tabs are appropriate for multi-page editing
#: in code editors and the like.
tab_style = Enum('document', 'preferences')
#: The position of tabs in the notebook.
tab_position = Enum('top', 'bottom', 'left', 'right')
#: Whether or not the tabs in the notebook should be closable.
tabs_closable = Bool(True)
#: Whether or not the tabs in the notebook should be movable.
tabs_movable = Bool(True)
#: A read only property which returns the notebook's Pages.
pages = Property(depends_on='children')
#: How strongly a component hugs it's contents' width. A Notebook
#: ignores its width hug by default, so it expands freely in width.
hug_width = 'ignore'
#: How strongly a component hugs it's contents' height. A Notebook
#: ignores its height hug by default, so it expands freely in height.
hug_height = 'ignore'
#--------------------------------------------------------------------------
# Initialization
#--------------------------------------------------------------------------
[docs] def snapshot(self):
""" Returns the snapshot for the control.
"""
snap = super(Notebook, self).snapshot()
snap['tab_style'] = self.tab_style
snap['tab_position'] = self.tab_position
snap['tabs_closable'] = self.tabs_closable
snap['tabs_movable'] = self.tabs_movable
return snap
[docs] def bind(self):
""" Bind the change handlers for the control.
"""
super(Notebook, self).bind()
attrs = (
'tab_style', 'tab_position', 'tabs_closable', 'tabs_movable',
)
self.publish_attributes(*attrs)
#--------------------------------------------------------------------------
# Private API
#--------------------------------------------------------------------------
@cached_property
def _get_pages(self):
""" The getter for the 'pages' property.
Returns
-------
result : tuple
The tuple of Page instances defined as children of this
Notebook.
"""
isinst = isinstance
pages = (child for child in self.children if isinst(child, Page))
return tuple(pages)