diff options
Diffstat (limited to 'utils/wpseditor/gui/src/qsyntaxer.cpp')
| -rw-r--r-- | utils/wpseditor/gui/src/qsyntaxer.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/utils/wpseditor/gui/src/qsyntaxer.cpp b/utils/wpseditor/gui/src/qsyntaxer.cpp new file mode 100644 index 0000000..412ca38 --- /dev/null +++ b/utils/wpseditor/gui/src/qsyntaxer.cpp @@ -0,0 +1,44 @@ +#include <QTextCharFormat>
+
+#include "qsyntaxer.h"
+
+QSyntaxer::QSyntaxer(QTextDocument *parent)
+ : QSyntaxHighlighter(parent) {
+ HighlightingRule rule;
+
+ hrules["operator"].pattern = QRegExp("%[^\\| \n<\\?%]{1,2}");
+ hrules["operator"].format.setFontWeight(QFont::Bold);
+ hrules["operator"].format.setForeground(Qt::darkBlue);
+
+
+ hrules["question"].pattern = QRegExp("%[\\?]{1}[^<]{1,2}");
+ hrules["question"].format.setForeground(Qt::darkMagenta);
+
+ hrules["question2"].pattern = QRegExp("(<|>)");
+ hrules["question2"].format.setForeground(Qt::red);
+
+
+ hrules["limiter"].pattern = QRegExp("\\|");
+ hrules["limiter"].format.setForeground(Qt::darkRed);
+
+ hrules["comment"].pattern = QRegExp("#[^\n]*");
+ hrules["comment"].format.setForeground(Qt::darkGreen);
+ hrules["comment"].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);
+ }
+ }
+
+}
|