# -*- mode:Python -*- # # This file is part of the Coriolis Software. # Copyright (c) UPMC/LIP6 2012-2012, All Rights Reserved # # +-----------------------------------------------------------------+ # | C O R I O L I S | # | C o r i o l i s / C h a m s B u i l d e r | # | | # | Author : Damien Dupuis | # | E-mail : Jean-Paul.Chaput@asim.lip6.fr | # | =============================================================== | # | Python : "./builder/Highlighter.py" | # +-----------------------------------------------------------------+ import re from PyQt4.QtCore import Qt from PyQt4.QtGui import QFont from PyQt4.QtGui import QColor from PyQt4.QtGui import QTextCharFormat from PyQt4.QtGui import QSyntaxHighlighter class Highlighter ( QSyntaxHighlighter ): Normal = 0x0001 Bold = 0x0002 Italic = 0x0004 ttyBackground = QColor.fromRgb( 255, 255, 221 ) # #ffffdd ttyBlack = QColor.fromRgb( 46, 52, 54 ) # #2e3436 ttyRed = QColor.fromRgb( 204, 0, 0 ) # #cc0000 ttyGreen = QColor.fromRgb( 78, 154, 6 ) # #4e9a06 ttyYellow = QColor.fromRgb( 196, 160, 0 ) # #c4a000 ttyBlue = QColor.fromRgb( 52, 101, 164 ) # #3465a4 ttyViolet = QColor.fromRgb( 117, 80, 123 ) # #75507b ttyCyan = QColor.fromRgb( 6, 152, 154 ) # #06989a ttyGrey = QColor.fromRgb( 211, 215, 207 ) # #d3d7cf ttyLightBlack = QColor.fromRgb( 85, 87, 83 ) # #555753 ttyLightRed = QColor.fromRgb( 239, 41, 41 ) # #ef2929 ttyLightGreen = QColor.fromRgb( 138, 226, 52 ) # #8ae234 ttyLightYellow = QColor.fromRgb( 252, 233, 79 ) # #fce94f ttyLightBlue = QColor.fromRgb( 114, 159, 207 ) # #729fcf ttyLightViolet = QColor.fromRgb( 173, 127, 168 ) # #ad7fa8 ttyLightCyan = QColor.fromRgb( 52, 226, 226 ) # #34e2e2 ttyLightGrey = QColor.fromRgb( 238, 238, 236 ) # #eeeeec Rules = [ [ttyLightViolet, Bold , re.compile(r'^Scanning.*'), None] , [ttyLightRed , Bold , re.compile(r'^Linking.*'), None] , [ttyLightGreen , Normal , re.compile(r'^\[(?P\s*\d+)%\]\s*(?PBuilding.*)'), None] , [ttyLightGreen , Bold , re.compile(r'^\[(?P\s*\d+)%\]\s*(?PBuilt target.*)'), None] , [ttyLightBlue , Normal , re.compile(r'^\[(?P\s*\d+)%\]\s*(?PGenerating.*moc_.*)'), None] , [ttyLightBlue , Bold , re.compile(r'^Generating.*'), None] , [ttyLightCyan , Normal , re.compile(r'^Install the project.*'), None] , [ttyCyan , Bold , re.compile(r'^-- Install.*'), None] , [ttyCyan , Bold|Italic, re.compile(r'^-- Up-to-date.*'), None] ] def __init__ ( self, parent=None ): QSyntaxHighlighter.__init__ ( self, parent ) for rule in Highlighter.Rules: if not rule[3]: rule[3] = QTextCharFormat() rule[3].setForeground( rule[0] ) if rule[1] & Highlighter.Normal: rule[3].setFontWeight( QFont.Normal ) if rule[1] & Highlighter.Bold: rule[3].setFontWeight( QFont.Bold ) if rule[1] & Highlighter.Italic: rule[3].setFontItalic( True ) return def highlightBlock ( self, line ): for rule in Highlighter.Rules: m = rule[2].match(line) if m: if m.groupdict().has_key('percent'): self.setFormat( 7, len(line), rule[3] ) else: self.setFormat( 0, len(line), rule[3] ) return