diff options
Diffstat (limited to 'qtbindings')
-rw-r--r-- | qtbindings/qs_eval/main.cpp | 212 | ||||
-rw-r--r-- | qtbindings/qs_eval/qs_eval.pro | 4 | ||||
-rw-r--r-- | qtbindings/qtbindings.pro | 13 | ||||
-rw-r--r-- | qtbindings/qtbindingsbase.pri | 7 | ||||
-rw-r--r-- | qtbindings/qtscript_core/qtscript_core.pro | 4 | ||||
-rw-r--r-- | qtbindings/qtscript_core/qtscriptconcurrent.h | 44 | ||||
-rw-r--r-- | qtbindings/qtscript_gui/qtscript_gui.pro | 4 | ||||
-rw-r--r-- | qtbindings/qtscript_network/qtscript_network.pro | 6 | ||||
-rw-r--r-- | qtbindings/qtscript_opengl/qtscript_opengl.pro | 5 | ||||
-rw-r--r-- | qtbindings/qtscript_phonon/qtscript_phonon.pro | 5 | ||||
-rw-r--r-- | qtbindings/qtscript_sql/qtscript_sql.pro | 6 | ||||
-rw-r--r-- | qtbindings/qtscript_svg/qtscript_svg.pro | 5 | ||||
-rw-r--r-- | qtbindings/qtscript_uitools/qtscript_uitools.pro | 5 | ||||
-rw-r--r-- | qtbindings/qtscript_webkit/qtscript_webkit.pro | 5 | ||||
-rw-r--r-- | qtbindings/qtscript_xml/qtscript_xml.pro | 6 | ||||
-rw-r--r-- | qtbindings/qtscript_xmlpatterns/qtscript_xmlpatterns.pro | 6 |
16 files changed, 337 insertions, 0 deletions
diff --git a/qtbindings/qs_eval/main.cpp b/qtbindings/qs_eval/main.cpp new file mode 100644 index 0000000..6837d9a --- /dev/null +++ b/qtbindings/qs_eval/main.cpp @@ -0,0 +1,212 @@ +/**************************************************************************** +** +** Copyright (C) 2007-2008 Trolltech ASA. All rights reserved. +** +** This file is part of the <your project> project on Trolltech Labs. +** +** 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. +** +****************************************************************************/ + + +#include <QtScript> + +#include <QtCore/QFile> +#include <QtCore/QTextStream> +#include <QtCore/QStringList> +#include <QtGui/QApplication> + +#include <stdlib.h> + +static bool wantsToQuit; + +static QScriptValue qtscript_quit(QScriptContext *ctx, QScriptEngine *eng) +{ + Q_UNUSED(ctx); + wantsToQuit = true; + return eng->undefinedValue(); +} + +static QScriptValue qtscript_describe(QScriptContext *ctx, QScriptEngine *eng) +{ + QStringList result; + QScriptValue obj = ctx->argument(0); + while (obj.isObject()) { + QScriptValueIterator it(obj); + while (it.hasNext()) { + it.next(); + result.append(it.name()); + } + obj = obj.prototype(); + } + return eng->toScriptValue(result); +} + +static void interactive(QScriptEngine *eng) +{ + QScriptValue global = eng->globalObject(); + QScriptValue quitFunction = eng->newFunction(qtscript_quit); + if (!global.property(QLatin1String("exit")).isValid()) + global.setProperty(QLatin1String("exit"), quitFunction); + if (!global.property(QLatin1String("quit")).isValid()) + global.setProperty(QLatin1String("quit"), quitFunction); + wantsToQuit = false; + global.setProperty(QLatin1String("describe"), + eng->newFunction(qtscript_describe)); + + QTextStream qin(stdin, QFile::ReadOnly); + + const char *qscript_prompt = "qs> "; + const char *dot_prompt = ".... "; + const char *prompt = qscript_prompt; + + QString code; + + forever { + QString line; + + printf("%s", prompt); + fflush(stdout); + + line = qin.readLine(); + if (line.isNull()) + break; + + code += line; + code += QLatin1Char('\n'); + + if (line.trimmed().isEmpty()) { + continue; + + } else if (! eng->canEvaluate(code)) { + prompt = dot_prompt; + + } else { + QScriptValue result = eng->evaluate(code, QLatin1String("typein")); + + code.clear(); + prompt = qscript_prompt; + + if (! result.isUndefined()) + fprintf(stderr, "%s\n", qPrintable(result.toString())); + + if (wantsToQuit) + break; + } + } +} + +static QScriptValue importExtension(QScriptContext *context, QScriptEngine *engine) +{ + return engine->importExtension(context->argument(0).toString()); +} + +int main(int argc, char *argv[]) +{ + QApplication *app; + if (argc >= 2 && !qstrcmp(argv[1], "-tty")) + app = new QApplication(argc, argv, QApplication::Tty); + else + app = new QApplication(argc, argv); + + QDir dir(QApplication::applicationDirPath()); + if (dir.dirName() == QLatin1String("debug") || dir.dirName() == QLatin1String("release")) + dir.cdUp(); + dir.cdUp(); + dir.cdUp(); + if (!dir.cd("plugins")) { + fprintf(stderr, "plugins folder does not exist -- did you build the bindings?\n"); + return(-1); + } + QStringList paths = app->libraryPaths(); + paths << dir.absolutePath(); + app->setLibraryPaths(paths); + + QScriptEngine *eng = new QScriptEngine(); + + eng->importExtension("qt.core"); + eng->importExtension("qt.gui"); + eng->importExtension("qt.xml"); + eng->importExtension("qt.svg"); + eng->importExtension("qt.network"); + eng->importExtension("qt.sql"); + eng->importExtension("qt.opengl"); + eng->importExtension("qt.webkit"); + eng->importExtension("qt.xmlpatterns"); + eng->importExtension("qt.uitools"); + + QScriptValue globalObject = eng->globalObject(); + globalObject.setProperty("qApp", eng->newQObject(app)); + { + QScriptValue qscript = eng->newObject(); + qscript.setProperty("importExtension", eng->newFunction(importExtension)); + globalObject.property("qt").setProperty("script", qscript); + } + + if (! *++argv) { + interactive(eng); + return EXIT_SUCCESS; + } + + while (const char *arg = *argv++) { + QString fn = QString::fromLocal8Bit(arg); + + if (fn == QLatin1String("-i")) { + interactive(eng); + break; + } + + QString contents; + int lineNumber = 1; + + if (fn == QLatin1String("-")) { + QTextStream stream(stdin, QFile::ReadOnly); + contents = stream.readAll(); + } + + else { + QFile file(fn); + + if (file.open(QFile::ReadOnly)) { + QTextStream stream(&file); + contents = stream.readAll(); + file.close(); + + // strip off #!/usr/bin/env qscript line + if (contents.startsWith("#!")) { + contents.remove(0, contents.indexOf("\n")); + ++lineNumber; + } + } + } + + if (contents.isEmpty()) + continue; + + QScriptValue r = eng->evaluate(contents, fn, lineNumber); + if (eng->hasUncaughtException()) { + QStringList backtrace = eng->uncaughtExceptionBacktrace(); + fprintf (stderr, " %s\n%s\n\n", qPrintable(r.toString()), + qPrintable(backtrace.join("\n"))); + return EXIT_FAILURE; + } + } + + delete eng; + delete app; + + return EXIT_SUCCESS; +} diff --git a/qtbindings/qs_eval/qs_eval.pro b/qtbindings/qs_eval/qs_eval.pro new file mode 100644 index 0000000..c0e016a --- /dev/null +++ b/qtbindings/qs_eval/qs_eval.pro @@ -0,0 +1,4 @@ +QT = core gui script +win32: CONFIG += console +mac:CONFIG -= app_bundle +SOURCES += main.cpp diff --git a/qtbindings/qtbindings.pro b/qtbindings/qtbindings.pro new file mode 100644 index 0000000..8535ed0 --- /dev/null +++ b/qtbindings/qtbindings.pro @@ -0,0 +1,13 @@ +TEMPLATE = subdirs +SUBDIRS = qtscript_core \ + qtscript_gui \ + qtscript_network \ + qtscript_opengl \ + qtscript_sql \ + qtscript_svg \ + qtscript_xml \ + qtscript_phonon \ + qtscript_webkit \ + qtscript_xmlpatterns \ + qtscript_uitools \ + qs_eval diff --git a/qtbindings/qtbindingsbase.pri b/qtbindings/qtbindingsbase.pri new file mode 100644 index 0000000..4d5e4f1 --- /dev/null +++ b/qtbindings/qtbindingsbase.pri @@ -0,0 +1,7 @@ +TEMPLATE = lib +DEPENDPATH += . +INCLUDEPATH += . +DESTDIR = $$PWD/../plugins/script +QT += script +CONFIG += debug_and_release +GENERATEDCPP = $$PWD/../generated_cpp diff --git a/qtbindings/qtscript_core/qtscript_core.pro b/qtbindings/qtscript_core/qtscript_core.pro new file mode 100644 index 0000000..0ed8e3a --- /dev/null +++ b/qtbindings/qtscript_core/qtscript_core.pro @@ -0,0 +1,4 @@ +TARGET = qtscript_core +include(../qtbindingsbase.pri) +SOURCES += $$GENERATEDCPP/com_trolltech_qt_core/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_core/com_trolltech_qt_core.pri) diff --git a/qtbindings/qtscript_core/qtscriptconcurrent.h b/qtbindings/qtscript_core/qtscriptconcurrent.h new file mode 100644 index 0000000..af452da --- /dev/null +++ b/qtbindings/qtscript_core/qtscriptconcurrent.h @@ -0,0 +1,44 @@ +/**************************************************************************** +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of the Qt Script Generator project on Trolltech Labs. +** +** 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. +** +****************************************************************************/ + +#ifndef QTSCRIPTCONCURRENT_H +#define QTSCRIPTCONCURRENT_H + +#ifndef QT_NO_CONCURRENT + +#include <QtScript/qscriptvalue.h> +#include <QtCore/qfuture.h> +#include <QtCore/qfuturewatcher.h> +#include <QtCore/qfuturesynchronizer.h> + +typedef QFutureWatcher<void> QtScriptVoidFutureWatcher; +typedef QFuture<void> QtScriptVoidFuture; +typedef QFutureSynchronizer<void> QtScriptVoidFutureSynchronizer; +typedef QFuture<QScriptValue> QtScriptFuture; +typedef QFutureWatcher<QScriptValue> QtScriptFutureWatcher; +typedef QFutureSynchronizer<QScriptValue> QtScriptFutureSynchronizer; +typedef QFutureIterator<QScriptValue> QtScriptFutureIterator; + +#endif // QT_NO_CONCURRENT + +#endif diff --git a/qtbindings/qtscript_gui/qtscript_gui.pro b/qtbindings/qtscript_gui/qtscript_gui.pro new file mode 100644 index 0000000..5936046 --- /dev/null +++ b/qtbindings/qtscript_gui/qtscript_gui.pro @@ -0,0 +1,4 @@ +TARGET = qtscript_gui +include(../qtbindingsbase.pri) +SOURCES += $$GENERATEDCPP/com_trolltech_qt_gui/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_gui/com_trolltech_qt_gui.pri) diff --git a/qtbindings/qtscript_network/qtscript_network.pro b/qtbindings/qtscript_network/qtscript_network.pro new file mode 100644 index 0000000..38d4908 --- /dev/null +++ b/qtbindings/qtscript_network/qtscript_network.pro @@ -0,0 +1,6 @@ +TARGET = qtscript_network +include(../qtbindingsbase.pri) +QT -= gui +QT += network +SOURCES += $$GENERATEDCPP/com_trolltech_qt_network/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_network/com_trolltech_qt_network.pri) diff --git a/qtbindings/qtscript_opengl/qtscript_opengl.pro b/qtbindings/qtscript_opengl/qtscript_opengl.pro new file mode 100644 index 0000000..9ad5a11 --- /dev/null +++ b/qtbindings/qtscript_opengl/qtscript_opengl.pro @@ -0,0 +1,5 @@ +TARGET = qtscript_opengl +include(../qtbindingsbase.pri) +QT += opengl +SOURCES += $$GENERATEDCPP/com_trolltech_qt_opengl/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_opengl/com_trolltech_qt_opengl.pri) diff --git a/qtbindings/qtscript_phonon/qtscript_phonon.pro b/qtbindings/qtscript_phonon/qtscript_phonon.pro new file mode 100644 index 0000000..72015a5 --- /dev/null +++ b/qtbindings/qtscript_phonon/qtscript_phonon.pro @@ -0,0 +1,5 @@ +TARGET = qtscript_phonon +include(../qtbindingsbase.pri) +QT += phonon +SOURCES += $$GENERATEDCPP/com_trolltech_qt_phonon/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_phonon/com_trolltech_qt_phonon.pri) diff --git a/qtbindings/qtscript_sql/qtscript_sql.pro b/qtbindings/qtscript_sql/qtscript_sql.pro new file mode 100644 index 0000000..0c0782c --- /dev/null +++ b/qtbindings/qtscript_sql/qtscript_sql.pro @@ -0,0 +1,6 @@ +TARGET = qtscript_sql +include(../qtbindingsbase.pri) +QT -= gui +QT += sql +SOURCES += $$GENERATEDCPP/com_trolltech_qt_sql/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_sql/com_trolltech_qt_sql.pri) diff --git a/qtbindings/qtscript_svg/qtscript_svg.pro b/qtbindings/qtscript_svg/qtscript_svg.pro new file mode 100644 index 0000000..b4367f5 --- /dev/null +++ b/qtbindings/qtscript_svg/qtscript_svg.pro @@ -0,0 +1,5 @@ +TARGET = qtscript_svg +include(../qtbindingsbase.pri) +QT += svg +SOURCES += $$GENERATEDCPP/com_trolltech_qt_svg/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_svg/com_trolltech_qt_svg.pri) diff --git a/qtbindings/qtscript_uitools/qtscript_uitools.pro b/qtbindings/qtscript_uitools/qtscript_uitools.pro new file mode 100644 index 0000000..f09d223 --- /dev/null +++ b/qtbindings/qtscript_uitools/qtscript_uitools.pro @@ -0,0 +1,5 @@ +TARGET = qtscript_uitools +include(../qtbindingsbase.pri) +CONFIG += uitools +SOURCES += $$GENERATEDCPP/com_trolltech_qt_uitools/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_uitools/com_trolltech_qt_uitools.pri) diff --git a/qtbindings/qtscript_webkit/qtscript_webkit.pro b/qtbindings/qtscript_webkit/qtscript_webkit.pro new file mode 100644 index 0000000..2b3f3b0 --- /dev/null +++ b/qtbindings/qtscript_webkit/qtscript_webkit.pro @@ -0,0 +1,5 @@ +TARGET = qtscript_webkit +include(../qtbindingsbase.pri) +QT += network webkit +SOURCES += $$GENERATEDCPP/com_trolltech_qt_webkit/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_webkit/com_trolltech_qt_webkit.pri) diff --git a/qtbindings/qtscript_xml/qtscript_xml.pro b/qtbindings/qtscript_xml/qtscript_xml.pro new file mode 100644 index 0000000..af99772 --- /dev/null +++ b/qtbindings/qtscript_xml/qtscript_xml.pro @@ -0,0 +1,6 @@ +TARGET = qtscript_xml +include(../qtbindingsbase.pri) +QT -= gui +QT += xml +SOURCES += $$GENERATEDCPP/com_trolltech_qt_xml/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_xml/com_trolltech_qt_xml.pri) diff --git a/qtbindings/qtscript_xmlpatterns/qtscript_xmlpatterns.pro b/qtbindings/qtscript_xmlpatterns/qtscript_xmlpatterns.pro new file mode 100644 index 0000000..ed98f5a --- /dev/null +++ b/qtbindings/qtscript_xmlpatterns/qtscript_xmlpatterns.pro @@ -0,0 +1,6 @@ +TARGET = qtscript_xmlpatterns +include(../qtbindingsbase.pri) +QT -= gui +QT += xmlpatterns network +SOURCES += $$GENERATEDCPP/com_trolltech_qt_xmlpatterns/main.cpp +include($$GENERATEDCPP/com_trolltech_qt_xmlpatterns/com_trolltech_qt_xmlpatterns.pri) |