1
2
3
4 """ pyforms.gui.Controls.ControlEventTimeline.TimelineDelta
5
6 """
7
8 from PyQt4 import QtGui
9
10 __author__ = ["Ricardo Ribeiro", "Hugo Cachitas"]
11 __credits__ = ["Ricardo Ribeiro", "Hugo Cachitas"]
12 __license__ = "MIT"
13 __version__ = "0.0"
14 __maintainer__ = "Ricardo Ribeiro"
15 __email__ = "ricardojvr@gmail.com"
16 __status__ = "Development"
20
21 - def __init__(self, begin, end=30, title=None, height=30, top=0, parent=None):
36
37
38
39
40
42 return self.begin <= x <= self.end and self._top <= y <= (self._top + self._height)
43
45 return not self._lock and x == int(round(self.begin)) and self._top <= y <= (self._top + self._height)
46
48 return not self._lock and int(round(self.end)) == x and self._top <= y <= (self._top + self._height)
49
51 """Move the right edge of the event rectangle."""
52
53 if self._lock:
54 return
55
56
57 if self._end <= self._begin - x and x < 0:
58 return
59
60
61 self._end += x / self._parent._scale
62
63
64 if self._end > (self._parent.width() / self._parent._scale):
65 self._end = (self._parent.width() / self._parent._scale)
66
68 """Move the left edge of the event rectangle."""
69
70 if self._lock:
71 return
72
73
74 if self._begin >= self._end - x and x > 0:
75 return
76
77
78 self._begin += x / self._parent._scale
79
80
81 if self._begin < 0:
82 self._begin = 0
83
84 - def move(self, x, y):
85 if self._lock:
86 return
87 if (self.begin + x) >= 0 and (self.end + x) <= self._parent.width():
88 self._begin += x / self._parent._scale
89 self._end += x / self._parent._scale
90 current_track = self.track
91 new_track = (y - 20) // 34
92 if current_track != new_track and new_track >= 0 and new_track <= self._parent.numberoftracks:
93 self.track = new_track
94 if new_track >= self._parent.numberoftracks:
95 self._parent.numberoftracks += 1
96
98 text, ok = QtGui.QInputDialog.getText(
99 self._parent, 'Edit event', 'Comment:', text=self._title)
100 if ok:
101 self._title = str(text)
102
103 - def draw(self, painter, showvalues=False):
104 start, end = self.begin, self.end
105 if self._lock:
106 transparency = 0.1
107 else:
108 transparency = 0.5
109 painter.setPen(QtGui.QColor(0, 0, 0))
110 painter.setOpacity(transparency)
111 painter.drawRoundedRect(
112 start, self._top, end - start, self._height, 3, 3)
113 painter.setOpacity(1.0)
114
115 painter.drawText(start + 3, self._top + 19, self._title)
116 if showvalues:
117 painter.drawText(
118 start, self._top + 44, "[%d;%d] delta:%d" % (self._begin, self._end, self._end - self._begin))
119
120
121
122
123
124 @property
125 - def lock(self): return self._lock
126
127 @lock.setter
129
130 @property
131 - def begin(self): return self._begin * self._parent._scale
132
133 @begin.setter
135 if self._lock:
136 return
137 self._begin = value / self._parent._scale
138 if self._begin < 0:
139 self._begin = 0
140
141 @property
142 - def end(self): return self._end * self._parent._scale
143
144 @end.setter
145 - def end(self, value):
146 if self._lock:
147 return
148 self._end = value / self._parent._scale
149 if self._end > (self._parent.width() / self._parent._scale):
150 self._end = (self._parent.width() / self._parent._scale)
151
152 @property
154 return (self._top - 20) // 34
155
156 @track.setter
158
159
160
161 self._top = value * 34 + 20
162
163 @property
165
166 @color.setter
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195 @property
197 return [self._lock,
198 int(round(self._begin)),
199 int(round(self._end)),
200 self._title,
201 self._defautcolor.name(),
202 self.track]
203
204 @properties.setter
215