|
qavrg 0.0.28
|
#include <qavrghighlighter.h>
Classes | |
| struct | HighlightingRule |
Public Member Functions | |
| QavrgHighlighter (QTextDocument *parent=0) | |
Protected Member Functions | |
| void | highlightBlock (const QString &text) |
Private Attributes | |
| QVector< HighlightingRule > | highlightingRules |
| QRegExp | commentStartExpression |
| QRegExp | commentEndExpression |
| QTextCharFormat | keywordFormat |
| QTextCharFormat | classFormat |
| QTextCharFormat | singleLineCommentFormat |
| QTextCharFormat | multiLineCommentFormat |
| QTextCharFormat | quotationFormat |
| QTextCharFormat | functionFormat |
Definition at line 11 of file qavrghighlighter.h.
| QavrgHighlighter::QavrgHighlighter | ( | QTextDocument * | parent = 0 | ) |
Definition at line 5 of file qavrghighlighter.cpp.
References classFormat, commentEndExpression, commentStartExpression, QavrgHighlighter::HighlightingRule::format, functionFormat, highlightingRules, keywordFormat, multiLineCommentFormat, QavrgHighlighter::HighlightingRule::pattern, quotationFormat, and singleLineCommentFormat.
: QSyntaxHighlighter(parent)
{
HighlightingRule rule;
keywordFormat.setForeground(Qt::darkBlue);
keywordFormat.setFontWeight(QFont::Bold);
QStringList keywordPatterns;
keywordPatterns << "\\break\\b" << "\\bcase\\b" << "\\bcatch\\b"
<< "\\bcontinue\\b" << "\\bdefault\\b" << "\\bdelete\\b"
<< "\\bdo\\b" << "\\belse\\b" << "\\bfinally\\b"
<< "\\bfor\\b" << "\\bfunction\\b" << "\\bif\\b"
<< "\\bin\\b" << "\\binstanceof\\b" << "\\bnew\\b"
<< "\\breturn\\b" << "\\bswitch\\b" << "\\bthis\\b"
<< "\\bthrow\\b" << "\\btry\\b" << "\\btypeof\\b"
<< "\\bvar\\b" << "\\btypedef\\b" << "\\btypename\\b"
<< "\\bunion\\b" << "\\bvoid\\b" << "\\bwhile\\b"
<< "\\bwith\\b"
<< "\\babstract\\b" << "\\benum\\b" << "\\bint\\b" << "\\bshort\\b"
<< "\\bboolean\\b" << "\\bexport\\b" << "\\binterface\\b" << "\\bstatic\\b"
<< "\\bbyte\\b" << "\\bextends\\b" << "\\blong\\b" << "\\bsuper\\b"
<< "\\bchar\\b" << "\\bfinal\\b" << "\\bnative\\b" << "\\bsynchronized\\b"
<< "\\bclass\\b" << "\\bfloat\\b" << "\\bpackage\\b" << "\\bthrows\\b"
<< "\\bconst\\b" << "\\bgoto\\b" << "\\bprivate\\b" << "\\btransient\\b"
<< "\\bdebugger\\b" << "\\bimplements\\b" << "\\bprotected\\b" << "\\bvolatile\\b"
<< "\\bdouble\\b" << "\\bimport\\b" << "\\bpublic\\b";
foreach (QString pattern, keywordPatterns) {
rule.pattern = QRegExp(pattern);
rule.format = keywordFormat;
highlightingRules.append(rule);
}
classFormat.setFontWeight(QFont::Bold);
classFormat.setForeground(Qt::darkMagenta);
rule.pattern = QRegExp("\\bQ[A-Za-z]+\\b");
rule.format = classFormat;
highlightingRules.append(rule);
singleLineCommentFormat.setForeground(Qt::red);
rule.pattern = QRegExp("//[^\n]*");
rule.format = singleLineCommentFormat;
highlightingRules.append(rule);
multiLineCommentFormat.setForeground(Qt::red);
quotationFormat.setForeground(Qt::darkGreen);
rule.pattern = QRegExp("\".*\"");
rule.format = quotationFormat;
highlightingRules.append(rule);
functionFormat.setFontItalic(true);
functionFormat.setForeground(Qt::blue);
rule.pattern = QRegExp("\\b[A-Za-z0-9_]+(?=\\()");
rule.format = functionFormat;
highlightingRules.append(rule);
commentStartExpression = QRegExp("/\\*");
commentEndExpression = QRegExp("\\*/");
}
| void QavrgHighlighter::highlightBlock | ( | const QString & | text | ) | [protected] |
Definition at line 66 of file qavrghighlighter.cpp.
References commentEndExpression, commentStartExpression, QavrgHighlighter::HighlightingRule::format, highlightingRules, multiLineCommentFormat, and QavrgHighlighter::HighlightingRule::pattern.
{
foreach (HighlightingRule rule, highlightingRules) {
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);
}
}
setCurrentBlockState(0);
int startIndex = 0;
if (previousBlockState() != 1)
startIndex = text.indexOf(commentStartExpression);
while (startIndex >= 0) {
int endIndex = text.indexOf(commentEndExpression, startIndex);
int commentLength;
if (endIndex == -1) {
setCurrentBlockState(1);
commentLength = text.length() - startIndex;
} else {
commentLength = endIndex - startIndex
+ commentEndExpression.matchedLength();
}
setFormat(startIndex, commentLength, multiLineCommentFormat);
startIndex = text.indexOf(commentStartExpression,
startIndex + commentLength);
}
}
QTextCharFormat QavrgHighlighter::classFormat [private] |
Definition at line 33 of file qavrghighlighter.h.
Referenced by QavrgHighlighter().
QRegExp QavrgHighlighter::commentEndExpression [private] |
Definition at line 30 of file qavrghighlighter.h.
Referenced by highlightBlock(), and QavrgHighlighter().
QRegExp QavrgHighlighter::commentStartExpression [private] |
Definition at line 29 of file qavrghighlighter.h.
Referenced by highlightBlock(), and QavrgHighlighter().
QTextCharFormat QavrgHighlighter::functionFormat [private] |
Definition at line 37 of file qavrghighlighter.h.
Referenced by QavrgHighlighter().
QVector<HighlightingRule> QavrgHighlighter::highlightingRules [private] |
Definition at line 27 of file qavrghighlighter.h.
Referenced by highlightBlock(), and QavrgHighlighter().
QTextCharFormat QavrgHighlighter::keywordFormat [private] |
Definition at line 32 of file qavrghighlighter.h.
Referenced by QavrgHighlighter().
QTextCharFormat QavrgHighlighter::multiLineCommentFormat [private] |
Definition at line 35 of file qavrghighlighter.h.
Referenced by highlightBlock(), and QavrgHighlighter().
QTextCharFormat QavrgHighlighter::quotationFormat [private] |
Definition at line 36 of file qavrghighlighter.h.
Referenced by QavrgHighlighter().
QTextCharFormat QavrgHighlighter::singleLineCommentFormat [private] |
Definition at line 34 of file qavrghighlighter.h.
Referenced by QavrgHighlighter().
1.7.4