graphics/GraphicCommons.py
changeset 407 0a324a874981
parent 399 3b9e0b092298
child 442 a756b58699b8
equal deleted inserted replaced
406:af07b091bbee 407:0a324a874981
   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