From 200d81d38ce70873f44315fc2530b6b0c8cd7693 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 27 Jul 2020 11:58:05 +0200 Subject: [PATCH] Nim: Aspectify NimbleBuildStep Change-Id: I0f166e68590901568edfd590606df57e25111b9a Reviewed-by: Christian Kandeler --- src/plugins/nim/CMakeLists.txt | 1 - src/plugins/nim/nim.pro | 3 - src/plugins/nim/nim.qbs | 1 - src/plugins/nim/project/nimblebuildstep.cpp | 83 ++++++++----------- src/plugins/nim/project/nimblebuildstep.h | 36 +------- .../nim/project/nimblebuildstepwidget.cpp | 58 ------------- .../nim/project/nimblebuildstepwidget.h | 50 ----------- .../nim/project/nimblebuildstepwidget.ui | 45 ---------- 8 files changed, 37 insertions(+), 240 deletions(-) delete mode 100644 src/plugins/nim/project/nimblebuildstepwidget.cpp delete mode 100644 src/plugins/nim/project/nimblebuildstepwidget.h delete mode 100644 src/plugins/nim/project/nimblebuildstepwidget.ui diff --git a/src/plugins/nim/CMakeLists.txt b/src/plugins/nim/CMakeLists.txt index bee1b4ffbed..92f068f4255 100644 --- a/src/plugins/nim/CMakeLists.txt +++ b/src/plugins/nim/CMakeLists.txt @@ -10,7 +10,6 @@ add_qtc_plugin(Nim nimconstants.h nimplugin.cpp nimplugin.h project/nimblebuildstep.h project/nimblebuildstep.cpp - project/nimblebuildstepwidget.h project/nimblebuildstepwidget.cpp project/nimblebuildstepwidget.ui project/nimbleproject.h project/nimbleproject.cpp project/nimblerunconfiguration.h project/nimblerunconfiguration.cpp project/nimbletaskstep.h project/nimbletaskstep.cpp diff --git a/src/plugins/nim/nim.pro b/src/plugins/nim/nim.pro index 7a49e8f48e8..6c55322b345 100644 --- a/src/plugins/nim/nim.pro +++ b/src/plugins/nim/nim.pro @@ -17,7 +17,6 @@ HEADERS += \ editor/nimtexteditorwidget.h \ project/nimblebuildconfiguration.h \ project/nimblebuildstep.h \ - project/nimblebuildstepwidget.h \ project/nimbleproject.h \ project/nimblerunconfiguration.h \ project/nimbletaskstep.h \ @@ -58,7 +57,6 @@ SOURCES += \ project/nimblebuildconfiguration.cpp \ project/nimblebuildstep.cpp \ project/nimbletaskstep.cpp \ - project/nimblebuildstepwidget.cpp \ project/nimbleproject.cpp \ project/nimblerunconfiguration.cpp \ project/nimbletaskstepwidget.cpp \ @@ -87,7 +85,6 @@ SOURCES += \ suggest/server.cpp FORMS += \ - project/nimblebuildstepwidget.ui \ project/nimbletaskstepwidget.ui \ project/nimcompilerbuildstepconfigwidget.ui \ settings/nimcodestylepreferenceswidget.ui \ diff --git a/src/plugins/nim/nim.qbs b/src/plugins/nim/nim.qbs index bc9ce4d7313..5e5c75d995c 100644 --- a/src/plugins/nim/nim.qbs +++ b/src/plugins/nim/nim.qbs @@ -48,7 +48,6 @@ QtcPlugin { "nimtoolchain.h", "nimtoolchain.cpp", "nimtoolchainfactory.h", "nimtoolchainfactory.cpp", "nimblebuildstep.h", "nimblebuildstep.cpp", - "nimblebuildstepwidget.h", "nimblebuildstepwidget.cpp", "nimblebuildstepwidget.ui", "nimbleproject.h", "nimbleproject.cpp", "nimblerunconfiguration.h", "nimblerunconfiguration.cpp", "nimbletaskstep.h", "nimbletaskstep.cpp", diff --git a/src/plugins/nim/project/nimblebuildstep.cpp b/src/plugins/nim/project/nimblebuildstep.cpp index cd2e64ffb7d..17247207578 100644 --- a/src/plugins/nim/project/nimblebuildstep.cpp +++ b/src/plugins/nim/project/nimblebuildstep.cpp @@ -24,7 +24,6 @@ ****************************************************************************/ #include "nimblebuildstep.h" -#include "nimblebuildstepwidget.h" #include "nimbletaskstepwidget.h" #include "nimconstants.h" #include "nimbleproject.h" @@ -33,15 +32,15 @@ #include #include #include +#include #include #include -using namespace Nim; using namespace ProjectExplorer; using namespace Utils; -namespace { +namespace Nim { class NimParser : public OutputTaskParser { @@ -80,26 +79,47 @@ class NimParser : public OutputTaskParser } }; -} +class NimbleBuildStep : public AbstractProcessStep +{ +public: + NimbleBuildStep(BuildStepList *parentList, Id id); -NimbleBuildStep::NimbleBuildStep(BuildStepList *parentList, Utils::Id id) + bool init() final; + void setupOutputFormatter(OutputFormatter *formatter) final; + +private: + QString defaultArguments() const; + void onArgumentsChanged(); + + ArgumentsAspect *m_arguments; +}; + +NimbleBuildStep::NimbleBuildStep(BuildStepList *parentList, Id id) : AbstractProcessStep(parentList, id) { setDefaultDisplayName(tr(Constants::C_NIMBLEBUILDSTEP_DISPLAY)); setDisplayName(tr(Constants::C_NIMBLEBUILDSTEP_DISPLAY)); + + m_arguments = addAspect(); + m_arguments->setSettingsKey(Constants::C_NIMBLEBUILDSTEP_ARGUMENTS); + m_arguments->setResetter([this] { return defaultArguments(); }); + QTC_ASSERT(buildConfiguration(), return); - QObject::connect(buildConfiguration(), &BuildConfiguration::buildTypeChanged, this, &NimbleBuildStep::resetArguments); - QObject::connect(this, &NimbleBuildStep::argumentsChanged, this, &NimbleBuildStep::onArgumentsChanged); - resetArguments(); + QObject::connect(buildConfiguration(), &BuildConfiguration::buildTypeChanged, + m_arguments, &ArgumentsAspect::resetArguments); + QObject::connect(m_arguments, &ArgumentsAspect::argumentsChanged, + this, &NimbleBuildStep::onArgumentsChanged); } bool NimbleBuildStep::init() { - ProcessParameters* params = processParameters(); + m_arguments->setArguments(defaultArguments()); + ProcessParameters *params = processParameters(); params->setEnvironment(buildEnvironment()); params->setMacroExpander(macroExpander()); params->setWorkingDirectory(project()->projectDirectory()); - params->setCommandLine({QStandardPaths::findExecutable("nimble"), {"build", m_arguments}}); + params->setCommandLine({QStandardPaths::findExecutable("nimble"), + {"build", m_arguments->arguments(macroExpander())}}); return AbstractProcessStep::init(); } @@ -111,42 +131,6 @@ void NimbleBuildStep::setupOutputFormatter(OutputFormatter *formatter) AbstractProcessStep::setupOutputFormatter(formatter); } -BuildStepConfigWidget *NimbleBuildStep::createConfigWidget() -{ - return new NimbleBuildStepWidget(this); -} - -QString NimbleBuildStep::arguments() const -{ - return m_arguments; -} - -void NimbleBuildStep::setArguments(const QString &args) -{ - if (m_arguments == args) - return; - m_arguments = args; - emit argumentsChanged(args); -} - -void NimbleBuildStep::resetArguments() -{ - setArguments(defaultArguments()); -} - -bool NimbleBuildStep::fromMap(const QVariantMap &map) -{ - m_arguments = map.value(Constants::C_NIMBLEBUILDSTEP_ARGUMENTS, defaultArguments()).toString(); - return AbstractProcessStep::fromMap(map); -} - -QVariantMap NimbleBuildStep::toMap() const -{ - auto map = AbstractProcessStep::toMap(); - map[Constants::C_NIMBLEBUILDSTEP_ARGUMENTS] = m_arguments; - return map; -} - QString NimbleBuildStep::defaultArguments() const { switch (buildType()) { @@ -162,8 +146,9 @@ QString NimbleBuildStep::defaultArguments() const void NimbleBuildStep::onArgumentsChanged() { - ProcessParameters* params = processParameters(); - params->setCommandLine({QStandardPaths::findExecutable("nimble"), {"build", m_arguments}}); + ProcessParameters *params = processParameters(); + params->setCommandLine({QStandardPaths::findExecutable("nimble"), + {"build", m_arguments->arguments(macroExpander())}}); } NimbleBuildStepFactory::NimbleBuildStepFactory() @@ -174,3 +159,5 @@ NimbleBuildStepFactory::NimbleBuildStepFactory() setSupportedConfiguration(Constants::C_NIMBLEBUILDCONFIGURATION_ID); setRepeatable(true); } + +} // Nim diff --git a/src/plugins/nim/project/nimblebuildstep.h b/src/plugins/nim/project/nimblebuildstep.h index 4c425d8837c..ffacc456c32 100644 --- a/src/plugins/nim/project/nimblebuildstep.h +++ b/src/plugins/nim/project/nimblebuildstep.h @@ -29,42 +29,10 @@ namespace Nim { -class NimbleBuildStep : public ProjectExplorer::AbstractProcessStep -{ - Q_OBJECT - -public: - NimbleBuildStep(ProjectExplorer::BuildStepList *parentList, Utils::Id id); - - bool init() override; - void setupOutputFormatter(Utils::OutputFormatter *formatter) override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; - - QString arguments() const; - - void setArguments(const QString &args); - - void resetArguments(); - - bool fromMap(const QVariantMap &map) override; - - QVariantMap toMap() const override; - -signals: - void argumentsChanged(const QString &args); - -private: - QString defaultArguments() const; - - void onArgumentsChanged(); - - QString m_arguments; -}; - -class NimbleBuildStepFactory : public ProjectExplorer::BuildStepFactory +class NimbleBuildStepFactory final : public ProjectExplorer::BuildStepFactory { public: NimbleBuildStepFactory(); }; -} +} // Nim diff --git a/src/plugins/nim/project/nimblebuildstepwidget.cpp b/src/plugins/nim/project/nimblebuildstepwidget.cpp deleted file mode 100644 index aa1981e7e20..00000000000 --- a/src/plugins/nim/project/nimblebuildstepwidget.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) Filippo Cucchetto -** Contact: http://www.qt.io/licensing -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "nimblebuildstepwidget.h" -#include "ui_nimblebuildstepwidget.h" - -#include "nimblebuildstep.h" -#include "nimbleproject.h" - -#include - -#include -#include - - -using namespace Nim; -using namespace ProjectExplorer; - -NimbleBuildStepWidget::NimbleBuildStepWidget(NimbleBuildStep *bs) - : BuildStepConfigWidget(bs) - , ui(new Ui::NimbleBuildStepWidget) -{ - ui->setupUi(this); - - ui->argumentsLineEdit->setText(bs->arguments()); - QObject::connect(bs, &NimbleBuildStep::argumentsChanged, ui->argumentsLineEdit, &QLineEdit::setText); - QObject::connect(ui->argumentsLineEdit, &QLineEdit::textEdited, bs, &NimbleBuildStep::setArguments); - - ui->resetButton->setIcon(Utils::Icons::RESET.icon()); - QObject::connect(ui->resetButton, &QToolButton::clicked, bs, &NimbleBuildStep::resetArguments); -} - -NimbleBuildStepWidget::~NimbleBuildStepWidget() -{ - delete ui; -} diff --git a/src/plugins/nim/project/nimblebuildstepwidget.h b/src/plugins/nim/project/nimblebuildstepwidget.h deleted file mode 100644 index b367e8319f2..00000000000 --- a/src/plugins/nim/project/nimblebuildstepwidget.h +++ /dev/null @@ -1,50 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) Filippo Cucchetto -** Contact: http://www.qt.io/licensing -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include -#include - -namespace Nim { - -class NimbleBuildStep; - -namespace Ui { class NimbleBuildStepWidget; } - -class NimbleBuildStepWidget : public ProjectExplorer::BuildStepConfigWidget -{ - Q_OBJECT - -public: - explicit NimbleBuildStepWidget(NimbleBuildStep *bs); - - ~NimbleBuildStepWidget(); - -private: - Ui::NimbleBuildStepWidget *ui; -}; - -} diff --git a/src/plugins/nim/project/nimblebuildstepwidget.ui b/src/plugins/nim/project/nimblebuildstepwidget.ui deleted file mode 100644 index 919fdb104bb..00000000000 --- a/src/plugins/nim/project/nimblebuildstepwidget.ui +++ /dev/null @@ -1,45 +0,0 @@ - - - Nim::NimbleBuildStepWidget - - - - 0 - 0 - 400 - 50 - - - - Form - - - - - - - - Arguments: - - - - - - - - - - Reset to Default - - - - - - - - - - - - -