Computer Assited Medical Intervention Tool Kit  version 5.0
Xmlhighlighter.h
Go to the documentation of this file.
1/*
2** Copyright 2009-10 Martin Holmes, Meagan Timney and the
3** University of Victoria Humanities Computing and Media
4** Centre.
5
6** This file is part of the projXMLEditor project which in
7** turn belongs to the Image Markup Tool version 2.0
8** project. The purpose of svgIconsTest is to provide a
9** platform to test and learn various features of Qt, and
10** to provide a semi-useful tool to aid in the rapid
11** creation and editing of resource files containing SVG
12** icons for Qt application development.
13
14** GNU Lesser General Public License Usage
15** This file may be used under the terms of the GNU Lesser
16** General Public License version 2.1 as published by the Free Software
17** Foundation and appearing in the file LICENSE.LGPL included in the
18** packaging of this file. Please review the following information to
19** ensure the GNU Lesser General Public License version 2.1 requirements
20** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
21
22** You may also use this code under the Mozilla Public Licence
23** version 1.1. MPL 1.1 can be found at http://www.mozilla.org/MPL/MPL-1.1.html.
24
25** "svgIconsTest" is distributed in the hope that it will be useful,
26** but WITHOUT ANY WARRANTY; without even the implied warranty of
27** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28** GNU Lesser General Public License for more details.
29*/
30
31#ifndef XMLHIGHLIGHTER_H
32#define XMLHIGHLIGHTER_H
33
34#include <QSyntaxHighlighter>
35
36#include <QHash>
37#include <QTextCharFormat>
38
39QT_BEGIN_NAMESPACE
40class QTextDocument;
41QT_END_NAMESPACE
42
43
51class XmlHighlighter : public QSyntaxHighlighter {
52 Q_OBJECT
53
54public:
55 XmlHighlighter(QTextDocument* parent = nullptr);
56
57protected:
58 void highlightBlock(const QString& text) override;
59 void highlightSubBlock(const QString& text, const int startIndex, const int currState);
60
61private:
63 QRegExp pattern;
64 QTextCharFormat format;
65 };
66 QVector<HighlightingRule> hlRules;
67
74
83
85
86
87 QTextCharFormat xmlProcInstFormat;
88 QTextCharFormat xmlDoctypeFormat;
89 QTextCharFormat xmlCommentFormat;
90 QTextCharFormat xmlTagFormat;
91 QTextCharFormat xmlEntityFormat;
92 QTextCharFormat xmlAttributeFormat;
93 QTextCharFormat xmlAttValFormat;
94
95//Enumeration for types of element, used for tracking what
96//we're inside while highlighting over multiline blocks.
97 enum xmlState {
98 inNothing, //Don't know if we'll need this or not.
99 inProcInst, //starting with <? and ending with ?>
100 inDoctypeDecl, //starting with <!DOCTYPE and ending with >
101 inOpenTag, //starting with < + xmlName and ending with /?>
102 inOpenTagName, //after < and before whitespace. Implies inOpenTag.
103 inAttribute, //if inOpenTag, starting with /s*xmlName/s*=/s*" and ending with ".
104 inAttName, //after < + xmlName + whitespace, and before =". Implies inOpenTag.
105 inAttVal, //after =" and before ". May also use single quotes. Implies inOpenTag.
106 inCloseTag, //starting with </ and ending with >.
107 inCloseTagName,//after </ and before >. Implies inCloseTag.
108 inComment //starting with <!-- and ending with -->. Overrides all others.
109 };
110};
111
112
113#endif
TODO Comment class here.
Definition: Xmlhighlighter.h:51
XmlHighlighter(QTextDocument *parent=nullptr)
[0]
Definition: Xmlhighlighter.cpp:39
void highlightSubBlock(const QString &text, const int startIndex, const int currState)
Definition: Xmlhighlighter.cpp:131
QTextCharFormat xmlAttValFormat
Definition: Xmlhighlighter.h:93
QRegExp xmlCloseTagStartExpression
Definition: Xmlhighlighter.h:77
QRegExp xmlCloseTagEndExpression
Definition: Xmlhighlighter.h:78
QRegExp xmlAttValStartExpression
Definition: Xmlhighlighter.h:81
QRegExp xmlCommentEndExpression
Definition: Xmlhighlighter.h:71
QRegExp xmlAttValEndExpression
Definition: Xmlhighlighter.h:82
QTextCharFormat xmlDoctypeFormat
Definition: Xmlhighlighter.h:88
QTextCharFormat xmlCommentFormat
Definition: Xmlhighlighter.h:89
QRegExp xmlDoctypeEndExpression
Definition: Xmlhighlighter.h:73
QRegExp xmlCommentStartExpression
Definition: Xmlhighlighter.h:70
QRegExp xmlDoctypeStartExpression
Definition: Xmlhighlighter.h:72
QTextCharFormat xmlProcInstFormat
Definition: Xmlhighlighter.h:87
void highlightBlock(const QString &text) override
Definition: Xmlhighlighter.cpp:363
QRegExp xmlOpenTagEndExpression
Definition: Xmlhighlighter.h:76
QVector< HighlightingRule > hlRules
Definition: Xmlhighlighter.h:66
QTextCharFormat xmlAttributeFormat
Definition: Xmlhighlighter.h:92
QRegExp xmlAttValExpression
Definition: Xmlhighlighter.h:84
QRegExp xmlAttributeStartExpression
Definition: Xmlhighlighter.h:79
QRegExp xmlProcInstEndExpression
Definition: Xmlhighlighter.h:69
QRegExp xmlProcInstStartExpression
Definition: Xmlhighlighter.h:68
xmlState
Definition: Xmlhighlighter.h:97
@ inDoctypeDecl
Definition: Xmlhighlighter.h:100
@ inCloseTag
Definition: Xmlhighlighter.h:106
@ inAttribute
Definition: Xmlhighlighter.h:103
@ inOpenTag
Definition: Xmlhighlighter.h:101
@ inProcInst
Definition: Xmlhighlighter.h:99
@ inAttVal
Definition: Xmlhighlighter.h:105
@ inOpenTagName
Definition: Xmlhighlighter.h:102
@ inNothing
Definition: Xmlhighlighter.h:98
@ inAttName
Definition: Xmlhighlighter.h:104
@ inComment
Definition: Xmlhighlighter.h:108
@ inCloseTagName
Definition: Xmlhighlighter.h:107
QTextCharFormat xmlEntityFormat
Definition: Xmlhighlighter.h:91
QRegExp xmlAttributeEndExpression
Definition: Xmlhighlighter.h:80
QTextCharFormat xmlTagFormat
Definition: Xmlhighlighter.h:90
QRegExp xmlOpenTagStartExpression
Definition: Xmlhighlighter.h:75
Definition: Xmlhighlighter.h:62
QRegExp pattern
Definition: Xmlhighlighter.h:63
QTextCharFormat format
Definition: Xmlhighlighter.h:64