Source code for envisage.ui.tasks.action.task_window_launch_group
# (C) Copyright 2007-2024 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!
# Enthought library imports.
from pyface.action.api import ActionItem, Group
from pyface.tasks.action.api import TaskAction
from pyface.tasks.api import TaskWindowLayout
from traits.api import List, observe, Str
[docs]class TaskWindowLaunchAction(TaskAction):
"""An Action that creates a task window with a single task."""
#### 'TaskWindowLaunchAction' interface ###################################
task_id = Str
###########################################################################
# 'Action' interface.
###########################################################################
###########################################################################
# Private interface.
###########################################################################
#### Trait change handlers ################################################
@observe("task")
def _update_name(self, event):
"""Name the action (unless a name has already been assigned)."""
task = event.new
if task and not self.name:
name = ""
for factory in task.window.application.task_factories:
if factory.id == self.task_id:
name = factory.name
break
self.name = name
[docs]class TaskWindowLaunchGroup(Group):
"""A Group for creating task windows with a single task."""
#### 'Group' interface ####################################################
id = "TaskWindowLaunchGroup"
items = List
###########################################################################
# Private interface.
###########################################################################
def _items_default(self):
manager = self
while isinstance(manager, Group):
manager = manager.parent
application = manager.controller.task.window.application
items = []
for factory in application.task_factories:
action = TaskWindowLaunchAction(task_id=factory.id)
items.append(ActionItem(action=action))
return items