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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __all__ = [
  5.     'SelectorList']
  6. __docformat__ = 'restructuredtext'
  7. __version__ = '$Id: selectorlist.py 1868 2009-10-17 19:36:54Z cthedot $'
  8. from selector import Selector
  9. import cssutils
  10. import xml.dom as xml
  11.  
  12. class SelectorList(cssutils.util.Base, cssutils.util.ListSeq):
  13.     
  14.     def __init__(self, selectorText = None, parentRule = None, readonly = False):
  15.         super(SelectorList, self).__init__()
  16.         self._parentRule = parentRule
  17.         if selectorText:
  18.             self.selectorText = selectorText
  19.         
  20.         self._readonly = readonly
  21.  
  22.     
  23.     def __repr__(self):
  24.         if self._namespaces:
  25.             st = (self.selectorText, self._namespaces)
  26.         else:
  27.             st = self.selectorText
  28.         return 'cssutils.css.%s(selectorText=%r)' % (self.__class__.__name__, st)
  29.  
  30.     
  31.     def __str__(self):
  32.         return '<cssutils.css.%s object selectorText=%r _namespaces=%r at 0x%x>' % (self.__class__.__name__, self.selectorText, self._namespaces, id(self))
  33.  
  34.     
  35.     def __setitem__(self, index, newSelector):
  36.         newSelector = self._SelectorList__prepareset(newSelector)
  37.         if newSelector:
  38.             self.seq[index] = newSelector
  39.         
  40.  
  41.     
  42.     def __prepareset(self, newSelector, namespaces = None):
  43.         if not namespaces:
  44.             namespaces = { }
  45.         
  46.         self._checkReadonly()
  47.         if not isinstance(newSelector, Selector):
  48.             newSelector = Selector((newSelector, namespaces), parent = self)
  49.         
  50.         if newSelector.wellformed:
  51.             newSelector._parent = self
  52.             return newSelector
  53.  
  54.     
  55.     def __getNamespaces(self):
  56.         
  57.         try:
  58.             return self.parentRule.parentStyleSheet.namespaces
  59.         except AttributeError:
  60.             namespaces = { }
  61.             for selector in self.seq:
  62.                 namespaces.update(selector._namespaces)
  63.             
  64.             return namespaces
  65.  
  66.  
  67.     
  68.     def _absorb(self, other):
  69.         self._parentRule = other._parentRule
  70.         self.seq[:] = other.seq[:]
  71.         self._readonly = other._readonly
  72.  
  73.     
  74.     def _getUsedUris(self):
  75.         uris = set()
  76.         for s in self:
  77.             uris.update(s._getUsedUris())
  78.         
  79.         return uris
  80.  
  81.     _namespaces = property(__getNamespaces, doc = 'If this SelectorList is\n        attached to a CSSStyleSheet the namespaces of that sheet are mirrored\n        here. While the SelectorList (or parentRule(s) are\n        not attached the namespaces of all children Selectors are used.')
  82.     
  83.     def append(self, newSelector):
  84.         self.appendSelector(newSelector)
  85.  
  86.     
  87.     def appendSelector(self, newSelector):
  88.         self._checkReadonly()
  89.         (newSelector, namespaces) = self._splitNamespacesOff(newSelector)
  90.         
  91.         try:
  92.             namespaces = self.parentRule.parentStyleSheet.namespaces
  93.         except AttributeError:
  94.             _namespaces = self._namespaces
  95.             _namespaces.update(namespaces)
  96.             namespaces = _namespaces
  97.  
  98.         newSelector = self._SelectorList__prepareset(newSelector, namespaces)
  99.         if newSelector:
  100.             seq = self.seq[:]
  101.             del self.seq[:]
  102.             for s in seq:
  103.                 if s.selectorText != newSelector.selectorText:
  104.                     self.seq.append(s)
  105.                     continue
  106.             
  107.             self.seq.append(newSelector)
  108.             return newSelector
  109.  
  110.     
  111.     def _getSelectorText(self):
  112.         return cssutils.ser.do_css_SelectorList(self)
  113.  
  114.     
  115.     def _setSelectorText(self, selectorText):
  116.         self._checkReadonly()
  117.         (selectorText, namespaces) = self._splitNamespacesOff(selectorText)
  118.         
  119.         try:
  120.             namespaces = self.parentRule.parentStyleSheet.namespaces
  121.         except AttributeError:
  122.             pass
  123.  
  124.         wellformed = True
  125.         tokenizer = self._tokenize2(selectorText)
  126.         newseq = []
  127.         expected = True
  128.         while True:
  129.             selectortokens = self._tokensupto2(tokenizer, listseponly = True)
  130.             if selectortokens:
  131.                 if self._tokenvalue(selectortokens[-1]) == ',':
  132.                     expected = selectortokens.pop()
  133.                 else:
  134.                     expected = None
  135.                 selector = Selector((selectortokens, namespaces), parent = self)
  136.                 if selector.wellformed:
  137.                     newseq.append(selector)
  138.                 else:
  139.                     wellformed = False
  140.                     self._log.error(u'SelectorList: Invalid Selector: %s' % self._valuestr(selectortokens))
  141.             selector.wellformed
  142.             break
  143.         if u',' == expected:
  144.             wellformed = False
  145.             self._log.error(u'SelectorList: Cannot end with ",": %r' % self._valuestr(selectorText))
  146.         elif expected:
  147.             wellformed = False
  148.             self._log.error(u'SelectorList: Unknown Syntax: %r' % self._valuestr(selectorText))
  149.         
  150.         if wellformed:
  151.             self.seq = newseq
  152.         
  153.  
  154.     selectorText = property(_getSelectorText, _setSelectorText, doc = '(cssutils) The textual representation of the selector for\n            a rule set.')
  155.     length = property((lambda self: len(self)), doc = 'The number of :class:`~cssutils.css.Selector` objects in the list.')
  156.     parentRule = property((lambda self: self._parentRule), doc = '(DOM) The CSS rule that contains this SelectorList or ``None`` if this SelectorList is not attached to a CSSRule.')
  157.     wellformed = property((lambda self: bool(len(self.seq))))
  158.  
  159.