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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __all__ = [
  5.     'MediaList']
  6. __docformat__ = 'restructuredtext'
  7. __version__ = '$Id: medialist.py 1871 2009-10-17 19:57:37Z cthedot $'
  8. from cssutils.css import csscomment
  9. from mediaquery import MediaQuery
  10. import cssutils
  11. import xml.dom as xml
  12.  
  13. class MediaList(cssutils.util.Base, cssutils.util.ListSeq):
  14.     
  15.     def __init__(self, mediaText = None, readonly = False):
  16.         super(MediaList, self).__init__()
  17.         self._wellformed = False
  18.         if isinstance(mediaText, list):
  19.             mediaText = u','.join(mediaText)
  20.         
  21.         if mediaText:
  22.             self.mediaText = mediaText
  23.         
  24.         self._readonly = readonly
  25.  
  26.     
  27.     def __repr__(self):
  28.         return 'cssutils.stylesheets.%s(mediaText=%r)' % (self.__class__.__name__, self.mediaText)
  29.  
  30.     
  31.     def __str__(self):
  32.         return '<cssutils.stylesheets.%s object mediaText=%r at 0x%x>' % (self.__class__.__name__, self.mediaText, id(self))
  33.  
  34.     
  35.     def _absorb(self, other):
  36.         self.seq[:] = other.seq[:]
  37.         self._readonly = other._readonly
  38.  
  39.     length = property((lambda self: len(self)), doc = 'The number of media in the list (DOM readonly).')
  40.     
  41.     def _getMediaText(self):
  42.         return cssutils.ser.do_stylesheets_medialist(self)
  43.  
  44.     
  45.     def _setMediaText(self, mediaText):
  46.         self._checkReadonly()
  47.         wellformed = True
  48.         tokenizer = self._tokenize2(mediaText)
  49.         newseq = []
  50.         expected = None
  51.         while True:
  52.             mqtokens = self._tokensupto2(tokenizer, listseponly = True)
  53.             if mqtokens:
  54.                 if self._tokenvalue(mqtokens[-1]) == ',':
  55.                     expected = mqtokens.pop()
  56.                 else:
  57.                     expected = None
  58.                 mq = MediaQuery(mqtokens)
  59.                 if mq.wellformed:
  60.                     newseq.append(mq)
  61.                 else:
  62.                     wellformed = False
  63.                     self._log.error(u'MediaList: Invalid MediaQuery: %s' % self._valuestr(mqtokens))
  64.             mq.wellformed
  65.             break
  66.         if expected:
  67.             wellformed = False
  68.             self._log.error(u'MediaList: Cannot end with ",".')
  69.         
  70.         if wellformed:
  71.             del self[:]
  72.             for mq in newseq:
  73.                 self.appendMedium(mq)
  74.             
  75.             self._wellformed = True
  76.         
  77.  
  78.     mediaText = property(_getMediaText, _setMediaText, doc = 'The parsable textual representation of the media list.')
  79.     
  80.     def __prepareset(self, newMedium):
  81.         self._checkReadonly()
  82.         if not isinstance(newMedium, MediaQuery):
  83.             newMedium = MediaQuery(newMedium)
  84.         
  85.         if newMedium.wellformed:
  86.             return newMedium
  87.  
  88.     
  89.     def __setitem__(self, index, newMedium):
  90.         newMedium = self._MediaList__prepareset(newMedium)
  91.         if newMedium:
  92.             self.seq[index] = newMedium
  93.         
  94.  
  95.     
  96.     def appendMedium(self, newMedium):
  97.         newMedium = self._MediaList__prepareset(newMedium)
  98.         if newMedium:
  99.             mts = [ self._normalize(mq.mediaType) for mq in self ]
  100.             newmt = self._normalize(newMedium.mediaType)
  101.             if newmt in mts:
  102.                 self.deleteMedium(newmt)
  103.                 self.seq.append(newMedium)
  104.             elif u'all' == newmt:
  105.                 h = None
  106.                 for mq in self:
  107.                     if mq.mediaType == u'handheld':
  108.                         h = mq
  109.                         continue
  110.                     []
  111.                 
  112.                 del self[:]
  113.                 self.seq.append(newMedium)
  114.                 if h:
  115.                     self.append(h)
  116.                 
  117.             elif u'all' in mts:
  118.                 if u'handheld' == newmt:
  119.                     self.seq.append(newMedium)
  120.                     self._log.warn(u'MediaList: Already specified "all" but still setting new medium: %r' % newMedium, error = xml.dom.InvalidModificationErr, neverraise = True)
  121.                 else:
  122.                     self._log.warn(u'MediaList: Ignoring new medium %r as already specified "all" (set ``mediaText`` instead).' % newMedium, error = xml.dom.InvalidModificationErr)
  123.             else:
  124.                 self.seq.append(newMedium)
  125.             return True
  126.         return False
  127.  
  128.     
  129.     def append(self, newMedium):
  130.         self.appendMedium(newMedium)
  131.  
  132.     
  133.     def deleteMedium(self, oldMedium):
  134.         self._checkReadonly()
  135.         oldMedium = self._normalize(oldMedium)
  136.         for i, mq in enumerate(self):
  137.             if self._normalize(mq.mediaType) == oldMedium:
  138.                 del self[i]
  139.                 break
  140.                 continue
  141.         
  142.  
  143.     
  144.     def item(self, index):
  145.         
  146.         try:
  147.             return self[index].mediaType
  148.         except IndexError:
  149.             return None
  150.  
  151.  
  152.     wellformed = property((lambda self: self._wellformed))
  153.  
  154.