File: task_window_layout.py

package info (click to toggle)
python-pyface 8.0.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 13,944 kB
  • sloc: python: 54,107; makefile: 82
file content (61 lines) | stat: -rw-r--r-- 2,040 bytes parent folder | download
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
51
52
53
54
55
56
57
58
59
60
61
# (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 List, Str, Tuple, Enum, Instance, Union

from pyface.tasks.task_layout import LayoutContainer, TaskLayout


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(Union(Str, Instance(TaskLayout)), pretty_skip=True)

    #: The position of the window.
    position = Tuple(-1, -1)

    #: The size of the window.
    size = Tuple(800, 600)

    #: Whether or not the application is maximized.
    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, str) else first.id
        return None

    def get_tasks(self):
        """ Returns the IDs of the tasks in the layout.
        """
        return [
            (item if isinstance(item, str) 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())