--- 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()