1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 from timelinelib.general.observer import Observable
23 """
24 Store properties of a view.
25
26 Some timeline databases support storing some of these view properties
27 together with the data.
28 """
29
31 Observable.__init__(self)
32 self.sticky_balloon_event_ids = []
33 self.hovered_event = None
34 self.selected_event_ids = []
35 self._hidden_category_ids = []
36 self.period_selection = None
37 self.divider_position = 0.5
38 self.displayed_period = None
39 self.hscroll_amount = 0
40 self.view_cats_individually = False
41 self.fixed_event_vertical_pos = False
42 self.fuzzy_icon = None
43 self.locked_icon = None
44 self.hyperlink_icon = None
45 self.skip_s_in_decade_text = False
46 self.display_checkmark_on_events_done = False
47 self.legend_pos = 0
48 self._hide_events_done = False
49 self._all_events = []
50 self._event_highlight_counters = {}
51 self._selection_rect = None
52
54 return event.get_id() in self._event_highlight_counters
55
57 return len(self._event_highlight_counters) > 0
58
60 if clear:
61 self._event_highlight_counters.clear()
62 self._event_highlight_counters[event.get_id()] = 0
63
65 return self._event_highlight_counters[event.get_id()]
66
68 self._event_highlight_counters = {
69 event_id: count + 1
70 for event_id, count in self._event_highlight_counters.iteritems()
71 if count < limit
72 }
73
74 @property
76 return self._legend_pos
77
78 @legend_pos.setter
80 self._legend_pos = pos
81
82 @property
84 return self._hide_events_done
85
86 @hide_events_done.setter
88 self._hide_events_done = value
89
91 return self.fuzzy_icon
92
94 self.fuzzy_icon = name
95
97 return self.locked_icon
98
100 self.locked_icon = name
101
103 return self.hyperlink_icon
104
106 self.hyperlink_icon = name
107
109 return self.skip_s_in_decade_text
110
112 self.skip_s_in_decade_text = value
113
115 return self.display_checkmark_on_events_done
116
118 self.display_checkmark_on_events_done = value
119
121 self.fixed_event_vertical_pos = value
122
124 return self.fixed_event_vertical_pos
125
127 self.sticky_balloon_event_ids = []
128 self.hovered_event = None
129 self.selected_event_ids = []
130 self._hidden_category_ids = []
131 self.period_selection = None
132 self.displayed_period = None
133 self._event_highlight_counters = {}
134 self._notify()
135
137 if self.hovered_event != event:
138 self.hovered_event = event
139 self._notify()
140
142 self._selection_rect = rect
143
145 if self.view_cats_individually != view_cats_individually:
146 self.view_cats_individually = view_cats_individually
147 self._notify()
148
150 return self.displayed_period
151
155
164
167
169 if self.selected_event_ids:
170 self.selected_event_ids = []
171 self._notify()
172
177
179 return (self.hovered_event is not None and
180 event.id == self.hovered_event.id)
181
183 return event.id in self.sticky_balloon_event_ids
184
186 if has_sticky is True and event.id not in self.sticky_balloon_event_ids:
187 self.sticky_balloon_event_ids.append(event.id)
188 elif has_sticky is False and event.id in self.sticky_balloon_event_ids:
189 self.sticky_balloon_event_ids.remove(event.id)
190 self._notify()
191
199
205
213
215 self.displayed_period = period
216 if notify:
217 self._notify()
218
220 return self.selected_event_ids[:]
221
225
228
236
245
249
252
264