71 lines
2.2 KiB
C++
71 lines
2.2 KiB
C++
// File : CompileHighlighter.cpp
|
|
// Date : 01.10.2009
|
|
// Author : Dupuis Damien
|
|
//
|
|
|
|
#include "CompileHighlighter.h"
|
|
|
|
CompileHighlighter::CompileHighlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) {
|
|
// defines rules
|
|
CompileHighlighterRule rule;
|
|
|
|
//building/linking/scanning rule : blue Bold
|
|
_doingFormat.setForeground(Qt::blue);
|
|
_doingFormat.setFontWeight(QFont::Bold);
|
|
rule.format = _doingFormat;
|
|
rule.pattern = QRegExp("(^Building.*$|^Linking.*$|^Scanning.*$|^Built target.*$)");
|
|
_rules.append(rule);
|
|
|
|
//compile rule : darkBlue Normal
|
|
_compileFormat.setForeground(Qt::darkBlue);
|
|
rule.format = _compileFormat;
|
|
rule.pattern = QRegExp("(^\\[.*$)");
|
|
_rules.append(rule);
|
|
|
|
//install rule : cyan Bold
|
|
_installFormat.setForeground(Qt::cyan);
|
|
_installFormat.setFontWeight(QFont::Bold);
|
|
rule.format = _installFormat;
|
|
rule.pattern = QRegExp("(^Install the project.*$)");
|
|
_rules.append(rule);
|
|
|
|
//--install rule : darkCyan
|
|
_installingFormat.setForeground(Qt::darkCyan);
|
|
rule.format = _installingFormat;
|
|
rule.pattern = QRegExp("(^-- Install.*$)");
|
|
_rules.append(rule);
|
|
|
|
//--uptodate : darkCyan Italic
|
|
_uptodateFormat.setForeground(Qt::darkCyan);
|
|
_uptodateFormat.setFontItalic(true);
|
|
rule.format = _uptodateFormat;
|
|
rule.pattern = QRegExp("(^-- Up-to-date.*$)");
|
|
_rules.append(rule);
|
|
|
|
//warning rule
|
|
_warningFormat.setForeground(QColor("orange"));
|
|
rule.format = _warningFormat;
|
|
rule.pattern = QRegExp("(^/.*In function.*$|^/.*warning:.*$)");
|
|
_rules.append(rule);
|
|
|
|
//error rule
|
|
_errorFormat.setForeground(Qt::red);
|
|
rule.format = _errorFormat;
|
|
rule.pattern = QRegExp("(^/.*error:.*$|^make\\[.*$)");
|
|
_rules.append(rule);
|
|
}
|
|
|
|
void CompileHighlighter::highlightBlock(const QString &text) {
|
|
foreach (const CompileHighlighterRule &rule, _rules) {
|
|
QRegExp expression (rule.pattern);
|
|
int index = expression.indexIn(text);
|
|
while (index >= 0) {
|
|
int length = expression.matchedLength();
|
|
setFormat(index, length, rule.format);
|
|
index = expression.indexIn(text, index + length);
|
|
}
|
|
}
|
|
setCurrentBlockState(0);
|
|
}
|
|
|