home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / python2.4 / site-packages / deskbar / Watcher.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  2.7 KB  |  93 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. '''
  5. Helper classes to monitor directories/files for changes using gnomevfs
  6. '''
  7. import traceback
  8. import gnomevfs
  9. import gobject
  10. import gtk
  11.  
  12. class Watcher(gobject.GObject):
  13.     __gsignals__ = {
  14.         'changed': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, [
  15.             gobject.TYPE_STRING]) }
  16.     
  17.     def __init__(self):
  18.         gobject.GObject.__init__(self)
  19.         self.watched = { }
  20.         self.monitor_type = gnomevfs.MONITOR_FILE
  21.  
  22.     
  23.     def add(self, args):
  24.         if type(args) is not list:
  25.             args = [
  26.                 args]
  27.         
  28.         for name in args:
  29.             if name == '':
  30.                 continue
  31.             
  32.             if name not in self.watched:
  33.                 
  34.                 try:
  35.                     self.watched[name] = gnomevfs.monitor_add(name, self.monitor_type, self._on_change)
  36.                 except Exception:
  37.                     msg = None
  38.                     traceback.print_exc()
  39.                     self.watched[name] = 0
  40.                 except:
  41.                     None<EXCEPTION MATCH>Exception
  42.                 
  43.  
  44.             None<EXCEPTION MATCH>Exception
  45.         
  46.  
  47.     
  48.     def remove(self, args):
  49.         if type(args) is not list:
  50.             args = [
  51.                 args]
  52.         
  53.         for name in args:
  54.             if name in self.watched:
  55.                 if self.watched[name] != 0:
  56.                     gnomevfs.monitor_cancel(self.watched[name])
  57.                 
  58.                 del self.watched[name]
  59.                 continue
  60.         
  61.  
  62.     
  63.     def remove_all(self):
  64.         self.remove(self.watched.keys())
  65.  
  66.     
  67.     def _on_change(self, monitor, changed, event):
  68.         if event == gnomevfs.MONITOR_EVENT_CHANGED or event == gnomevfs.MONITOR_EVENT_CREATED:
  69.             gobject.idle_add(self.emit, 'changed', gnomevfs.get_local_path_from_uri(changed))
  70.         
  71.  
  72.  
  73.  
  74. class FileWatcher(Watcher):
  75.     
  76.     def __init__(self):
  77.         Watcher.__init__(self)
  78.  
  79.  
  80.  
  81. class DirWatcher(Watcher):
  82.     
  83.     def __init__(self):
  84.         Watcher.__init__(self)
  85.         self.monitor_type = gnomevfs.MONITOR_DIRECTORY
  86.  
  87.  
  88. if gtk.pygtk_version < (2, 8, 0):
  89.     gobject.type_register(Watcher)
  90.     gobject.type_register(FileWatcher)
  91.     gobject.type_register(DirWatcher)
  92.  
  93.