diff options
author | Tim Jenssen <tim.jenssen@digia.com> | 2013-05-08 13:26:41 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@digia.com> | 2013-05-16 16:12:52 +0200 |
commit | 06449248ab638d3ebb23f03e56450f10b4acbb5c (patch) | |
tree | a4fb331a237b6ad5bcf2857f75fe689b505386a5 /src/libs/installer/packagemanagercore.cpp | |
parent | 89ee32bea7d9cdfb426d3400e940a6b006b2b2f7 (diff) |
introduce installerscriptengine
- it uses one scriptengine for everything and adds the components
or/and the install-controller in javascript closure contexts
- added the gui object to the component script context
- removed tabController from controlscript context
Change-Id: I3bd6c5dcf470666c30add1b7d04a8fdd094f5f11
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
Diffstat (limited to 'src/libs/installer/packagemanagercore.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 115 |
1 files changed, 7 insertions, 108 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 60a89a536..d854b018a 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -71,9 +71,6 @@ #include <QDesktopServices> #include <QFileDialog> -#include <QtScript/QScriptEngine> -#include <QtScript/QScriptContext> - #include "kdsysinfo.h" #include "kdupdaterupdateoperationfactory.h" @@ -352,20 +349,6 @@ static bool sNoForceInstallation = false; static bool sVirtualComponentsVisible = false; static bool sCreateLocalRepositoryFromBinary = false; -static QScriptValue checkArguments(QScriptContext *context, int amin, int amax) -{ - if (context->argumentCount() < amin || context->argumentCount() > amax) { - if (amin != amax) { - return context->throwError(QObject::tr("Invalid arguments: %1 arguments given, %2 to " - "%3 expected.").arg(QString::number(context->argumentCount()), - QString::number(amin), QString::number(amax))); - } - return context->throwError(QObject::tr("Invalid arguments: %1 arguments given, %2 expected.") - .arg(QString::number(context->argumentCount()), QString::number(amin))); - } - return QScriptValue(); -} - static bool componentMatches(const Component *component, const QString &name, const QString &version = QString()) { @@ -411,97 +394,6 @@ Component *PackageManagerCore::subComponentByName(const QInstaller::PackageManag return 0; } -/*! - Scriptable version of PackageManagerCore::componentByName(QString). - \sa PackageManagerCore::componentByName - */ -QScriptValue QInstaller::qInstallerComponentByName(QScriptContext *context, QScriptEngine *engine) -{ - const QScriptValue check = checkArguments(context, 1, 1); - if (check.isError()) - return check; - - // well... this is our "this" pointer - PackageManagerCore *const core = dynamic_cast<PackageManagerCore*>(engine->globalObject() - .property(QLatin1String("installer")).toQObject()); - - const QString name = context->argument(0).toString(); - return engine->newQObject(core->componentByName(name)); -} - -QScriptValue QInstaller::qDesktopServicesOpenUrl(QScriptContext *context, QScriptEngine *engine) -{ - Q_UNUSED(engine); - const QScriptValue check = checkArguments(context, 1, 1); - if (check.isError()) - return check; - QString url = context->argument(0).toString(); - url.replace(QLatin1String("\\\\"), QLatin1String("/")); - url.replace(QLatin1String("\\"), QLatin1String("/")); - return QDesktopServices::openUrl(QUrl::fromUserInput(url)); -} - -QScriptValue QInstaller::qDesktopServicesDisplayName(QScriptContext *context, QScriptEngine *engine) -{ - Q_UNUSED(engine); - const QScriptValue check = checkArguments(context, 1, 1); - if (check.isError()) - return check; - -#if QT_VERSION < 0x050000 - const QDesktopServices::StandardLocation location = - static_cast< QDesktopServices::StandardLocation >(context->argument(0).toInt32()); - return QDesktopServices::displayName(location); -#else - const QStandardPaths::StandardLocation location = - static_cast< QStandardPaths::StandardLocation >(context->argument(0).toInt32()); - return QStandardPaths::displayName(location); -#endif -} - -QScriptValue QInstaller::qDesktopServicesStorageLocation(QScriptContext *context, QScriptEngine *engine) -{ - Q_UNUSED(engine); - const QScriptValue check = checkArguments(context, 1, 1); - if (check.isError()) - return check; - -#if QT_VERSION < 0x050000 - const QDesktopServices::StandardLocation location = - static_cast< QDesktopServices::StandardLocation >(context->argument(0).toInt32()); - return QDesktopServices::storageLocation(location); -#else - const QStandardPaths::StandardLocation location = - static_cast< QStandardPaths::StandardLocation >(context->argument(0).toInt32()); - return QStandardPaths::writableLocation(location); -#endif -} - -QScriptValue QInstaller::qFileDialogGetExistingDirectory( QScriptContext *context, QScriptEngine *engine ) -{ - Q_UNUSED(engine); - const QScriptValue check = checkArguments(context, 0, 2); - if (check.isError()) - return check; - QString caption; - QString dir; - if (context->argumentCount() > 0) - caption = context->argument(0).toString(); - if (context->argumentCount() > 1) - dir = context->argument(1).toString(); - return QFileDialog::getExistingDirectory(0, caption, dir); -} - -QString QInstaller::uncaughtExceptionString(QScriptEngine *scriptEngine, const QString &context) -{ - QString error(QLatin1String("\n\n%1\n\nBacktrace:\n\t%2")); - if (!context.isEmpty()) - error.prepend(context); - - return error.arg(scriptEngine->uncaughtException().toString(), scriptEngine->uncaughtExceptionBacktrace() - .join(QLatin1String("\n\t"))); -} - void PackageManagerCore::writeUninstaller() { if (d->m_needToWriteUninstaller) { @@ -801,6 +693,8 @@ bool PackageManagerCore::fileExists(const QString &filePath) const PackageManagerCore::PackageManagerCore() : d(new PackageManagerCorePrivate(this)) { + qRegisterMetaType<QInstaller::PackageManagerCore::Status>("QInstaller::PackageManagerCore::Status"); + qRegisterMetaType<QInstaller::PackageManagerCore::WizardPage>("QInstaller::PackageManagerCore::WizardPage"); } PackageManagerCore::PackageManagerCore(qint64 magicmaker, const OperationList &performedOperations) @@ -1162,6 +1056,11 @@ void PackageManagerCore::setTestChecksum(bool test) d->m_testChecksum = test; } +ScriptEngine *PackageManagerCore::scriptEngine() +{ + return d->scriptEngine(); +} + /*! Returns the number of components in the list for installer and package manager mode. Might return 0 in case the engine has only been run in updater mode or no components have been fetched. |