diff options
Diffstat (limited to 'src/plugins/webassembly/webassemblyoptionspage.cpp')
-rw-r--r-- | src/plugins/webassembly/webassemblyoptionspage.cpp | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/src/plugins/webassembly/webassemblyoptionspage.cpp b/src/plugins/webassembly/webassemblyoptionspage.cpp deleted file mode 100644 index 1a4524b945a..00000000000 --- a/src/plugins/webassembly/webassemblyoptionspage.cpp +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright (C) 2020 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 "webassemblyemsdk.h" -#include "webassemblyoptionspage.h" -#include "webassemblyqtversion.h" -#include "webassemblytoolchain.h" -#include "webassemblytr.h" - -#include <coreplugin/icore.h> -#include <utils/environment.h> -#include <utils/infolabel.h> -#include <utils/pathchooser.h> -#include <utils/utilsicons.h> - -#include <QGroupBox> -#include <QTextBrowser> -#include <QVBoxLayout> - -using namespace Utils; - -namespace WebAssembly { -namespace Internal { - -class WebAssemblyOptionsWidget : public Core::IOptionsPageWidget -{ -public: - WebAssemblyOptionsWidget(); - - void updateStatus(); - -private: - void apply() final; - void showEvent(QShowEvent *event) final; - - PathChooser *m_emSdkPathChooser; - InfoLabel *m_emSdkVersionDisplay; - QGroupBox *m_emSdkEnvGroupBox; - QTextBrowser *m_emSdkEnvDisplay; - InfoLabel *m_qtVersionDisplay; -}; - -WebAssemblyOptionsWidget::WebAssemblyOptionsWidget() -{ - auto mainLayout = new QVBoxLayout(this); - - { - auto pathChooserBox = new QGroupBox(Tr::tr("Emscripten SDK path:")); - pathChooserBox->setFlat(true); - auto layout = new QVBoxLayout(pathChooserBox); - auto instruction = new QLabel( - Tr::tr("Select the root directory of an installed %1. " - "Ensure that the activated SDK version is compatible with the %2 " - "or %3 version that you plan to develop against.") - .arg(R"(<a href="https://emscripten.org/docs/getting_started/downloads.html">Emscripten SDK</a>)") - .arg(R"(<a href="https://doc.qt.io/qt-5/wasm.html#install-emscripten">Qt 5</a>)") - .arg(R"(<a href="https://doc.qt.io/qt-6/wasm.html#install-emscripten">Qt 6</a>)")); - - instruction->setOpenExternalLinks(true); - instruction->setWordWrap(true); - layout->addWidget(instruction); - m_emSdkPathChooser = new PathChooser(this); - m_emSdkPathChooser->setExpectedKind(PathChooser::Directory); - m_emSdkPathChooser->setInitialBrowsePathBackup(FileUtils::homePath()); - m_emSdkPathChooser->setFilePath(WebAssemblyEmSdk::registeredEmSdk()); - connect(m_emSdkPathChooser, &PathChooser::textChanged, - this, &WebAssemblyOptionsWidget::updateStatus); - layout->addWidget(m_emSdkPathChooser); - m_emSdkVersionDisplay = new InfoLabel(this); - m_emSdkVersionDisplay->setElideMode(Qt::ElideNone); - m_emSdkVersionDisplay->setWordWrap(true); - layout->addWidget(m_emSdkVersionDisplay); - mainLayout->addWidget(pathChooserBox); - } - - { - m_emSdkEnvGroupBox = new QGroupBox(Tr::tr("Emscripten SDK environment:")); - m_emSdkEnvGroupBox->setFlat(true); - m_emSdkEnvGroupBox->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::MinimumExpanding); - auto layout = new QVBoxLayout(m_emSdkEnvGroupBox); - m_emSdkEnvDisplay = new QTextBrowser; - m_emSdkEnvDisplay->setLineWrapMode(QTextBrowser::NoWrap); - m_emSdkEnvDisplay->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); - layout->addWidget(m_emSdkEnvDisplay); - mainLayout->addWidget(m_emSdkEnvGroupBox, 1); - } - - mainLayout->addStretch(); - - { - const QString minimumSupportedQtVersion = - WebAssemblyQtVersion::minimumSupportedQtVersion().toString(); - m_qtVersionDisplay = new InfoLabel( - Tr::tr("Note: %1 supports Qt %2 for WebAssembly and higher. " - "Your installed lower Qt version(s) are not supported.") - .arg(Core::ICore::versionString(), minimumSupportedQtVersion), - InfoLabel::Warning); - m_qtVersionDisplay->setElideMode(Qt::ElideNone); - m_qtVersionDisplay->setWordWrap(true); - mainLayout->addWidget(m_qtVersionDisplay); - } -} - -static QString environmentDisplay(const FilePath &sdkRoot) -{ - Environment env; - WebAssemblyEmSdk::addToEnvironment(sdkRoot, env); - QString result; - auto h4 = [](const QString &text) { return QString("<h4>" + text + "</h4>"); }; - result.append(h4(Tr::tr("Adding directories to PATH:"))); - result.append(env.value("PATH").replace(OsSpecificAspects::pathListSeparator(sdkRoot.osType()), "<br/>")); - result.append(h4(Tr::tr("Setting environment variables:"))); - for (const QString &envVar : env.toStringList()) { - if (!envVar.startsWith("PATH")) // Path was already printed out above - result.append(envVar + "<br/>"); - } - return result; -} - -void WebAssemblyOptionsWidget::updateStatus() -{ - WebAssemblyEmSdk::clearCaches(); - - const FilePath sdkPath = m_emSdkPathChooser->filePath(); - const bool sdkValid = sdkPath.exists() && WebAssemblyEmSdk::isValid(sdkPath); - - m_emSdkVersionDisplay->setVisible(sdkValid); - m_emSdkEnvGroupBox->setVisible(sdkValid); - - if (sdkValid) { - const QVersionNumber sdkVersion = WebAssemblyEmSdk::version(sdkPath); - const QVersionNumber minVersion = WebAssemblyToolChain::minimumSupportedEmSdkVersion(); - const bool versionTooLow = sdkVersion < minVersion; - m_emSdkVersionDisplay->setType(versionTooLow ? InfoLabel::NotOk : InfoLabel::Ok); - auto bold = [](const QString &text) { return QString("<b>" + text + "</b>"); }; - m_emSdkVersionDisplay->setText( - versionTooLow ? Tr::tr("The activated version %1 is not supported by %2. " - "Activate version %3 or higher.") - .arg(bold(sdkVersion.toString())) - .arg(bold(Core::ICore::versionString())) - .arg(bold(minVersion.toString())) - : Tr::tr("Activated version: %1") - .arg(bold(sdkVersion.toString()))); - m_emSdkEnvDisplay->setText(environmentDisplay(sdkPath)); - } - - m_qtVersionDisplay->setVisible(WebAssemblyQtVersion::isUnsupportedQtVersionInstalled()); -} - -void WebAssemblyOptionsWidget::showEvent(QShowEvent *event) -{ - Q_UNUSED(event) - updateStatus(); -} - -void WebAssemblyOptionsWidget::apply() -{ - const FilePath sdkPath = m_emSdkPathChooser->filePath(); - if (!WebAssemblyEmSdk::isValid(sdkPath)) - return; - WebAssemblyEmSdk::registerEmSdk(sdkPath); - WebAssemblyToolChain::registerToolChains(); -} - -WebAssemblyOptionsPage::WebAssemblyOptionsPage() -{ - setId(Id(Constants::SETTINGS_ID)); - setDisplayName(Tr::tr("WebAssembly")); - setCategory(ProjectExplorer::Constants::DEVICE_SETTINGS_CATEGORY); - setWidgetCreator([] { return new WebAssemblyOptionsWidget; }); -} - -} // Internal -} // WebAssembly |