Fri, 31 Dec 2010 15:50:33 +0100
Updated copyright notice.
# -*- coding: utf-8 -*- # Copyright (c) 2008 - 2011 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing the handler class for handling a highlighting styles XML file. """ from PyQt4.QtGui import QColor, QFont from .Config import highlightingStylesFileFormatVersion from .XMLHandlerBase import XMLHandlerBase class HighlightingStylesHandler(XMLHandlerBase): """ Class implementing a sax handler to read a highlighting styles file. """ def __init__(self, lexers): """ Constructor @param lexers dictionary of lexer objects for which to import the styles """ XMLHandlerBase.__init__(self) self.lexers = lexers self.lexer = None self.startDocumentSpecific = self.startDocumentHighlightingStyles self.elements.update({ 'HighlightingStyles' : (self.startHighlightingStyles, self.defaultEndElement), 'Lexer' : (self.startLexer, self.defaultEndElement), 'Style' : (self.startStyle, self.defaultEndElement), }) def startDocumentHighlightingStyles(self): """ Handler called, when the document parsing is started. """ self.version = '' ################################################### ## below follow the individual handler functions ################################################### def startHighlightingStyles(self, attrs): """ Handler method for the "HighlightingStyles" start tag. @param attrs list of tag attributes """ self.version = attrs.get('version', highlightingStylesFileFormatVersion) def startLexer(self, attrs): """ Handler method for the "Lexer" start tag. @param attrs list of tag attributes """ language = attrs.get("name", "") if language and language in self.lexers: self.lexer = self.lexers[language] else: self.lexer = None def startStyle(self, attrs): """ Handler method for the "Style" start tag. @param attrs list of tag attributes """ self.buffer = "" if self.lexer is not None: style = attrs.get("style") if style is not None: style = int(style) color = attrs.get("color") if color is None: color = self.lexer.defaultColor(style) else: color = QColor(color) self.lexer.setColor(color, style) paper = attrs.get("paper") if paper is None: paper = self.lexer.defaultPaper(style) else: paper = QColor(paper) self.lexer.setPaper(paper, style) fontStr = attrs.get("font") if fontStr is None: font = self.lexer.defaultFont(style) else: font = QFont() font.fromString(fontStr) self.lexer.setFont(font, style) eolfill = attrs.get("eolfill") if eolfill is None: eolfill = self.lexer.defaulEolFill(style) else: eolfill = int(eolfill) self.lexer.setEolFill(eolfill, style) def getVersion(self): """ Public method to retrieve the version of the shortcuts. @return String containing the version number. """ return self.version