home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / rhythmbox / plugins / artdisplay / Loader.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-30  |  2.3 KB  |  71 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import gobject
  5.  
  6. try:
  7.     import gnomevfs
  8.     use_gnomevfs = True
  9. except:
  10.     import urllib
  11.     use_gnomevfs = False
  12.  
  13.  
  14. class GnomeVFSAsyncSrc(object):
  15.     
  16.     def __init__(self):
  17.         self.chunk = 4096
  18.  
  19.     
  20.     def read_cb(self, handle, buffer, exc_type, bytes_requested, .10):
  21.         (data, callback, args) = .10
  22.         if exc_type:
  23.             if issubclass(exc_type, gnomevfs.EOFError):
  24.                 gobject.idle_add(callback, data, *args)
  25.                 handle.close((lambda : pass))
  26.             else:
  27.                 gobject.idle_add(callback, None, *args)
  28.                 handle.close((lambda : pass))
  29.             return None
  30.         
  31.         data += buffer
  32.         handle.read(self.chunk, self.read_cb, (data, callback, args))
  33.  
  34.     
  35.     def open_cb(self, handle, exc_type, .6):
  36.         (data, callback, args) = .6
  37.         if exc_type:
  38.             gobject.idle_add(callback, None, *args)
  39.             return None
  40.         
  41.         handle.read(self.chunk, self.read_cb, (data, callback, args))
  42.  
  43.     
  44.     def get_url(self, url, callback, *args):
  45.         gnomevfs.async.open(url, self.open_cb, data = ('', callback, args))
  46.  
  47.  
  48.  
  49. class URLLibSrc(object):
  50.     
  51.     def get_url(self, url, callback, *args):
  52.         
  53.         try:
  54.             sock = urllib.urlopen(url)
  55.             data = sock.read()
  56.             sock.close()
  57.             callback(data, *args)
  58.         except:
  59.             callback(None, *args)
  60.             raise 
  61.  
  62.  
  63.  
  64.  
  65. def Loader():
  66.     if use_gnomevfs:
  67.         return GnomeVFSAsyncSrc()
  68.     else:
  69.         return URLLibSrc()
  70.  
  71.