Source code for enaml.widgets.action_group
#------------------------------------------------------------------------------
# Copyright (c) 2012, Enthought, Inc.
# All rights reserved.
#------------------------------------------------------------------------------
from traits.api import Bool, Property, cached_property
from enaml.core.messenger import Messenger
from .action import Action
[docs]class ActionGroup(Messenger):
""" A non visible widget used to group actions.
An action group can be used in a MenuBar or a ToolBar to group a
related set of Actions and apply common operations to the set. The
primary use of an action group is to make any checkable actions in
the group mutually exclusive.
"""
#: Whether or not the actions in this group are exclusive.
exclusive = Bool(True)
#: Whether or not the actions in this group are enabled.
enabled = Bool(True)
#: Whether or not the actions in this group are visible.
visible = Bool(True)
#: A read only property which returns the actions for this group.
actions = Property(depends_on='children')
#--------------------------------------------------------------------------
# Initialization
#--------------------------------------------------------------------------
[docs] def snapshot(self):
""" Returns the snapshot dict for the ActionGroup.
"""
snap = super(ActionGroup, self).snapshot()
snap['exclusive'] = self.exclusive
snap['enabled'] = self.enabled
snap['visible'] = self.visible
return snap
[docs] def bind(self):
""" Binds the change handlers for the ActionGroup.
"""
super(ActionGroup, self).bind()
self.publish_attributes('exclusive', 'enabled', 'visible')
#--------------------------------------------------------------------------
# Private API
#--------------------------------------------------------------------------
@cached_property
def _get_actions(self):
""" The getter for the 'actions' property.
Returns
-------
result : tuple
The tuple of Actions defined as children of this ActionGroup.
"""
isinst = isinstance
items = (child for child in self.children if isinst(child, Action))
return tuple(items)