summaryrefslogtreecommitdiffstats
path: root/qtbindings
diff options
context:
space:
mode:
authorSimon Hausmann <shausman@trolltech.com>2008-07-03 13:48:27 +0200
committerSimon Hausmann <shausman@trolltech.com>2008-07-03 13:48:27 +0200
commit0d0669d7613064c3e2e47d6585946debb0b2b70d (patch)
tree544f66a3e95496a10d231b25ba1ca65aede1f8bf /qtbindings
Initial import from revision 664 at svn://labs.trolltech.com/svn/qtscript/generator
Diffstat (limited to 'qtbindings')
-rw-r--r--qtbindings/qs_eval/main.cpp212
-rw-r--r--qtbindings/qs_eval/qs_eval.pro4
-rw-r--r--qtbindings/qtbindings.pro13
-rw-r--r--qtbindings/qtbindingsbase.pri7
-rw-r--r--qtbindings/qtscript_core/qtscript_core.pro4
-rw-r--r--qtbindings/qtscript_core/qtscriptconcurrent.h44
-rw-r--r--qtbindings/qtscript_gui/qtscript_gui.pro4
-rw-r--r--qtbindings/qtscript_network/qtscript_network.pro6
-rw-r--r--qtbindings/qtscript_opengl/qtscript_opengl.pro5
-rw-r--r--qtbindings/qtscript_phonon/qtscript_phonon.pro5
-rw-r--r--qtbindings/qtscript_sql/qtscript_sql.pro6
-rw-r--r--qtbindings/qtscript_svg/qtscript_svg.pro5
-rw-r--r--qtbindings/qtscript_uitools/qtscript_uitools.pro5
-rw-r--r--qtbindings/qtscript_webkit/qtscript_webkit.pro5
-rw-r--r--qtbindings/qtscript_xml/qtscript_xml.pro6
-rw-r--r--qtbindings/qtscript_xmlpatterns/qtscript_xmlpatterns.pro6
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)