graphics/GraphicCommons.py
changeset 407 0a324a874981
parent 399 3b9e0b092298
child 442 a756b58699b8
--- a/graphics/GraphicCommons.py	Wed Sep 02 18:21:46 2009 +0200
+++ b/graphics/GraphicCommons.py	Tue Sep 15 14:59:33 2009 +0200
@@ -211,8 +211,9 @@
 class DebugViewer:
     
     def __init__(self, producer, debug, register_tick=True):
-        self.DataProducer = producer
+        self.DataProducer = None
         self.Debug = debug
+        self.RegisterTick = register_tick
         self.Inhibited = False
         
         self.DataConsumers = {}
@@ -222,15 +223,24 @@
         self.RefreshTimer = wx.Timer(self, -1)
         self.Bind(wx.EVT_TIMER, self.OnRefreshTimer, self.RefreshTimer)
         
-        if register_tick and debug:
-            self.DataProducer.SubscribeDebugIECVariable("__tick__", self)
+        self.SetDataProducer(producer)
         
     def __del__(self):
-        if self.Debug:
-            self.DataProducer.UnsubscribeDebugIECVariable("__tick__", self)
+        self.DataProducer = None
         self.DeleteDataConsumers()
         self.RefreshTimer.Stop()
-        
+    
+    def SetDataProducer(self, producer):
+        if self.RegisterTick and self.Debug:
+            if producer is not None:
+                producer.SubscribeDebugIECVariable("__tick__", self)
+            elif self.DataProducer is not None:
+                self.DataProducer.UnsubscribeDebugIECVariable("__tick__", self)        
+        self.DataProducer = producer
+    
+    def IsDebugging(self):
+        return self.Debug
+    
     def Inhibit(self, inhibit):
         self.Inhibited = inhibit
         for consumer, iec_path in self.DataConsumers.iteritems():