home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- __all__ = [
- 'MediaList']
- __docformat__ = 'restructuredtext'
- __version__ = '$Id: medialist.py 1871 2009-10-17 19:57:37Z cthedot $'
- from cssutils.css import csscomment
- from mediaquery import MediaQuery
- import cssutils
- import xml.dom as xml
-
- class MediaList(cssutils.util.Base, cssutils.util.ListSeq):
-
- def __init__(self, mediaText = None, readonly = False):
- super(MediaList, self).__init__()
- self._wellformed = False
- if isinstance(mediaText, list):
- mediaText = u','.join(mediaText)
-
- if mediaText:
- self.mediaText = mediaText
-
- self._readonly = readonly
-
-
- def __repr__(self):
- return 'cssutils.stylesheets.%s(mediaText=%r)' % (self.__class__.__name__, self.mediaText)
-
-
- def __str__(self):
- return '<cssutils.stylesheets.%s object mediaText=%r at 0x%x>' % (self.__class__.__name__, self.mediaText, id(self))
-
-
- def _absorb(self, other):
- self.seq[:] = other.seq[:]
- self._readonly = other._readonly
-
- length = property((lambda self: len(self)), doc = 'The number of media in the list (DOM readonly).')
-
- def _getMediaText(self):
- return cssutils.ser.do_stylesheets_medialist(self)
-
-
- def _setMediaText(self, mediaText):
- self._checkReadonly()
- wellformed = True
- tokenizer = self._tokenize2(mediaText)
- newseq = []
- expected = None
- while True:
- mqtokens = self._tokensupto2(tokenizer, listseponly = True)
- if mqtokens:
- if self._tokenvalue(mqtokens[-1]) == ',':
- expected = mqtokens.pop()
- else:
- expected = None
- mq = MediaQuery(mqtokens)
- if mq.wellformed:
- newseq.append(mq)
- else:
- wellformed = False
- self._log.error(u'MediaList: Invalid MediaQuery: %s' % self._valuestr(mqtokens))
- mq.wellformed
- break
- if expected:
- wellformed = False
- self._log.error(u'MediaList: Cannot end with ",".')
-
- if wellformed:
- del self[:]
- for mq in newseq:
- self.appendMedium(mq)
-
- self._wellformed = True
-
-
- mediaText = property(_getMediaText, _setMediaText, doc = 'The parsable textual representation of the media list.')
-
- def __prepareset(self, newMedium):
- self._checkReadonly()
- if not isinstance(newMedium, MediaQuery):
- newMedium = MediaQuery(newMedium)
-
- if newMedium.wellformed:
- return newMedium
-
-
- def __setitem__(self, index, newMedium):
- newMedium = self._MediaList__prepareset(newMedium)
- if newMedium:
- self.seq[index] = newMedium
-
-
-
- def appendMedium(self, newMedium):
- newMedium = self._MediaList__prepareset(newMedium)
- if newMedium:
- mts = [ self._normalize(mq.mediaType) for mq in self ]
- newmt = self._normalize(newMedium.mediaType)
- if newmt in mts:
- self.deleteMedium(newmt)
- self.seq.append(newMedium)
- elif u'all' == newmt:
- h = None
- for mq in self:
- if mq.mediaType == u'handheld':
- h = mq
- continue
- []
-
- del self[:]
- self.seq.append(newMedium)
- if h:
- self.append(h)
-
- elif u'all' in mts:
- if u'handheld' == newmt:
- self.seq.append(newMedium)
- self._log.warn(u'MediaList: Already specified "all" but still setting new medium: %r' % newMedium, error = xml.dom.InvalidModificationErr, neverraise = True)
- else:
- self._log.warn(u'MediaList: Ignoring new medium %r as already specified "all" (set ``mediaText`` instead).' % newMedium, error = xml.dom.InvalidModificationErr)
- else:
- self.seq.append(newMedium)
- return True
- return False
-
-
- def append(self, newMedium):
- self.appendMedium(newMedium)
-
-
- def deleteMedium(self, oldMedium):
- self._checkReadonly()
- oldMedium = self._normalize(oldMedium)
- for i, mq in enumerate(self):
- if self._normalize(mq.mediaType) == oldMedium:
- del self[i]
- break
- continue
-
-
-
- def item(self, index):
-
- try:
- return self[index].mediaType
- except IndexError:
- return None
-
-
- wellformed = property((lambda self: self._wellformed))
-
-