if atval in ('@charset ', '@font-face', '@import', '@namespace', '@page', '@media'):
self._log.error(u'CSSMediaRule: This rule is not allowed in CSSMediaRule - ignored: %s.' % self._valuestr(tokens), token = token, error = xml.dom.HierarchyRequestErr)
'ATKEYWORD': atrule }, default = ruleset, new = new)
if self.media.wellformed and wellformed:
self.name = name
self._setSeq(nameseq)
del self._cssRules[:]
for r in newcssrules:
r._parentRule = self
self._cssRules.append(r)
else:
self.media._absorb(oldmedia)
cssText = property(_getCssText, _setCssText, doc = '(DOM) The parsable textual representation of this rule.')
def _setName(self, name):
if isinstance(name, basestring) or name is None:
if not name:
name = None
self._name = name
else:
self._log.error(u'CSSImportRule: Not a valid name: %s' % name)
name = property((lambda self: self._name), _setName, doc = u'An optional name for this media rule.')
media = property((lambda self: self._media), doc = u'(DOM readonly) A list of media types for this rule of type :class:`~cssutils.stylesheets.MediaList`.')
def deleteRule(self, index):
self._checkReadonly()
if isinstance(index, cssrule.CSSRule):
for i, r in enumerate(self.cssRules):
if index == r:
index = i
break
continue
else:
raise xml.dom.IndexSizeErr(u"CSSMediaRule: Not a rule in this rule'a cssRules list: %s" % index)
try:
self._cssRules[index]._parentRule = None
del self._cssRules[index]
except IndexError:
raise xml.dom.IndexSizeErr(u'CSSMediaRule: %s is not a valid index in the rulelist of length %i' % (index, self._cssRules.length))
def add(self, rule):
self.insertRule(rule, index = None)
def insertRule(self, rule, index = None):
self._checkReadonly()
if index is None:
index = len(self._cssRules)
elif index < 0 or index > self._cssRules.length:
raise xml.dom.IndexSizeErr(u'CSSMediaRule: Invalid index %s for CSSRuleList with a length of %s.' % (index, self._cssRules.length))
if isinstance(rule, basestring):
tempsheet = cssutils.css.CSSStyleSheet()
tempsheet.cssText = rule
if (len(tempsheet.cssRules) != 1 or tempsheet.cssRules) and not isinstance(tempsheet.cssRules[0], cssutils.css.CSSRule):
self._log.error(u'CSSMediaRule: Not a CSSRule: %s' % rule)
return None
if isinstance(rule, cssutils.css.CSSCharsetRule) and isinstance(rule, cssutils.css.CSSFontFaceRule) and isinstance(rule, cssutils.css.CSSImportRule) and isinstance(rule, cssutils.css.CSSNamespaceRule) and isinstance(rule, cssutils.css.CSSPageRule) or isinstance(rule, CSSMediaRule):
self._log.error(u'CSSMediaRule: This type of rule is not allowed here: %s' % rule.cssText, error = xml.dom.HierarchyRequestErr)
return None
self._cssRules.insert(index, rule)
rule._parentRule = self
rule._parentStyleSheet = self.parentStyleSheet
return index
type = property((lambda self: self.MEDIA_RULE), doc = 'The type of this rule, as defined by a CSSRule type constant.')