34 |
34 |
35 #------------------------------------------------------------------------------- |
35 #------------------------------------------------------------------------------- |
36 # Debug Variable Graphic Viewer class |
36 # Debug Variable Graphic Viewer class |
37 #------------------------------------------------------------------------------- |
37 #------------------------------------------------------------------------------- |
38 |
38 |
39 |
39 SECOND = 1000000000 |
40 RANGE_VALUES = [str(25 * 2 ** i) for i in xrange(6)] |
40 MINUTE = 60 * SECOND |
|
41 HOUR = 60 * MINUTE |
|
42 |
|
43 RANGE_VALUES = [(str(25 * 2 ** i), 25 * 2 ** i) for i in xrange(6)] |
|
44 TIME_RANGE_VALUES = [("%ds" % i, i * SECOND) for i in (10, 20, 30)] + \ |
|
45 [("%dm" % i, i * MINUTE) for i in (1, 2, 5, 10, 20, 30)] + \ |
|
46 [("%dh" % i, i * HOUR) for i in (1, 2, 3, 6, 12, 24)] |
41 |
47 |
42 [ID_GRAPHICVIEWER, ID_GRAPHICVIEWERCANVAS, |
48 [ID_GRAPHICVIEWER, ID_GRAPHICVIEWERCANVAS, |
43 ID_GRAPHICVIEWERCANVASRANGE, ID_GRAPHICVIEWERCANVASPOSITION, |
49 ID_GRAPHICVIEWERCANVASRANGE, ID_GRAPHICVIEWERCANVASPOSITION, |
44 ID_GRAPHICVIEWERRESETBUTTON, ID_GRAPHICVIEWERCURRENTBUTTON, |
50 ID_GRAPHICVIEWERRESETBUTTON, ID_GRAPHICVIEWERCURRENTBUTTON, |
45 ID_GRAPHICVIEWERSTATICTEXT1, ID_GRAPHICVIEWERSTATICTEXT2, |
51 ID_GRAPHICVIEWERSTATICTEXT1, ID_GRAPHICVIEWERSTATICTEXT2, |
106 label=_('Range:'), name='staticText1', parent=self.Editor, |
112 label=_('Range:'), name='staticText1', parent=self.Editor, |
107 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
113 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
108 |
114 |
109 self.CanvasRange = wx.ComboBox(id=ID_GRAPHICVIEWERCANVASRANGE, |
115 self.CanvasRange = wx.ComboBox(id=ID_GRAPHICVIEWERCANVASRANGE, |
110 name='CanvasRange', parent=self.Editor, pos=wx.Point(0, 0), |
116 name='CanvasRange', parent=self.Editor, pos=wx.Point(0, 0), |
111 size=wx.Size(100, 28), choices=RANGE_VALUES, style=0) |
117 size=wx.Size(100, 28), style=0) |
112 self.CanvasRange.SetStringSelection("25") |
|
113 self.Bind(wx.EVT_COMBOBOX, self.OnRangeChanged, id=ID_GRAPHICVIEWERCANVASRANGE) |
118 self.Bind(wx.EVT_COMBOBOX, self.OnRangeChanged, id=ID_GRAPHICVIEWERCANVASRANGE) |
114 self.Bind(wx.EVT_TEXT_ENTER, self.OnRangeChanged, id=ID_GRAPHICVIEWERCANVASRANGE) |
119 self.Bind(wx.EVT_TEXT_ENTER, self.OnRangeChanged, id=ID_GRAPHICVIEWERCANVASRANGE) |
115 |
120 |
116 self.staticText2 = wx.StaticText(id=ID_GRAPHICVIEWERSTATICTEXT2, |
121 self.staticText2 = wx.StaticText(id=ID_GRAPHICVIEWERSTATICTEXT2, |
117 label=_('Position:'), name='staticText2', parent=self.Editor, |
122 label=_('Position:'), name='staticText2', parent=self.Editor, |
147 def __init__(self, parent, window, producer, instancepath = ""): |
152 def __init__(self, parent, window, producer, instancepath = ""): |
148 EditorPanel.__init__(self, parent, "", window, None) |
153 EditorPanel.__init__(self, parent, "", window, None) |
149 DebugViewer.__init__(self, producer, True, False) |
154 DebugViewer.__init__(self, producer, True, False) |
150 |
155 |
151 self.InstancePath = instancepath |
156 self.InstancePath = instancepath |
152 |
157 self.RangeValues = None |
|
158 |
153 self.Datas = [] |
159 self.Datas = [] |
154 self.CurrentValue = 0 |
160 self.CurrentValue = 0 |
155 self.CurrentRange = 25 |
161 self.Ticktime = self.DataProducer.GetTicktime() |
|
162 self.RefreshCanvasRange() |
156 |
163 |
157 self.AddDataConsumer(self.InstancePath.upper(), self) |
164 self.AddDataConsumer(self.InstancePath.upper(), self) |
158 |
165 |
159 def __del__(self): |
166 def __del__(self): |
160 DebugViewer.__del__(self) |
167 DebugViewer.__del__(self) |
166 return self.InstancePath |
173 return self.InstancePath |
167 |
174 |
168 def ResetView(self): |
175 def ResetView(self): |
169 self.Datas = [] |
176 self.Datas = [] |
170 self.CurrentValue = 0 |
177 self.CurrentValue = 0 |
|
178 self.Ticktime = self.DataProducer.GetTicktime() |
|
179 self.RefreshCanvasRange() |
171 self.RefreshView() |
180 self.RefreshView() |
172 |
181 |
173 def RefreshNewData(self): |
182 def RefreshNewData(self): |
174 self.RefreshView(False) |
183 self.RefreshView(False) |
175 DebugViewer.RefreshNewData(self) |
184 DebugViewer.RefreshNewData(self) |
176 |
185 |
|
186 def RefreshCanvasRange(self): |
|
187 if self.Ticktime == 0 and self.RangeValues != RANGE_VALUES: |
|
188 self.RangeValues = RANGE_VALUES |
|
189 self.RangeValues_dict = dict(RANGE_VALUES) |
|
190 self.CanvasRange.Clear() |
|
191 for text, value in RANGE_VALUES: |
|
192 self.CanvasRange.Append(text) |
|
193 self.CanvasRange.SetStringSelection(RANGE_VALUES[0][0]) |
|
194 self.CurrentRange = RANGE_VALUES[0][1] |
|
195 elif self.RangeValues != TIME_RANGE_VALUES: |
|
196 self.RangeValues = TIME_RANGE_VALUES |
|
197 self.RangeValues_dict = dict(TIME_RANGE_VALUES) |
|
198 self.CanvasRange.Clear() |
|
199 for text, value in TIME_RANGE_VALUES: |
|
200 self.CanvasRange.Append(text) |
|
201 self.CanvasRange.SetStringSelection(TIME_RANGE_VALUES[0][0]) |
|
202 self.CurrentRange = TIME_RANGE_VALUES[0][1] / self.Ticktime |
|
203 |
177 def RefreshView(self, force=True): |
204 def RefreshView(self, force=True): |
178 self.Freeze() |
205 self.Freeze() |
179 if force or self.CurrentValue + self.CurrentRange == len(self.Datas) or self.CurrentValue + len(self.Datas) < self.CurrentRange: |
206 if force or self.CurrentValue + self.CurrentRange == len(self.Datas) or self.CurrentValue + len(self.Datas) < self.CurrentRange: |
180 var_name = self.InstancePath.split(".")[-1] |
207 var_name = self.InstancePath.split(".")[-1] |
181 |
208 |
212 self.CanvasPosition.SetScrollbar(self.CurrentValue, self.CurrentRange, len(self.Datas), self.CurrentRange) |
239 self.CanvasPosition.SetScrollbar(self.CurrentValue, self.CurrentRange, len(self.Datas), self.CurrentRange) |
213 |
240 |
214 def OnRangeChanged(self, event): |
241 def OnRangeChanged(self, event): |
215 old_range = self.CurrentRange |
242 old_range = self.CurrentRange |
216 try: |
243 try: |
217 self.CurrentRange = int(self.CanvasRange.GetValue()) |
244 if self.Ticktime == 0: |
|
245 self.CurrentRange = self.RangeValues_dict[self.CanvasRange.GetValue()] |
|
246 else: |
|
247 self.CurrentRange = self.RangeValues_dict[self.CanvasRange.GetValue()] / self.Ticktime |
218 except ValueError, e: |
248 except ValueError, e: |
219 self.CanvasRange.SetValue(str(self.CurrentRange)) |
249 self.CanvasRange.SetValue(str(self.CurrentRange)) |
220 self.CurrentValue = max(0, min(self.CurrentValue + old_range - self.CurrentRange, |
250 self.CurrentValue = max(0, min(self.CurrentValue + old_range - self.CurrentRange, |
221 len(self.Datas) - self.CurrentRange)) |
251 len(self.Datas) - self.CurrentRange)) |
222 self.RefreshView() |
252 self.RefreshView() |