diff -r af07b091bbee -r 0a324a874981 graphics/GraphicCommons.py --- 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():