/*! \file PygmentsHighlighter.cpp * \brief implements PygmentsHighlighter * \author "Melven Zoellner" * */ #include "PygmentsHighlighter.h" #include #include #include #include #include PygmentsHighlighter::PygmentsHighlighter(QTextDocument *parentDoc) : QSyntaxHighlighter(parentDoc) { // create an own pythonqt context for the highlighter _context = PythonQt::self()->createUniqueModule(); // name this object setObjectName("pygmentsHighlighter"); // make it accessable in pythonqt, // this allows to delegate the work in highlightBlock // to a python function _context.addObject(objectName(),this); // initialize python QString fileName = QString(PYMODULES)+"/PygmentsHighlighter.py"; QString code; QFile file; QFileInfo fileinfo; code.clear(); file.setFileName(fileName); fileinfo.setFile(fileName); if(!fileinfo.suffix().compare("py")) { file.open(QIODevice::ReadOnly); QTextStream filestrm(&file); while(!filestrm.atEnd())code.append(filestrm.readLine()+"\n"); _context.evalScript(code); file.close(); // this->mainContext->evalFile(pathList.at(i)); } //_context.evalFile(QString(PYMODULES)+"/PygmentsHighlighter.py"); } // just delegate the protected method setFormat from base class void PygmentsHighlighter::_setFormat(int start, int count, const QTextCharFormat &format) { setFormat(start, count, format); } void PygmentsHighlighter::highlightBlock(const QString &text) { // call python function to do everything QVariantList args; args.append(text); _context.call("highlightCode", args); }