summaryrefslogtreecommitdiffstats
path: root/utils/wpseditor/gui/src/qsyntaxer.cpp
blob: 9c4cdd4653f3c3b7341ed28d368f00731ab0119c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <QTextCharFormat>

#include "qsyntaxer.h"

QSyntaxer::QSyntaxer(QTextDocument *parent)
        : QSyntaxHighlighter(parent) {
    HighlightingRule rule;

    hrules[0].pattern = QRegExp("%[^\\| \n<\\?%]{1,2}");
    hrules[0].format.setFontWeight(QFont::Bold);
    hrules[0].format.setForeground(Qt::darkBlue);

    
    hrules[1].pattern = QRegExp("%[\\?]{1}[^<]{1,2}");
    hrules[1].format.setForeground(Qt::darkMagenta);
    
    hrules[2].pattern = QRegExp("(<|>)");
    hrules[2].format.setForeground(Qt::red);

    hrules[3].pattern = QRegExp("\\|");
    hrules[3].format.setForeground(Qt::darkRed);
    
    hrules[4].pattern = QRegExp("#[^\n]*");
    hrules[4].format.setForeground(Qt::darkGreen);
    hrules[4].format.setFontItalic(true);
}
//
void QSyntaxer::highlightBlock(const QString &text) {
    QTextCharFormat wholeText;
    wholeText.setFont(QFont("arial",11,QFont::Normal));
    setFormat(0,text.length(),wholeText);

    foreach (HighlightingRule rule, hrules) {
        QRegExp expression(rule.pattern);
        int index = text.indexOf(expression);
        while (index >= 0) {
            int length = expression.matchedLength();
            setFormat(index, length, rule.format);
            index = text.indexOf(expression, index + length);
        }
    }
    
}