78 lines
3.8 KiB
Python
78 lines
3.8 KiB
Python
|
|
# -*- mode:Python -*-
|
|
#
|
|
# This file is part of the Coriolis Software.
|
|
# Copyright (c) Sorbonne Université 2012-2021, All Rights Reserved
|
|
#
|
|
# +-----------------------------------------------------------------+
|
|
# | C O R I O L I S |
|
|
# | T o o l c h a i n B u i l d e r |
|
|
# | |
|
|
# | Author : Damien Dupuis |
|
|
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
|
# | =============================================================== |
|
|
# | Python : "./builder/Highlighter.py" |
|
|
# +-----------------------------------------------------------------+
|
|
|
|
|
|
import re
|
|
from PyQt4.QtCore import Qt
|
|
from PyQt4.QtGui import QFont, QColor, QTextCharFormat, 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<percent>\s*\d+)%\]\s*(?P<message>Building.*)'), None]
|
|
, [ttyLightGreen , Bold , re.compile(r'^\[(?P<percent>\s*\d+)%\]\s*(?P<message>Built target.*)'), None]
|
|
, [ttyLightBlue , Normal , re.compile(r'^\[(?P<percent>\s*\d+)%\]\s*(?P<message>Generating.*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 'percent' in m.groupdict():
|
|
self.setFormat( 7, len(line), rule[3] )
|
|
else:
|
|
self.setFormat( 0, len(line), rule[3] )
|
|
return
|