1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
# Enthought library imports.
from traits.api import Either, List, Str, Tuple, Enum
# Local imports.
from pyface.tasks.task_layout import LayoutContainer, TaskLayout
import six
class TaskWindowLayout(LayoutContainer):
""" The layout of a TaskWindow.
"""
# The ID of the active task. If unspecified, the first task will be active.
active_task = Str
# The tasks contained in the window. If an ID is specified, the task will
# use its default layout. Otherwise, it will use the specified TaskLayout.
items = List(Either(Str, TaskLayout), pretty_skip=True)
# The position of the window.
position = Tuple(-1, -1)
# The size of the window.
size = Tuple(800, 600)
size_state = Enum('normal', 'maximized')
def get_active_task(self):
""" Returns the ID of the active task in the layout, or None if there is
no active task.
"""
if self.active_task:
return self.active_task
elif self.items:
first = self.items[0]
return first if isinstance(first, six.string_types) else first.id
return None
def get_tasks(self):
""" Returns the IDs of the tasks in the layout.
"""
return [ (item if isinstance(item, six.string_types) else item.id)
for item in self.items ]
def is_equivalent_to(self, layout):
""" Returns whether two layouts are equivalent, i.e. whether they
contain the same tasks.
"""
return isinstance(layout, TaskWindowLayout) and \
set(self.get_tasks()) == set(layout.get_tasks())
|