Source code for pyface.workbench.i_view
# (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!
""" The interface for workbench views. """
import logging
from pyface.api import Image
from traits.api import Bool, Str, provides
from traits.util.camel_case import camel_case_to_words
from .i_perspective_item import IPerspectiveItem
from .i_workbench_part import IWorkbenchPart, MWorkbenchPart
from .perspective_item import PerspectiveItem
# Logging.
logger = logging.getLogger(__name__)
[docs]class IView(IWorkbenchPart, IPerspectiveItem):
""" The interface for workbench views. """
# Is the view busy? (i.e., should the busy cursor (often an hourglass) be
# displayed?).
busy = Bool(False)
# The category that the view belongs to (this can used to group views when
# they are displayed to the user).
category = Str("General")
# An image used to represent the view to the user (shown in the view tab
# and in the view chooser etc).
image = Image()
# Whether the view is visible or not.
visible = Bool(False)
# ------------------------------------------------------------------------
# 'IView' interface.
# ------------------------------------------------------------------------
[docs] def activate(self):
""" Activate the view.
"""
[docs] def hide(self):
""" Hide the view.
"""
[docs] def show(self):
""" Show the view.
"""
[docs]@provides(IView)
class MView(MWorkbenchPart, PerspectiveItem):
""" Mixin containing common code for toolkit-specific implementations. """
# 'IView' interface ----------------------------------------------------
# Is the view busy? (i.e., should the busy cursor (often an hourglass) be
# displayed?).
busy = Bool(False)
# The category that the view belongs to (this can be used to group views
# when they are displayed to the user).
category = Str("General")
# An image used to represent the view to the user (shown in the view tab
# and in the view chooser etc).
image = Image()
# Whether the view is visible or not.
visible = Bool(False)
# ------------------------------------------------------------------------
# 'IWorkbenchPart' interface.
# ------------------------------------------------------------------------
def _id_default(self):
""" Trait initializer. """
id = "%s.%s" % (type(self).__module__, type(self).__name__)
logger.warning("view %s has no Id - using <%s>" % (self, id))
# If no Id is specified then use the name.
return id
def _name_default(self):
""" Trait initializer. """
name = camel_case_to_words(type(self).__name__)
logger.warning("view %s has no name - using <%s>" % (self, name))
return name
# ------------------------------------------------------------------------
# 'IView' interface.
# ------------------------------------------------------------------------
[docs] def activate(self):
""" Activate the view.
"""
self.window.activate_view(self)
[docs] def hide(self):
""" Hide the view. """
self.window.hide_view(self)
[docs] def show(self):
""" Show the view. """
self.window.show_view(self)
return