home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 April / com_0405_1.iso / opensource / BTpp-0.5.4-bin.exe / $INSTDIR / BT++.exe / TimedUpdate.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2003-04-19  |  2.8 KB  |  68 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.2)
  3.  
  4. from threading import Thread, Event
  5. from time import time
  6.  
  7. class TimedUpdate(Thread):
  8.     
  9.     def __init__(self, interval, func, param = []):
  10.         Thread.__init__(self)
  11.         self._Interval = interval
  12.         self._Func = func
  13.         self._Param = param
  14.         self._Done = Event()
  15.  
  16.     
  17.     def SetInterval(self, interval):
  18.         self._Interval = interval
  19.  
  20.     
  21.     def Shutdown(self):
  22.         self._Done.set()
  23.  
  24.     
  25.     def Start(self):
  26.         self.start()
  27.  
  28.     
  29.     def run(self):
  30.         while 1:
  31.             if self._Done.isSet():
  32.                 return None
  33.             
  34.             apply(self._Func, self._Param)
  35.             self._Done.wait(self._Interval)
  36.  
  37.  
  38.  
  39. class UpdateManager:
  40.     
  41.     def __init__(self, interval, func, param = []):
  42.         self._Interval = interval
  43.         self._Func = func
  44.         self._Param = param
  45.         self._Refreshed = time()
  46.         self._Thread = TimedUpdate(interval, self.Update)
  47.         self.Update(force = True)
  48.         self._Thread.setDaemon(1)
  49.         self._Thread.Start()
  50.  
  51.     
  52.     def Update(self, force = False):
  53.         if time() > self._Refreshed + self._Interval or force:
  54.             apply(self._Func, self._Param)
  55.             self._Refreshed = time()
  56.         
  57.  
  58.     
  59.     def SetInterval(self, interval):
  60.         self._Interval = interval
  61.         self._Thread.SetInterval(interval)
  62.  
  63.     
  64.     def ShutDown(self):
  65.         self._Thread.Shutdown()
  66.  
  67.  
  68.