ProjectExplorer: Replace QScriptEngine with QJSEngine

Change-Id: Iccc14c2197a30a7e62b2d388d163d1f89a5d1e87
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
Alessandro Portale
2015-04-28 17:06:29 +02:00
parent ad5c0261e5
commit b7964e6c97
6 changed files with 16 additions and 19 deletions

View File

@@ -45,7 +45,7 @@
#include <QFile> #include <QFile>
#include <QFileInfo> #include <QFileInfo>
#include <QIcon> #include <QIcon>
#include <QScriptEngine> #include <QJSEngine>
#include <QTemporaryFile> #include <QTemporaryFile>
#include <QTime> #include <QTime>
#include <QXmlStreamAttribute> #include <QXmlStreamAttribute>
@@ -177,7 +177,7 @@ bool CustomWizardValidationRule::validateRules(const QList<CustomWizardValidatio
errorMessage->clear(); errorMessage->clear();
if (rules.isEmpty()) if (rules.isEmpty())
return true; return true;
QScriptEngine engine; QJSEngine engine;
foreach (const CustomWizardValidationRule &rule, rules) foreach (const CustomWizardValidationRule &rule, rules)
if (!rule.validate(engine, replacementMap)) { if (!rule.validate(engine, replacementMap)) {
*errorMessage = rule.message; *errorMessage = rule.message;
@@ -187,7 +187,7 @@ bool CustomWizardValidationRule::validateRules(const QList<CustomWizardValidatio
return true; return true;
} }
bool CustomWizardValidationRule::validate(QScriptEngine &engine, const QMap<QString, QString> &replacementMap) const bool CustomWizardValidationRule::validate(QJSEngine &engine, const QMap<QString, QString> &replacementMap) const
{ {
// Apply parameters and evaluate using JavaScript // Apply parameters and evaluate using JavaScript
QString cond = condition; QString cond = condition;

View File

@@ -41,7 +41,7 @@ QT_BEGIN_NAMESPACE
class QIODevice; class QIODevice;
class QDebug; class QDebug;
class QTemporaryFile; class QTemporaryFile;
class QScriptEngine; class QJSEngine;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace ProjectExplorer { namespace ProjectExplorer {
@@ -82,7 +82,7 @@ public:
static bool validateRules(const QList<CustomWizardValidationRule> &rules, static bool validateRules(const QList<CustomWizardValidationRule> &rules,
const QMap<QString, QString> &replacementMap, const QMap<QString, QString> &replacementMap,
QString *errorMessage); QString *errorMessage);
bool validate(QScriptEngine &, const QMap<QString, QString> &replacementMap) const; bool validate(QJSEngine &, const QMap<QString, QString> &replacementMap) const;
QString condition; QString condition;
QString message; QString message;
}; };

View File

@@ -40,9 +40,7 @@
#include <QStack> #include <QStack>
#include <QRegExp> #include <QRegExp>
#include <QDebug> #include <QDebug>
#include <QJSEngine>
#include <QScriptEngine>
#include <QScriptValue>
namespace ProjectExplorer { namespace ProjectExplorer {
namespace Internal { namespace Internal {
@@ -94,7 +92,7 @@ private:
mutable QRegExp m_endifPattern; mutable QRegExp m_endifPattern;
QStack<PreprocessStackEntry> m_sectionStack; QStack<PreprocessStackEntry> m_sectionStack;
QScriptEngine m_scriptEngine; QJSEngine m_scriptEngine;
}; };
PreprocessContext::PreprocessContext() : PreprocessContext::PreprocessContext() :
@@ -137,16 +135,15 @@ PreprocessorSection PreprocessContext::preprocessorLine(const QString &in,
return OtherSection; return OtherSection;
} }
// Evaluate an expression within an 'if'/'elsif' to a bool via QScript // Evaluate an expression within an 'if'/'elsif' to a bool via QJSEngine
bool evaluateBooleanJavaScriptExpression(QScriptEngine &engine, const QString &expression, bool *result, QString *errorMessage) bool evaluateBooleanJavaScriptExpression(QJSEngine &engine, const QString &expression, bool *result, QString *errorMessage)
{ {
errorMessage->clear(); errorMessage->clear();
*result = false; *result = false;
engine.clearExceptions(); const QJSValue value = engine.evaluate(expression);
const QScriptValue value = engine.evaluate(expression); if (value.isError()) {
if (engine.hasUncaughtException()) {
*errorMessage = QString::fromLatin1("Error in \"%1\": %2"). *errorMessage = QString::fromLatin1("Error in \"%1\": %2").
arg(expression, engine.uncaughtException().toString()); arg(expression, value.toString());
return false; return false;
} }
// Try to convert to bool, be that an int or whatever. // Try to convert to bool, be that an int or whatever.

View File

@@ -33,14 +33,14 @@
#include <QString> #include <QString>
QT_FORWARD_DECLARE_CLASS(QScriptEngine) QT_FORWARD_DECLARE_CLASS(QJSEngine)
namespace ProjectExplorer { namespace ProjectExplorer {
namespace Internal { namespace Internal {
bool customWizardPreprocess(const QString &in, QString *out, QString *errorMessage); bool customWizardPreprocess(const QString &in, QString *out, QString *errorMessage);
/* Helper to evaluate an expression. */ /* Helper to evaluate an expression. */
bool evaluateBooleanJavaScriptExpression(QScriptEngine &engine, const QString &expression, bool *result, QString *errorMessage); bool evaluateBooleanJavaScriptExpression(QJSEngine &engine, const QString &expression, bool *result, QString *errorMessage);
} // namespace Internal } // namespace Internal
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -1,4 +1,4 @@
QT += quick script QT += quick qml
include(../../qtcreatorplugin.pri) include(../../qtcreatorplugin.pri)
include(customwizard/customwizard.pri) include(customwizard/customwizard.pri)

View File

@@ -3,7 +3,7 @@ import qbs 1.0
QtcPlugin { QtcPlugin {
name: "ProjectExplorer" name: "ProjectExplorer"
Depends { name: "Qt"; submodules: ["widgets", "xml", "network", "script"] } Depends { name: "Qt"; submodules: ["widgets", "xml", "network", "qml"] }
Depends { name: "Qt.quick" } Depends { name: "Qt.quick" }
Depends { name: "Aggregation" } Depends { name: "Aggregation" }
Depends { name: "QtcSsh" } Depends { name: "QtcSsh" }