diff options
Diffstat (limited to 'src/libs/installer/scriptengine.cpp')
-rw-r--r-- | src/libs/installer/scriptengine.cpp | 80 |
1 files changed, 26 insertions, 54 deletions
diff --git a/src/libs/installer/scriptengine.cpp b/src/libs/installer/scriptengine.cpp index bcd475d54..7e3e69eb2 100644 --- a/src/libs/installer/scriptengine.cpp +++ b/src/libs/installer/scriptengine.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2022 The Qt Company Ltd. +** Copyright (C) 2024 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -34,6 +34,7 @@ #include "loggingutils.h" #include "packagemanagergui.h" #include "component.h" +#include "settings.h" #include <QMetaEnum> #include <QQmlEngine> @@ -55,18 +56,6 @@ namespace QInstaller { /*! \inmodule QtInstallerFramework - \class QInstaller::ConsoleProxy - \internal -*/ - -/*! - \inmodule QtInstallerFramework - \class QInstaller::InstallerProxy - \internal -*/ - -/*! - \inmodule QtInstallerFramework \class QInstaller::QDesktopServicesProxy \internal */ @@ -77,28 +66,6 @@ namespace QInstaller { \internal */ -QJSValue InstallerProxy::components(const QString ®exp) const -{ - if (m_core) { - const QList<Component*> all = m_core->components(PackageManagerCore::ComponentType::All, regexp); - QJSValue scriptComponentsObject = m_engine->newArray(all.count()); - for (int i = 0; i < all.count(); ++i) { - Component *const component = all.at(i); - QQmlEngine::setObjectOwnership(component, QQmlEngine::CppOwnership); - scriptComponentsObject.setProperty(i, m_engine->newQObject(component)); - } - return scriptComponentsObject; - } - return m_engine->newArray(); -} - -QJSValue InstallerProxy::componentByName(const QString &componentName) -{ - if (m_core) - return m_engine->newQObject(m_core->componentByName(componentName), false); - return QJSValue(); -} - QJSValue QDesktopServicesProxy::findFiles(const QString &path, const QString &pattern) { QStringList result; @@ -222,6 +189,12 @@ bool GuiProxy::isButtonEnabled(int wizardButton) return m_gui->isButtonEnabled(wizardButton); } +void GuiProxy::setWizardPageButtonText(int pageId, int buttonId, const QString &buttonText) +{ + if (m_gui) + m_gui->setWizardPageButtonText(pageId, buttonId, buttonText); +} + void GuiProxy::showSettingsButton(bool show) { if (m_gui) @@ -377,18 +350,14 @@ QString QFileDialogProxy::getExistingFileOrDirectory(const QString &caption, /*! Constructs a script engine with \a core as parent. */ -ScriptEngine::ScriptEngine(PackageManagerCore *core) : - QObject(core), - m_guiProxy(new GuiProxy(this, this)) +ScriptEngine::ScriptEngine(PackageManagerCore *core) : QObject(core) + , m_guiProxy(new GuiProxy(this, this)) + , m_core(core) { - m_engine.installExtensions(QJSEngine::TranslationExtension); + m_engine.installExtensions(QJSEngine::TranslationExtension | QJSEngine::ConsoleExtension); QJSValue global = m_engine.globalObject(); - global.setProperty(QLatin1String("console"), m_engine.newQObject(new ConsoleProxy)); + global.setProperty(QLatin1String("QFileDialog"), m_engine.newQObject(new QFileDialogProxy(core))); - const QJSValue proxy = m_engine.newQObject(new InstallerProxy(this, core)); - global.setProperty(QLatin1String("InstallerProxy"), proxy); - global.setProperty(QLatin1String("print"), m_engine.newQObject(new ConsoleProxy) - .property(QLatin1String("log"))); global.setProperty(QLatin1String("systemInfo"), m_engine.newQObject(new SystemInfo)); global.setProperty(QLatin1String("QInstaller"), generateQInstallerObject()); @@ -408,11 +377,6 @@ ScriptEngine::ScriptEngine(PackageManagerCore *core) : global.setProperty(QLatin1String("installer"), m_engine.newQObject(new QObject)); } global.setProperty(QLatin1String("gui"), m_engine.newQObject(m_guiProxy)); - - global.property(QLatin1String("installer")).setProperty(QLatin1String("components"), - proxy.property(QLatin1String("components"))); - global.property(QLatin1String("installer")).setProperty(QLatin1String("componentByName"), - proxy.property(QLatin1String("componentByName"))); } /*! @@ -574,14 +538,17 @@ QJSValue ScriptEngine::callScriptMethod(const QJSValue &scriptContext, const QSt if (!method.isCallable()) return QJSValue(QJSValue::UndefinedValue); if (method.isError()) { - throw Error(method.toString().isEmpty() ? QString::fromLatin1("Unknown error.") - : method.toString()); + QString errorString = method.toString().isEmpty() ? QString::fromLatin1("Unknown error.") + : method.toString(); + + throw Error(QString::fromLatin1("%1 \n%2 \"%3\"").arg(errorString, tr(scClearCacheHint), m_core->settings().localCachePath())); } const QJSValue result = method.call(arguments); if (result.isError()) { - throw Error(result.toString().isEmpty() ? QString::fromLatin1("Unknown error.") - : result.toString()); + QString errorString = result.toString().isEmpty() ? QString::fromLatin1("Unknown error.") + : result.toString(); + throw Error(QString::fromLatin1("%1 \n%2 \"%3\"").arg(errorString, tr(scClearCacheHint), m_core->settings().localCachePath())); } stack.removeLast(); @@ -657,14 +624,19 @@ QJSValue ScriptEngine::generateDesktopServicesObject() SETPROPERTY(desktopServices, PicturesLocation, QStandardPaths) SETPROPERTY(desktopServices, TempLocation, QStandardPaths) SETPROPERTY(desktopServices, HomeLocation, QStandardPaths) - SETPROPERTY(desktopServices, AppDataLocation, QStandardPaths) + SETPROPERTY(desktopServices, AppLocalDataLocation, QStandardPaths) SETPROPERTY(desktopServices, CacheLocation, QStandardPaths) + SETPROPERTY(desktopServices, GenericCacheLocation, QStandardPaths) SETPROPERTY(desktopServices, GenericDataLocation, QStandardPaths) SETPROPERTY(desktopServices, RuntimeLocation, QStandardPaths) SETPROPERTY(desktopServices, ConfigLocation, QStandardPaths) SETPROPERTY(desktopServices, DownloadLocation, QStandardPaths) SETPROPERTY(desktopServices, GenericCacheLocation, QStandardPaths) SETPROPERTY(desktopServices, GenericConfigLocation, QStandardPaths) + SETPROPERTY(desktopServices, AppDataLocation, QStandardPaths) + SETPROPERTY(desktopServices, AppConfigLocation, QStandardPaths) + SETPROPERTY(desktopServices, PublicShareLocation, QStandardPaths) + SETPROPERTY(desktopServices, TemplatesLocation, QStandardPaths) QJSValue object = m_engine.newQObject(new QDesktopServicesProxy(this)); object.setPrototype(desktopServices); // attach the properties |