graphics/GraphicCommons.py
changeset 372 8cab11dd2325
parent 368 591ba4003d74
child 381 98890d848701
--- a/graphics/GraphicCommons.py	Wed Jun 10 13:18:42 2009 +0200
+++ b/graphics/GraphicCommons.py	Wed Jun 10 13:58:52 2009 +0200
@@ -201,7 +201,7 @@
     
     def Inhibit(self, inhibit):
         self.Inhibited = inhibit
-        if inhibit and self.LastValue is not None:
+        if not inhibit and self.LastValue is not None:
             self.SetValue(self.LastValue)
             self.LastValue = None
         
@@ -225,17 +225,18 @@
     def __init__(self, producer, debug, register_tick=True):
         self.DataProducer = producer
         self.Debug = debug
+        self.Inhibited = False
         
         self.DataConsumers = {}
         
         self.LastRefreshTime = gettime()
         
+        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.RefreshTimer = wx.Timer(self, -1)
-        self.Bind(wx.EVT_TIMER, self.OnRefreshTimer, self.RefreshTimer)
-    
     def __del__(self):
         if self.Debug:
             self.DataProducer.UnsubscribeDebugIECVariable("__tick__", self)
@@ -243,6 +244,7 @@
         self.RefreshTimer.Stop()
         
     def Inhibit(self, inhibit):
+        self.Inhibited = inhibit
         for consumer, iec_path in self.DataConsumers.iteritems():
             consumer.Inhibit(inhibit)
     
@@ -267,12 +269,14 @@
         event.Skip()
     
     def NewDataAvailable(self):
-        self.Inhibit(True)
-        current_time = gettime()
-        if current_time - self.LastRefreshTime > REFRESH_PERIOD:
-            self.LastRefreshTime = current_time
-            wx.CallAfter(self.RefreshViewOnNewData)
-
+        self.RefreshTimer.Stop()
+        if not self.Inhibited:
+            current_time = gettime()
+            if current_time - self.LastRefreshTime > REFRESH_PERIOD:
+                self.LastRefreshTime = current_time
+                self.Inhibit(True)
+                wx.CallAfter(self.RefreshViewOnNewData)
+            
     def RefreshViewOnNewData(self):
         if self:
             self.RefreshNewData()