summaryrefslogtreecommitdiffstats
path: root/tools/uilib/formscriptrunner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/uilib/formscriptrunner.cpp')
-rw-r--r--tools/uilib/formscriptrunner.cpp208
1 files changed, 0 insertions, 208 deletions
diff --git a/tools/uilib/formscriptrunner.cpp b/tools/uilib/formscriptrunner.cpp
deleted file mode 100644
index 8efb12f9e3..0000000000
--- a/tools/uilib/formscriptrunner.cpp
+++ /dev/null
@@ -1,208 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Designer of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.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 the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "formscriptrunner_p.h"
-#include "formbuilderextra_p.h"
-#include "ui4_p.h"
-
-#include <QtScript/QScriptEngine>
-#include <QtWidgets/QWidget>
-#include <QtCore/QDebug>
-#include <QtCore/QCoreApplication>
-
-QT_BEGIN_NAMESPACE
-
-namespace {
- enum { debugFormScriptRunner = 0 };
-}
-
-#ifdef QFORMINTERNAL_NAMESPACE
-namespace QFormInternal {
-#endif
-
-class QFormScriptRunner::QFormScriptRunnerPrivate {
-public:
- QFormScriptRunnerPrivate() : m_options(DisableScripts) {}
- void clearErrors() { m_errors.clear(); }
-
- bool run(const QString &script, QWidget *widget, const WidgetList &children, QString *errorMessage);
-
- static void initializeEngine(QWidget *w, const WidgetList &children, QScriptEngine &scriptEngine);
- static QString engineError(QScriptEngine &scriptEngine);
-
- Options options() const { return m_options; }
- void setOptions(Options options) { m_options = options; }
-
- Errors errors() const { return m_errors; }
-private:
- QScriptEngine m_scriptEngine;
- Options m_options;
- Errors m_errors;
-};
-
-bool QFormScriptRunner::QFormScriptRunnerPrivate::run(const QString &script, QWidget *widget, const WidgetList &children, QString *errorMessage) {
- bool rc = false;
- initializeEngine(widget, children, m_scriptEngine);
-
- do {
- m_scriptEngine.evaluate(script);
- if (m_scriptEngine.hasUncaughtException ()) {
- *errorMessage = QCoreApplication::tr("Exception at line %1: %2").arg(m_scriptEngine.uncaughtExceptionLineNumber()).arg(engineError(m_scriptEngine));
- break;
- }
- rc = true;
- } while (false);
- m_scriptEngine.popContext();
-
- if (!rc) {
- Error error;
- error.objectName = widget->objectName();
- error.script = script;
- error.errorMessage = *errorMessage;
- m_errors.push_back(error);
- }
- return rc;
-}
-
-void QFormScriptRunner::QFormScriptRunnerPrivate::initializeEngine(QWidget *w, const WidgetList &children, QScriptEngine &scriptEngine) {
- // Populate the script variables. This pushes a context which must be popped.
- QScriptContext *ctx = scriptEngine.pushContext();
- QScriptValue widgetObject = scriptEngine.newQObject(w);
- QScriptValue childrenArray = scriptEngine.newArray (children.size());
-
- for(int i = 0; i < children.size(); i++) {
- childrenArray.setProperty(i, scriptEngine.newQObject(children[i]));
- }
-
- const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
- ctx ->activationObject().setProperty(strings.scriptWidgetVariable, widgetObject);
- ctx ->activationObject().setProperty(strings.scriptChildWidgetsVariable, childrenArray);
-}
-
-QString QFormScriptRunner::QFormScriptRunnerPrivate::engineError(QScriptEngine &scriptEngine) {
- QScriptValue error = scriptEngine.evaluate(QLatin1String("Error"));
- if (error.isValid())
- return error.toString();
- return QCoreApplication::tr("Unknown error");
-}
-// -- QFormScriptRunner
-
-QFormScriptRunner::QFormScriptRunner() : m_impl(new QFormScriptRunnerPrivate)
-{
-}
-
-QFormScriptRunner::~QFormScriptRunner()
-{
- delete m_impl;
-}
-
-bool QFormScriptRunner::run(const DomWidget *domWidget,
- const QString &customWidgetScript,
- QWidget *widget, const WidgetList &children,
- QString *errorMessage)
-{
- typedef QList<DomScript*> DomScripts;
-
- const Options scriptOptions = m_impl->options();
- if (scriptOptions & DisableScripts)
- return true;
- // get list
- const DomScripts domScripts = domWidget->elementScript();
- // Concatenate snippets, starting with custom widget script
- QString script = customWidgetScript;
- if (script.isEmpty() && domScripts.empty())
- return true;
-
- foreach (const DomScript *scriptSnippet, domScripts) {
- // Ensure new line
- if (!script.isEmpty() && !script.endsWith(QLatin1Char('\n')))
- script += QLatin1Char('\n');
- script += scriptSnippet->text();
- }
-
- if (script.isEmpty())
- return true;
-
- const bool rc = m_impl->run(script, widget, children, errorMessage);
-
- if (debugFormScriptRunner) {
- qDebug() << "For " << widget << " with " << children.size() << " children, ran: " << script;
- if (!rc)
- qDebug() << *errorMessage;
- }
-
- if (!rc) {
- if (!(scriptOptions & DisableWarnings)) {
- const QString message = QCoreApplication::tr("An error occurred while running the script for %1: %2\nScript: %3").
- arg(widget->objectName()).arg(*errorMessage).arg(script);
- qWarning() << message;
- }
- }
- return rc;
-}
-
-QFormScriptRunner::Options QFormScriptRunner::options() const
-{
- return m_impl->options();
-}
-
-void QFormScriptRunner::setOptions(Options options)
-{
- m_impl->setOptions(options);
-}
-
-
-QFormScriptRunner::Errors QFormScriptRunner::errors() const
-{
- return m_impl->errors();
-}
-
-void QFormScriptRunner::clearErrors()
-{
- m_impl->clearErrors();
-}
-
-
-#ifdef QFORMINTERNAL_NAMESPACE
-} // namespace QFormInternal
-#endif
-
-QT_END_NAMESPACE