# HG changeset patch
# User insilmaril
# Date 1174477898 0
# Node ID bd71dfb2292c06eddb48c5a52602f99e33fe3e76
# Parent  c585be63ec6981ed1fb95c3ddaccfd19ed6948e8
Slightly improved scripting abilities

diff -r c585be63ec69 -r bd71dfb2292c demos/todo.vym
Binary file demos/todo.vym has changed
diff -r c585be63ec69 -r bd71dfb2292c highlighter.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/highlighter.cpp	Wed Mar 21 11:51:38 2007 +0000
@@ -0,0 +1,150 @@
+/****************************************************************************
+**
+** Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.
+**
+** This file is part of the example classes of the Qt Toolkit.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.trolltech.com/products/qt/opensource.html
+**
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://www.trolltech.com/products/qt/licensing.html or contact the
+** sales department at sales@trolltech.com.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+// highlighting rules have been adapted by Uwe Drechsel to match vym syntax
+
+
+#include <QtGui>
+
+#include "highlighter.h"
+
+Highlighter::Highlighter(QTextDocument *parent)
+    : QSyntaxHighlighter(parent)
+{
+    HighlightingRule rule;
+
+    keywordFormat.setForeground(Qt::darkBlue);
+    keywordFormat.setFontWeight(QFont::Bold);
+    QStringList keywordPatterns;
+    keywordPatterns << "\\baddBranch\\b" << "\\baddBranchBefore\\b" 
+                    << "\\baddMapInsert\\b" << "\\baddMapReplace\\b"
+                    << "\\bcolorBranch\\b" << "\\bcolorSubtree\\b"
+                    << "\\bcut\\b" << "\\bdelete\\b" 
+					<< "\\bdeletepKeepChilds\\b" << "\\bdeletepChilds\\b"
+					<< "\\blinkTo\\b" << "\\bloadImage\\b"
+					<< "\\bmoveBranchUp\\b" << "\\bmoveBranchDown\\b"
+					<< "\\bmove\\b" << "\\bmoveRel\\b"
+					<< "\\bpaste\\b" 
+					<< "\\bsaveImage\\b" 
+					<< "\\bscroll\\b" 
+					<< "\\bselect\\b" << "\\bselectLastBranch\\b" << "\\bselectLastImage\\b"
+					<< "\\bsetMapAuthor\\b" 
+					<< "\\bsetMapComment\\b" 
+					<< "\\bsetMapBackgroundColor\\b" 
+					<< "\\bsetMapDefLinkColor\\b" 
+					<< "\\bsetMapDefLinkStyle\\b" 
+					<< "\\bsetHeading\\b" 
+					<< "\\bsetHideExport\\b" 
+					<< "\\bsetIncludeImagesHorizontally\\b" 
+					<< "\\bsetIncludeImagesVertically\\b" 
+					<< "\\bsetURL\\b" 
+					<< "\\bsetVymLink\\b" 
+					<< "\\bsetFlag\\b" 
+					<< "\\bunscroll\\b" 
+					<< "\\bunsetFlag\\b" 
+					;
+    foreach (QString pattern, keywordPatterns) {
+        rule.pattern = QRegExp(pattern);
+        rule.format = keywordFormat;
+        highlightingRules.append(rule);
+    }
+
+	// QT keywords
+	/*
+    classFormat.setFontWeight(QFont::Bold);
+    classFormat.setForeground(Qt::darkMagenta);
+    rule.pattern = QRegExp("\\bQ[A-Za-z]+\\b");
+    rule.format = classFormat;
+    highlightingRules.append(rule);
+	*/
+
+	// Single line comments
+    singleLineCommentFormat.setForeground(Qt::red);
+    rule.pattern = QRegExp("#[^\n]*");
+    rule.format = singleLineCommentFormat;
+    highlightingRules.append(rule);
+
+	// Single line comments
+    multiLineCommentFormat.setForeground(Qt::red);
+    commentStartExpression = QRegExp("/\\*");
+    commentEndExpression = QRegExp("\\*/");
+
+	// Quotations
+    quotationFormat.setForeground(Qt::darkGreen);
+    rule.pattern = QRegExp("\".*\"");
+    rule.format = quotationFormat;
+    highlightingRules.append(rule);
+
+    QStringList valuePatterns;
+    valuePatterns << "\\btrue\\b" << "\\bfalse\\b";
+    foreach (QString pattern, valuePatterns) {
+        rule.pattern = QRegExp(pattern);
+        rule.format = quotationFormat;
+        highlightingRules.append(rule);
+    }
+
+
+
+	// Funtions
+	/*
+    functionFormat.setFontItalic(true);
+    functionFormat.setForeground(Qt::blue);
+    rule.pattern = QRegExp("\\b[A-Za-z0-9_]+(?=\\()");
+    rule.format = functionFormat;
+    highlightingRules.append(rule);
+	*/
+
+}
+
+void Highlighter::highlightBlock(const QString &text)
+{
+    foreach (HighlightingRule rule, highlightingRules) {
+        QRegExp expression(rule.pattern);
+        int index = text.indexOf(expression);
+        while (index >= 0) {
+            int length = expression.matchedLength();
+            setFormat(index, length, rule.format);
+            index = text.indexOf(expression, index + length);
+        }
+    }
+    setCurrentBlockState(0);
+
+    int startIndex = 0;
+    if (previousBlockState() != 1)
+        startIndex = text.indexOf(commentStartExpression);
+
+    while (startIndex >= 0) {
+        int endIndex = text.indexOf(commentEndExpression, startIndex);
+        int commentLength;
+        if (endIndex == -1) {
+            setCurrentBlockState(1);
+            commentLength = text.length() - startIndex;
+        } else {
+            commentLength = endIndex - startIndex
+                            + commentEndExpression.matchedLength();
+        }
+        setFormat(startIndex, commentLength, multiLineCommentFormat);
+        startIndex = text.indexOf(commentStartExpression,
+                                                startIndex + commentLength);
+    }
+}