Passed
Pull Request — develop (#301)
by
unknown
01:51
created

doorstop.gui.state.State.session_selected_link()   A

Complexity

Conditions 2

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 2
nop 2
1
#!/usr/bin/env python
2
3
from typing import FrozenSet
4
from typing import Optional
5
from typing import Tuple
6
7
import os
8
9
from doorstop.core.tree import Tree
10
from doorstop.core.types import Prefix
11
from doorstop.core.types import UID
12
from doorstop.common import DoorstopError
13
14
15
class State():
16
17
    @property
18
    def cwd(self) -> str:
19
        return self.__cwd
20
21
    @cwd.setter
22
    def cwd(self, value: Optional[str]) -> None:
23
        self.__cwd = os.getcwd() if value is None else value
24
25
    @property
26
    def project_path(self) -> str:
27
        return self.__project_path
28
29
    @project_path.setter
30
    def project_path(self, value: Optional[str]) -> None:
31
        self.__project_path = "" if value is None else str(value)
32
33
    @property
34
    def project_tree(self) -> Optional[Tree]:
35
        return self.__project_tree
36
37
    @project_tree.setter
38
    def project_tree(self, value: Optional[Tree]) -> None:
39
        self.__project_tree = value
40
41
    @property
42
    def session_pending_change(self) -> bool:
43
        return self.__session_pending_change
44
45
    @session_pending_change.setter
46
    def session_pending_change(self, value: Optional[bool]) -> None:
47
        self.__session_pending_change = bool(value)
48
49
    @property
50
    def session_selected_document(self) -> Prefix:
51
        result = self.__session_selected_document
52
        if result: return result
53
54
        project_tree = self.project_tree
55
        for curr_document in [] if project_tree is None else project_tree:
56
            # Select the first one
57
            return curr_document.prefix
58
        return self.__session_selected_document
59
60
    @session_selected_document.setter
61
    def session_selected_document(self, value: Prefix) -> None:
62
        self.__session_selected_document = value
63
64
    @property
65
    def session_selected_item(self) -> Tuple[UID, ...]:
66
        result = self.__session_selected_item
67
        if result: return result
68
69
        project_tree = self.project_tree
70
        the_document = None
71
        if project_tree is not None:
72
            try:
73
                the_document = project_tree.find_document(self.session_selected_document)
74
            except DoorstopError:
75
                pass  # Document not found.
76
        for item in [] if the_document is None else the_document.items:
77
            # Select the first one
78
            return (item.uid, )
79
        return ()
80
81
    @session_selected_item.setter
82
    def session_selected_item(self, value: Optional[Tuple[UID, ...]]) -> None:
83
        self.__session_selected_item = () if value is None else value
84
85
    @property
86
    def session_selected_item_principal(self) -> Optional[UID]:
87
        try:
88
            return self.session_selected_item[0]  # pylint: disable=E1136
89
        except IndexError:
90
            return None
91
92
    @property
93
    def session_link_inception(self) -> str:
94
        return self.__session_link_inception
95
96
    @session_link_inception.setter
97
    def session_link_inception(self, value: Optional[str]) -> None:
98
        self.__session_link_inception = "" if value is None else value
99
100
    @property
101
    def session_selected_link(self) -> FrozenSet[UID]:
102
        return self.__session_selected_link
103
104
    @session_selected_link.setter
105
    def session_selected_link(self, value: Optional[FrozenSet[UID]]) -> None:
106
        self.__session_selected_link = frozenset() if value is None else value
107
108
    @property
109
    def session_extended_name(self) -> str:
110
        return self.__session_extended_name
111
112
    @session_extended_name.setter
113
    def session_extended_name(self, value: Optional[str]) -> None:
114
        self.__session_extended_name = "" if value is None else value
115
116
    def __init__(self) -> None:
117
        self.cwd = None
118
        self.project_path = None
119
        self.project_tree = None
120
        self.session_pending_change = None
121
        self.session_selected_document = None
122
        self.session_selected_item = None
123
        self.session_link_inception = None
124
        self.session_selected_link = None
125
        self.session_extended_name = None
126