source:
flowtimer/flowtimer/Phase.py@
813e855
Last change on this file since 813e855 was 813e855, checked in by , 9 months ago | |
---|---|
|
|
File size: 2.0 KB |
Rev | Line | |
---|---|---|
[84123db] | 1 | import json |
2 | ||
3 | ||
[99dee0f] | 4 | class Phase: |
5 | ||
6 | """ | |
7 | This class is a representation of a single phase inside a timer | |
8 | """ | |
9 | ||
[f959488] | 10 | def __init__(self, title, ticks): |
[99dee0f] | 11 | """ |
12 | creates the variables associated with that class | |
13 | ||
14 | :type title: string | |
15 | :param title: Name of phase | |
16 | ||
[f959488] | 17 | :type ticks: int |
18 | :param ticks: ticks in seconds | |
[99dee0f] | 19 | """ |
20 | ||
21 | self.title = title | |
[f959488] | 22 | self.initial_ticks = ticks |
[44c3377] | 23 | self._state = "initial" |
24 | self._ticks_left = ticks | |
25 | ||
26 | @property | |
27 | def initial_repetitions(self): | |
28 | return 1 | |
29 | ||
30 | @property | |
31 | def state(self): | |
32 | return self._state | |
33 | ||
34 | @property | |
35 | def ticks_left(self): | |
36 | return self._ticks_left | |
[99dee0f] | 37 | |
[84123db] | 38 | def to_json(self): |
[daa2276] | 39 | return json.dumps({"title": self.title, "initial_ticks": self.initial_ticks}) |
[99dee0f] | 40 | |
41 | def __str__(self): | |
42 | """ | |
43 | Human readable representation of all attributes | |
44 | ||
45 | :return: human readable representation of all attributes | |
46 | :rtype: String | |
47 | """ | |
48 | ||
[d7a66ad] | 49 | return ("Title:" + self.title + "\nTicks left=" + |
[44c3377] | 50 | str(self._ticks_left) + "\n" + str(self._state) + "\n") |
[99dee0f] | 51 | |
[5741f6d] | 52 | def is_sequence(self): |
[a438158] | 53 | return False |
[5741f6d] | 54 | |
[99dee0f] | 55 | def abort(self): |
[d7a66ad] | 56 | self._state = "aborted" |
57 | ||
[813e855] | 58 | def is_aborted(self): |
[d7a66ad] | 59 | return self.state == "aborted" |
[99dee0f] | 60 | |
61 | def start(self): | |
[44c3377] | 62 | self._state = "running" |
[99dee0f] | 63 | |
[f959488] | 64 | def reset(self): |
[44c3377] | 65 | self._ticks_left = self.initial_ticks |
66 | self._state = "initial" | |
[f959488] | 67 | |
[99dee0f] | 68 | def pause(self): |
[44c3377] | 69 | self._state = "paused" |
[99dee0f] | 70 | |
[813e855] | 71 | def is_running(self): |
[44c3377] | 72 | return self._state == "running" |
[99dee0f] | 73 | # return self.time_left > 0 |
74 | ||
[813e855] | 75 | def is_terminated(self): |
76 | return (self.is_completed() or self.is_aborted()) | |
[99dee0f] | 77 | |
[813e855] | 78 | def is_completed(self): |
79 | return self.ticks_left < 1 | |
80 | ||
81 | def is_paused(self): | |
[44c3377] | 82 | return self._state == "paused" |
[99dee0f] | 83 | |
[f959488] | 84 | def tick(self, ticks): |
[44c3377] | 85 | result = self._ticks_left - ticks |
[99dee0f] | 86 | |
[f959488] | 87 | if result <= 0: |
[44c3377] | 88 | self._ticks_left = 0 |
[d7a66ad] | 89 | self._state = "completed" |
[f959488] | 90 | else: |
[44c3377] | 91 | self._ticks_left = result |
[f959488] | 92 | return result |
Note:
See TracBrowser
for help on using the repository browser.