Source code for pyface.tasks.action.task_action

# (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!


from traits.api import Instance, Property, Str, cached_property


from pyface.tasks.i_editor import IEditor
from pyface.tasks.task import Task
from pyface.tasks.i_task_pane import ITaskPane
from pyface.action.listening_action import ListeningAction


[docs]class TaskAction(ListeningAction): """ An Action that makes a callback to a Task. Note that this is a convenience class. Actions associated with a Task need not inherit TaskAction, although they must, of course, inherit Action. """ # ListeningAction interface -------------------------------------------- object = Property(observe="task") # TaskAction interface ------------------------------------------------- #: The Task with which the action is associated. Set by the framework. task = Instance(Task) # ------------------------------------------------------------------------ # Protected interface. # ------------------------------------------------------------------------ def _get_object(self): return self.task
[docs] def destroy(self): # Disconnect listeners to task and dependent properties. self.task = None super().destroy()
[docs]class TaskWindowAction(TaskAction): """ An Action that makes a callback to a Task's window. """ # ListeningAction interface -------------------------------------------- object = Property(observe="task.window") # ------------------------------------------------------------------------ # Protected interface. # ------------------------------------------------------------------------ def _get_object(self): if self.task: return self.task.window return None
[docs]class CentralPaneAction(TaskAction): """ An Action that makes a callback to a Task's central pane. """ # ListeningAction interface -------------------------------------------- object = Property(observe="central_pane") # CentralPaneAction interface -----------------------------------------# #: The central pane with which the action is associated. central_pane = Property(Instance(ITaskPane), observe="task") # ------------------------------------------------------------------------ # Protected interface. # ------------------------------------------------------------------------ @cached_property def _get_central_pane(self): if self.task and self.task.window is not None: return self.task.window.get_central_pane(self.task) return None def _get_object(self): return self.central_pane
[docs]class DockPaneAction(TaskAction): """ An Action the makes a callback to one of a Task's dock panes. """ # ListeningAction interface -------------------------------------------- object = Property(observe="dock_pane") # DockPaneAction interface --------------------------------------------- #: The dock pane with which the action is associated. Set by the framework. dock_pane = Property(Instance(ITaskPane), observe="task") #: The ID of the dock pane with which the action is associated. dock_pane_id = Str() # ------------------------------------------------------------------------ # Protected interface. # ------------------------------------------------------------------------ @cached_property def _get_dock_pane(self): if self.task and self.task.window is not None: return self.task.window.get_dock_pane(self.dock_pane_id, self.task) return None def _get_object(self): return self.dock_pane
[docs]class EditorAction(CentralPaneAction): """ An action that makes a callback to the active editor in an editor pane. """ # ListeningAction interface -------------------------------------------- object = Property(observe="active_editor") # EditorAction interface ----------------------------------------------- #: The active editor in the central pane with which the action is associated. active_editor = Property( Instance(IEditor), observe="central_pane.active_editor" ) # ------------------------------------------------------------------------ # Protected interface. # ------------------------------------------------------------------------ @cached_property def _get_active_editor(self): if self.central_pane is not None: return self.central_pane.active_editor return None def _get_object(self): return self.active_editor