Source code for pyface.i_layered_panel

# (C) Copyright 2005-2023 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!

""" Interace and mixins for layered panels.

A layered panel contains one or more named layers, with only one layer
visible at any one time (think of a 'tab' control minus the tabs!).
"""

import warnings

from traits.api import Any, Dict, HasTraits, Interface, Str


[docs]class ILayeredPanel(Interface): """ A Layered panel. A layered panel contains one or more named layers, with only one layer visible at any one time (think of a 'tab' control minus the tabs!). Each layer is a toolkit-specific control. """ # "ILayeredPanel' interface -------------------------------------------- # The toolkit-specific control of the currently displayed layer. current_layer = Any() # The name of the currently displayed layer. current_layer_name = Str() # ------------------------------------------------------------------------ # 'ILayeredPanel' interface. # ------------------------------------------------------------------------
[docs] def add_layer(self, name, layer): """ Adds a layer with the specified name. All layers are hidden when they are added. Use 'show_layer' to make a layer visible. """
[docs] def show_layer(self, name): """ Shows the layer with the specified name. """
[docs] def has_layer(self, name): """ Does the panel contain a layer with the specified name? """
[docs]class MLayeredPanel(HasTraits): """ A Layered panel mixin. A layered panel contains one or more named layers, with only one layer visible at any one time (think of a 'tab' control minus the tabs!). Each layer is a toolkit-specific control. """ # "ILayeredPanel' interface -------------------------------------------- # The toolkit-specific control of the currently displayed layer. current_layer = Any() # The name of the currently displayed layer. current_layer_name = Str() # Private traits ------------------------------------------------------- # The a map of layer names to toolkit controls in the panel. _layers = Dict(Str) # ------------------------------------------------------------------------ # 'ILayeredPanel' interface. # ------------------------------------------------------------------------
[docs] def has_layer(self, name): """ Does the panel contain a layer with the specified name? """ return name in self._layers
# ------------------------------------------------------------------------ # 'object' interface. # ------------------------------------------------------------------------ def __init__(self, parent=None, **traits): """ Creates a new LayeredPanel. """ create = traits.pop("create", None) # Base class constructor. super().__init__(parent=parent, **traits) if create: # Create the toolkit-specific control that represents the widget. self.create() warnings.warn( "automatic widget creation is deprecated and will be removed " "in a future Pyface version, code should not pass the create " "parameter and should instead call create() explicitly", DeprecationWarning, stacklevel=2, ) elif create is not None: warnings.warn( "setting create=False is no longer required", DeprecationWarning, stacklevel=2, )