home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2292 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  2.6 KB  |  87 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4.  
  5. class IconCache(object):
  6.     
  7.     def __init__(self, object_factory, qtgui_module):
  8.         self._object_factory = object_factory
  9.         self._qtgui_module = qtgui_module
  10.         self._cache = []
  11.  
  12.     
  13.     def get_icon(self, iconset):
  14.         iset = _IconSet(iconset)
  15.         
  16.         try:
  17.             idx = self._cache.index(iset)
  18.         except ValueError:
  19.             idx = -1
  20.  
  21.         if idx >= 0:
  22.             iset = self._cache[idx]
  23.         else:
  24.             name = 'icon'
  25.             idx = len(self._cache)
  26.             if idx > 0:
  27.                 name += str(idx)
  28.             
  29.             icon = self._object_factory.createQObject('QIcon', name, (), is_attribute = False)
  30.             iset.set_icon(icon, self._qtgui_module)
  31.             self._cache.append(iset)
  32.         return iset.icon
  33.  
  34.  
  35.  
  36. class _IconSet(object):
  37.     
  38.     def __init__(self, iconset):
  39.         self._fallback = iconset.text.replace('\\', '\\\\')
  40.         self._use_fallback = True
  41.         self._roles = { }
  42.         for i in iconset:
  43.             file_name = i.text
  44.             if file_name is not None:
  45.                 file_name = file_name.replace('\\', '\\\\')
  46.             
  47.             self._roles[i.tag] = file_name
  48.             self._use_fallback = False
  49.         
  50.         self.icon = None
  51.  
  52.     
  53.     def set_icon(self, icon, qtgui_module):
  54.         if self._use_fallback:
  55.             icon.addFile(self._fallback)
  56.         else:
  57.             for role, pixmap in self._roles.items():
  58.                 if role.endswith('off'):
  59.                     mode = role[:-3]
  60.                     state = qtgui_module.QIcon.Off
  61.                 elif role.endswith('on'):
  62.                     mode = role[:-2]
  63.                     state = qtgui_module.QIcon.On
  64.                 
  65.                 mode = getattr(qtgui_module.QIcon, mode.title())
  66.                 if pixmap:
  67.                     icon.addPixmap(qtgui_module.QPixmap(pixmap), mode, state)
  68.                     continue
  69.                 role.endswith('off')
  70.                 icon.addPixmap(qtgui_module.QPixmap(), mode, state)
  71.             
  72.         self.icon = icon
  73.  
  74.     
  75.     def __eq__(self, other):
  76.         if not isinstance(other, type(self)):
  77.             return NotImplemented
  78.         if self._use_fallback:
  79.             if other._use_fallback:
  80.                 return self._fallback == other._fallback
  81.             return False
  82.         if other._use_fallback:
  83.             return False
  84.         return self._roles == other._roles
  85.  
  86.  
  87.