source: flowtimer/flowtimer/Phase.py@ a438158

guix
Last change on this file since a438158 was a438158, checked in by Enrico Schwass <ennoausberlin@…>, 9 months ago

more steps towards a full schedule implementation with json representation

  • Property mode set to 100644
File size: 1.9 KB
Line 
1import json
2
3
4class Phase:
5
6 """
7 This class is a representation of a single phase inside a timer
8 """
9
10 def __init__(self, title, ticks):
11 """
12 creates the variables associated with that class
13
14 :type title: string
15 :param title: Name of phase
16
17 :type ticks: int
18 :param ticks: ticks in seconds
19 """
20
21 self.title = title
22 self.initial_ticks = ticks
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
37
38 def to_json(self):
39 return json.dumps({"title": self.title, "initial_ticks": self.initial_ticks})
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
49 return ("-->" + self.title + "\nTicks left=" +
50 str(self._ticks_left) + "\n" + str(self._state) + "\n")
51
52 def is_sequence(self):
53 return False
54
55 def abort(self):
56 self._state = "finished"
57
58 def start(self):
59 self._state = "running"
60
61 def reset(self):
62 self._ticks_left = self.initial_ticks
63 self._state = "initial"
64
65 def pause(self):
66 self._state = "paused"
67
68 def running(self):
69 return self._state == "running"
70 # return self.time_left > 0
71
72 def finished(self):
73 return self._state == "finished"
74
75 def paused(self):
76 return self._state == "paused"
77
78 def tick(self, ticks):
79 result = self._ticks_left - ticks
80
81 if result <= 0:
82 self._ticks_left = 0
83 self._state = "finished"
84 else:
85 self._ticks_left = result
86 return result
Note: See TracBrowser for help on using the repository browser.