Computer Assited Medical Intervention Tool Kit  version 3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 
39 QT_BEGIN_NAMESPACE
40 class QTextDocument;
41 QT_END_NAMESPACE
42 
43 
51 class XmlHighlighter : public QSyntaxHighlighter
52 {
53  Q_OBJECT
54 
55 public:
56  XmlHighlighter(QTextDocument *parent = 0);
57 
58 protected:
59  void highlightBlock(const QString &text);
60  void highlightSubBlock(const QString &text, const int startIndex, const int currState);
61 
62 private:
64  {
65  QRegExp pattern;
66  QTextCharFormat format;
67  };
68  QVector<HighlightingRule> hlRules;
69 
76 
85 
87 
88 
89  QTextCharFormat xmlProcInstFormat;
90  QTextCharFormat xmlDoctypeFormat;
91  QTextCharFormat xmlCommentFormat;
92  QTextCharFormat xmlTagFormat;
93  QTextCharFormat xmlEntityFormat;
94  QTextCharFormat xmlAttributeFormat;
95  QTextCharFormat xmlAttValFormat;
96 
97 //Enumeration for types of element, used for tracking what
98 //we're inside while highlighting over multiline blocks.
99  enum xmlState {
100  inNothing, //Don't know if we'll need this or not.
101  inProcInst, //starting with <? and ending with ?>
102  inDoctypeDecl, //starting with <!DOCTYPE and ending with >
103  inOpenTag, //starting with < + xmlName and ending with /?>
104  inOpenTagName, //after < and before whitespace. Implies inOpenTag.
105  inAttribute, //if inOpenTag, starting with /s*xmlName/s*=/s*" and ending with ".
106  inAttName, //after < + xmlName + whitespace, and before =". Implies inOpenTag.
107  inAttVal, //after =" and before ". May also use single quotes. Implies inOpenTag.
108  inCloseTag, //starting with </ and ending with >.
109  inCloseTagName,//after </ and before >. Implies inCloseTag.
110  inComment //starting with <!-- and ending with -->. Overrides all others.
111  };
112 };
113 
114 
115 #endif
QTextCharFormat xmlDoctypeFormat
Definition: Xmlhighlighter.h:90
QRegExp xmlDoctypeStartExpression
Definition: Xmlhighlighter.h:74
Definition: Xmlhighlighter.h:102
QVector< HighlightingRule > hlRules
Definition: Xmlhighlighter.h:68
Definition: Xmlhighlighter.h:107
QRegExp xmlAttributeEndExpression
Definition: Xmlhighlighter.h:82
QRegExp xmlCloseTagEndExpression
Definition: Xmlhighlighter.h:80
QTextCharFormat xmlEntityFormat
Definition: Xmlhighlighter.h:93
QTextCharFormat xmlAttValFormat
Definition: Xmlhighlighter.h:95
QRegExp xmlProcInstStartExpression
Definition: Xmlhighlighter.h:70
Definition: Xmlhighlighter.h:104
QRegExp xmlOpenTagEndExpression
Definition: Xmlhighlighter.h:78
XmlHighlighter(QTextDocument *parent=0)
QRegExp xmlProcInstEndExpression
Definition: Xmlhighlighter.h:71
QRegExp xmlCloseTagStartExpression
Definition: Xmlhighlighter.h:79
QRegExp xmlAttValExpression
Definition: Xmlhighlighter.h:86
Definition: Xmlhighlighter.h:101
QRegExp xmlOpenTagStartExpression
Definition: Xmlhighlighter.h:77
Definition: Xmlhighlighter.h:100
QRegExp xmlCommentStartExpression
Definition: Xmlhighlighter.h:72
QRegExp xmlAttValEndExpression
Definition: Xmlhighlighter.h:84
xmlState
Definition: Xmlhighlighter.h:99
Definition: Xmlhighlighter.h:108
QRegExp xmlAttValStartExpression
Definition: Xmlhighlighter.h:83
QTextCharFormat xmlTagFormat
Definition: Xmlhighlighter.h:92
Definition: Xmlhighlighter.h:63
Definition: Xmlhighlighter.h:105
Definition: Xmlhighlighter.h:106
Definition: Xmlhighlighter.h:110
QTextCharFormat xmlCommentFormat
Definition: Xmlhighlighter.h:91
QRegExp xmlCommentEndExpression
Definition: Xmlhighlighter.h:73
QRegExp pattern
Definition: Xmlhighlighter.h:65
void highlightSubBlock(const QString &text, const int startIndex, const int currState)
Definition: Xmlhighlighter.h:103
void highlightBlock(const QString &text)
QTextCharFormat xmlAttributeFormat
Definition: Xmlhighlighter.h:94
QTextCharFormat format
Definition: Xmlhighlighter.h:66
TODO Comment class here.
Definition: Xmlhighlighter.h:51
QRegExp xmlDoctypeEndExpression
Definition: Xmlhighlighter.h:75
Definition: Xmlhighlighter.h:109
QTextCharFormat xmlProcInstFormat
Definition: Xmlhighlighter.h:89
QRegExp xmlAttributeStartExpression
Definition: Xmlhighlighter.h:81