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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import pythoncom
  5. from win32com.client import Dispatch, _get_good_object_
  6. PyIDispatchType = pythoncom.TypeIIDs[pythoncom.IID_IDispatch]
  7.  
  8. def WrapEnum(ob, resultCLSID = None):
  9.     if type(ob) != pythoncom.TypeIIDs[pythoncom.IID_IEnumVARIANT]:
  10.         ob = ob.QueryInterface(pythoncom.IID_IEnumVARIANT)
  11.     
  12.     return EnumVARIANT(ob, resultCLSID)
  13.  
  14.  
  15. class Enumerator:
  16.     
  17.     def __init__(self, enum):
  18.         self._oleobj_ = enum
  19.         self.index = -1
  20.  
  21.     
  22.     def __getitem__(self, index):
  23.         return self._Enumerator__GetIndex(index)
  24.  
  25.     
  26.     def __call__(self, index):
  27.         return self._Enumerator__GetIndex(index)
  28.  
  29.     
  30.     def __GetIndex(self, index):
  31.         if type(index) != type(0):
  32.             raise TypeError, 'Only integer indexes are supported for enumerators'
  33.         type(index) != type(0)
  34.         if index != self.index + 1:
  35.             self._oleobj_.Reset()
  36.             if index:
  37.                 self._oleobj_.Skip(index)
  38.             
  39.         
  40.         self.index = index
  41.         result = self._oleobj_.Next(1)
  42.         if len(result):
  43.             return self._make_retval_(result[0])
  44.         raise IndexError, 'list index out of range'
  45.  
  46.     
  47.     def Next(self, count = 1):
  48.         ret = self._oleobj_.Next(count)
  49.         realRets = []
  50.         for r in ret:
  51.             realRets.append(self._make_retval_(r))
  52.         
  53.         return tuple(realRets)
  54.  
  55.     
  56.     def Reset(self):
  57.         return self._oleobj_.Reset()
  58.  
  59.     
  60.     def Clone(self):
  61.         return self.__class__(self._oleobj_.Clone(), self.resultCLSID)
  62.  
  63.     
  64.     def _make_retval_(self, result):
  65.         return result
  66.  
  67.  
  68.  
  69. class EnumVARIANT(Enumerator):
  70.     
  71.     def __init__(self, enum, resultCLSID = None):
  72.         self.resultCLSID = resultCLSID
  73.         Enumerator.__init__(self, enum)
  74.  
  75.     
  76.     def _make_retval_(self, result):
  77.         return _get_good_object_(result, resultCLSID = self.resultCLSID)
  78.  
  79.  
  80.  
  81. class Iterator:
  82.     
  83.     def __init__(self, enum, resultCLSID = None):
  84.         self.resultCLSID = resultCLSID
  85.         self._iter_ = iter(enum.QueryInterface(pythoncom.IID_IEnumVARIANT))
  86.  
  87.     
  88.     def __iter__(self):
  89.         return self
  90.  
  91.     
  92.     def next(self):
  93.         return _get_good_object_(self._iter_.next(), resultCLSID = self.resultCLSID)
  94.  
  95.  
  96.