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 from python_qt_binding import QtGui
35 from python_qt_binding import QtCore
36
38 '''
39 Enabled the syntax highlightning for the yaml files.
40 '''
41
43 QtGui.QSyntaxHighlighter.__init__(self, parent)
44 self.rules = []
45 self.commentStart = QtCore.QRegExp("#")
46 self.commentEnd = QtCore.QRegExp("\n|\r")
47 self.commentFormat = QtGui.QTextCharFormat()
48 self.commentFormat.setFontItalic(True)
49 self.commentFormat.setForeground(QtCore.Qt.darkGray)
50
51 f = QtGui.QTextCharFormat()
52 r = QtCore.QRegExp()
53 r.setMinimal(True)
54 f.setFontWeight(QtGui.QFont.Normal)
55 f.setForeground (QtCore.Qt.blue)
56 tagList = ["\\btrue\\b", "\\bfalse\\b"]
57 for tag in tagList:
58 r.setPattern(tag)
59 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
60
61 f.setForeground(QtGui.QColor(127,64,127))
62 r.setPattern ("\\d+")
63 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
64
65 f.setForeground(QtCore.Qt.darkBlue)
66 r.setPattern("^\s*[_.\w]*\s*:")
67 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
68
69 f.setForeground(QtCore.Qt.darkBlue)
70 r.setPattern(":\s*:[_\.\w]*$|:\s*\@[_\.\w]*$")
71 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
72
73 f.setFontWeight(QtGui.QFont.Bold)
74 f.setForeground(QtCore.Qt.darkRed)
75 r.setPattern("^\s*-")
76 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
77
78 f.setForeground(QtCore.Qt.darkRed)
79 r.setPattern("^---$")
80 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
81
82 f.setForeground(QtCore.Qt.darkGreen)
83 r.setPattern("[\[\]\{\}\,]")
84 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
85
86 f.setFontWeight(QtGui.QFont.Normal)
87 f.setForeground(QtCore.Qt.magenta)
88 r.setPattern("\".*\"|\'.*\'")
89 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
90
91 f.setForeground(QtGui.QColor(127,64,127))
92 r.setPattern ("\\$\\(.*\\)")
93 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
94
95 f.setForeground (QtCore.Qt.lightGray)
96 r.setPattern ("<!DOCTYPE.*>")
97 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
98 r.setPattern ("<\\?xml.*\\?>")
99 self.rules.append((QtCore.QRegExp(r), QtGui.QTextCharFormat(f)))
100
101
103 for pattern, format in self.rules:
104 index = pattern.indexIn(text)
105 while index >= 0:
106 length = pattern.matchedLength()
107 self.setFormat(index, length, format)
108 index = pattern.indexIn(text, index + length)
109
110
111 self.setCurrentBlockState(0)
112 startIndex = 0
113 if self.previousBlockState() != 1:
114 startIndex = self.commentStart.indexIn(text)
115 if startIndex >= 0:
116 commentLength = len(text) - startIndex
117 self.setFormat(startIndex, commentLength, self.commentFormat)
118