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