diff options
author | hjk <[email protected]> | 2023-11-24 15:41:43 +0100 |
---|---|---|
committer | hjk <[email protected]> | 2023-12-04 12:35:17 +0000 |
commit | da15f6fa0c886bc1d589468f520e36dce7ec10b8 (patch) | |
tree | e060ee95066bff739ccf6b4d3b6f4cd543d30cf9 /src/plugins/webassembly/webassemblydevice.cpp | |
parent | e729c37d956d046184f6dcd7db49c68302b4364c (diff) |
WebAssembly: Move the device infobar setup to the device files
Change-Id: I201c0f1dba59530e9e8183cb24974baed049196e
Reviewed-by: Alessandro Portale <[email protected]>
Diffstat (limited to 'src/plugins/webassembly/webassemblydevice.cpp')
-rw-r--r-- | src/plugins/webassembly/webassemblydevice.cpp | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/src/plugins/webassembly/webassemblydevice.cpp b/src/plugins/webassembly/webassemblydevice.cpp index e2e308ac86a..37b042124b0 100644 --- a/src/plugins/webassembly/webassemblydevice.cpp +++ b/src/plugins/webassembly/webassemblydevice.cpp @@ -1,13 +1,27 @@ // Copyright (C) 2019 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 -#include "webassemblyconstants.h" #include "webassemblydevice.h" + +#include "webassemblyconstants.h" +#include "webassemblyqtversion.h" +#include "webassemblytoolchain.h" #include "webassemblytr.h" +#include <coreplugin/coreconstants.h> +#include <coreplugin/icontext.h> +#include <coreplugin/icore.h> + #include <projectexplorer/devicesupport/desktopdevice.h> #include <projectexplorer/devicesupport/idevicefactory.h> +#include <projectexplorer/devicesupport/devicemanager.h> +#include <projectexplorer/kitmanager.h> + +#include <utils/infobar.h> + +#include <QTimer> +using namespace Core; using namespace ProjectExplorer; using namespace Utils; @@ -30,11 +44,31 @@ public: } }; -IDevicePtr createWebAssemblyDevice() +static IDevicePtr createWebAssemblyDevice() { return IDevicePtr(new WebAssemblyDevice); } +static void askUserAboutEmSdkSetup() +{ + const char setupWebAssemblyEmSdk[] = "SetupWebAssemblyEmSdk"; + + if (!ICore::infoBar()->canInfoBeAdded(setupWebAssemblyEmSdk) + || !WebAssemblyQtVersion::isQtVersionInstalled() + || WebAssemblyToolChain::areToolChainsRegistered()) + return; + + InfoBarEntry info(setupWebAssemblyEmSdk, + Tr::tr("Setup Emscripten SDK for WebAssembly? " + "To do it later, select Edit > Preferences > Devices > WebAssembly."), + InfoBarEntry::GlobalSuppression::Enabled); + info.addCustomButton(Tr::tr("Setup Emscripten SDK"), [setupWebAssemblyEmSdk] { + ICore::infoBar()->removeInfo(setupWebAssemblyEmSdk); + QTimer::singleShot(0, []() { ICore::showOptionsDialog(Constants::SETTINGS_ID); }); + }); + ICore::infoBar()->addInfo(info); +} + class WebAssemblyDeviceFactory final : public IDeviceFactory { public: @@ -52,6 +86,11 @@ public: void setupWebAssemblyDevice() { static WebAssemblyDeviceFactory theWebAssemblyDeviceFactory; + + QObject::connect(KitManager::instance(), &KitManager::kitsLoaded, [] { + DeviceManager::instance()->addDevice(createWebAssemblyDevice()); + askUserAboutEmSdkSetup(); + }); } } // WebAssembly::Internal |