Code highlighting implemented
[biaweb_qt.git] / highlighter.py
diff --git a/highlighter.py b/highlighter.py
new file mode 100644 (file)
index 0000000..95cfa90
--- /dev/null
@@ -0,0 +1,31 @@
+# BiaWeb Website content manager (c) 2010 V.Harishankar
+# HTML highlighter class
+
+import PyQt4
+
+class SimpleHtmlHighlighter (PyQt4.QtGui.QSyntaxHighlighter):
+       def __init__ (self, document):
+               PyQt4.QtGui.QSyntaxHighlighter.__init__ (self, document)
+
+       def highlightBlock (self, text):
+               # define the character highlight formats
+               charfmt1 = PyQt4.QtGui.QTextCharFormat ()
+               charfmt1.setFontWeight (PyQt4.QtGui.QFont.Bold)
+               charfmt1.setForeground (PyQt4.QtCore.Qt.blue)
+
+               charfmt2 = PyQt4.QtGui.QTextCharFormat ()
+               charfmt2.setForeground (PyQt4.QtCore.Qt.darkGreen)
+
+               # matching regular expressions
+               htmltagexps = [ (PyQt4.QtCore.QRegExp ("<[^<>]+>"), charfmt1),
+                                               (PyQt4.QtCore.QRegExp ("\"[^\"]+\""), charfmt2)
+                                       ]
+
+               # run through the list of regular expressions to highlight
+               for htmltagexp, charfmt in htmltagexps:
+                       index = htmltagexp.indexIn (text)
+                       while index >= 0:
+                               length = htmltagexp.matchedLength ()
+                               # self.setFormat is actual code highlighting
+                               self.setFormat (index, length, charfmt)
+                               index = htmltagexp.indexIn (text, index + length)