209 REFRESH_PERIOD = 0.1 |
209 REFRESH_PERIOD = 0.1 |
210 |
210 |
211 class DebugViewer: |
211 class DebugViewer: |
212 |
212 |
213 def __init__(self, producer, debug, register_tick=True): |
213 def __init__(self, producer, debug, register_tick=True): |
214 self.DataProducer = producer |
214 self.DataProducer = None |
215 self.Debug = debug |
215 self.Debug = debug |
|
216 self.RegisterTick = register_tick |
216 self.Inhibited = False |
217 self.Inhibited = False |
217 |
218 |
218 self.DataConsumers = {} |
219 self.DataConsumers = {} |
219 |
220 |
220 self.LastRefreshTime = gettime() |
221 self.LastRefreshTime = gettime() |
221 |
222 |
222 self.RefreshTimer = wx.Timer(self, -1) |
223 self.RefreshTimer = wx.Timer(self, -1) |
223 self.Bind(wx.EVT_TIMER, self.OnRefreshTimer, self.RefreshTimer) |
224 self.Bind(wx.EVT_TIMER, self.OnRefreshTimer, self.RefreshTimer) |
224 |
225 |
225 if register_tick and debug: |
226 self.SetDataProducer(producer) |
226 self.DataProducer.SubscribeDebugIECVariable("__tick__", self) |
|
227 |
227 |
228 def __del__(self): |
228 def __del__(self): |
229 if self.Debug: |
229 self.DataProducer = None |
230 self.DataProducer.UnsubscribeDebugIECVariable("__tick__", self) |
|
231 self.DeleteDataConsumers() |
230 self.DeleteDataConsumers() |
232 self.RefreshTimer.Stop() |
231 self.RefreshTimer.Stop() |
233 |
232 |
|
233 def SetDataProducer(self, producer): |
|
234 if self.RegisterTick and self.Debug: |
|
235 if producer is not None: |
|
236 producer.SubscribeDebugIECVariable("__tick__", self) |
|
237 elif self.DataProducer is not None: |
|
238 self.DataProducer.UnsubscribeDebugIECVariable("__tick__", self) |
|
239 self.DataProducer = producer |
|
240 |
|
241 def IsDebugging(self): |
|
242 return self.Debug |
|
243 |
234 def Inhibit(self, inhibit): |
244 def Inhibit(self, inhibit): |
235 self.Inhibited = inhibit |
245 self.Inhibited = inhibit |
236 for consumer, iec_path in self.DataConsumers.iteritems(): |
246 for consumer, iec_path in self.DataConsumers.iteritems(): |
237 consumer.Inhibit(inhibit) |
247 consumer.Inhibit(inhibit) |
238 |
248 |