diff options
Diffstat (limited to 'src/plugins/nim')
29 files changed, 160 insertions, 355 deletions
diff --git a/src/plugins/nim/CMakeLists.txt b/src/plugins/nim/CMakeLists.txt new file mode 100644 index 0000000000..ac450f76f4 --- /dev/null +++ b/src/plugins/nim/CMakeLists.txt @@ -0,0 +1,35 @@ +add_qtc_plugin(Nim + PLUGIN_DEPENDS Core TextEditor ProjectExplorer + SOURCES + editor/nimcompletionassistprovider.cpp editor/nimcompletionassistprovider.h + editor/nimeditorfactory.cpp editor/nimeditorfactory.h + editor/nimhighlighter.cpp editor/nimhighlighter.h + editor/nimindenter.cpp editor/nimindenter.h + nim.qrc + nimconstants.h + nimplugin.cpp nimplugin.h + project/nimbuildconfiguration.cpp project/nimbuildconfiguration.h + project/nimcompilerbuildstep.cpp project/nimcompilerbuildstep.h + project/nimcompilerbuildstepconfigwidget.cpp project/nimcompilerbuildstepconfigwidget.h project/nimcompilerbuildstepconfigwidget.ui + project/nimcompilercleanstep.cpp project/nimcompilercleanstep.h + project/nimcompilercleanstepconfigwidget.cpp project/nimcompilercleanstepconfigwidget.h project/nimcompilercleanstepconfigwidget.ui + project/nimproject.cpp project/nimproject.h + project/nimprojectnode.cpp project/nimprojectnode.h + project/nimrunconfiguration.cpp project/nimrunconfiguration.h + project/nimtoolchain.cpp project/nimtoolchain.h + project/nimtoolchainfactory.cpp project/nimtoolchainfactory.h + settings/nimcodestylepreferencesfactory.cpp settings/nimcodestylepreferencesfactory.h + settings/nimcodestylepreferenceswidget.cpp settings/nimcodestylepreferenceswidget.h settings/nimcodestylepreferenceswidget.ui + settings/nimcodestylesettingspage.cpp settings/nimcodestylesettingspage.h + settings/nimsettings.cpp settings/nimsettings.h + settings/nimtoolssettingspage.cpp settings/nimtoolssettingspage.h + settings/nimtoolssettingswidget.ui + suggest/client.cpp suggest/client.h + suggest/clientrequests.cpp suggest/clientrequests.h + suggest/nimsuggest.cpp suggest/nimsuggest.h + suggest/nimsuggestcache.cpp suggest/nimsuggestcache.h + suggest/server.cpp suggest/server.h + suggest/sexprlexer.h suggest/sexprparser.h + tools/nimlexer.cpp tools/nimlexer.h + tools/sourcecodestream.h +) diff --git a/src/plugins/nim/editor/nimcompletionassistprovider.cpp b/src/plugins/nim/editor/nimcompletionassistprovider.cpp index ec7544bfed..9fcf30c4b0 100644 --- a/src/plugins/nim/editor/nimcompletionassistprovider.cpp +++ b/src/plugins/nim/editor/nimcompletionassistprovider.cpp @@ -158,7 +158,7 @@ private: static Suggest::NimSuggest *nimSuggestInstance(const AssistInterface *interface) { - auto filename = Utils::FileName::fromString(interface->fileName()); + auto filename = Utils::FilePath::fromString(interface->fileName()); return Nim::Suggest::NimSuggestCache::instance().get(filename); } @@ -170,7 +170,7 @@ private: int line = 0, column = 0; Utils::Text::convertPosition(interface->textDocument(), pos, &line, &column); QTC_ASSERT(column >= 1, return nullptr); - auto filename = Utils::FileName::fromString(interface->fileName()); + auto filename = Utils::FilePath::fromString(interface->fileName()); return suggest->sug(filename.toString(), line, column - 1, dirtyFile); } diff --git a/src/plugins/nim/nim.pro b/src/plugins/nim/nim.pro index e2e4fb18c1..2cb7bb2de3 100644 --- a/src/plugins/nim/nim.pro +++ b/src/plugins/nim/nim.pro @@ -24,7 +24,6 @@ HEADERS += \ project/nimcompilercleanstep.h \ project/nimcompilercleanstepconfigwidget.h \ project/nimrunconfiguration.h \ - project/nimbuildconfigurationwidget.h \ editor/nimeditorfactory.h \ settings/nimcodestylesettingspage.h \ settings/nimcodestylepreferencesfactory.h \ @@ -55,7 +54,6 @@ SOURCES += \ project/nimcompilercleanstep.cpp \ project/nimcompilercleanstepconfigwidget.cpp \ project/nimrunconfiguration.cpp \ - project/nimbuildconfigurationwidget.cpp \ editor/nimeditorfactory.cpp \ settings/nimcodestylesettingspage.cpp \ settings/nimcodestylepreferencesfactory.cpp \ diff --git a/src/plugins/nim/nim.qbs b/src/plugins/nim/nim.qbs index b009e4d88f..cf5dc40930 100644 --- a/src/plugins/nim/nim.qbs +++ b/src/plugins/nim/nim.qbs @@ -37,7 +37,6 @@ QtcPlugin { prefix: "project/" files: [ "nimbuildconfiguration.h", "nimbuildconfiguration.cpp", - "nimbuildconfigurationwidget.h", "nimbuildconfigurationwidget.cpp", "nimcompilerbuildstep.h", "nimcompilerbuildstep.cpp", "nimcompilerbuildstepconfigwidget.h", "nimcompilerbuildstepconfigwidget.cpp", "nimcompilerbuildstepconfigwidget.ui", "nimcompilercleanstep.h", "nimcompilercleanstep.cpp", diff --git a/src/plugins/nim/nimconstants.h b/src/plugins/nim/nimconstants.h index d37cdcedb7..552e01d4b3 100644 --- a/src/plugins/nim/nimconstants.h +++ b/src/plugins/nim/nimconstants.h @@ -39,19 +39,11 @@ const char C_EDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("OpenWith::Editors", "Nim const char C_NIMTOOLCHAIN_TYPEID[] = "Nim.NimToolChain"; const char C_NIMTOOLCHAIN_COMPILER_COMMAND_KEY[] = "Nim.NimToolChain.CompilerCommand"; -// NimRunConfiguration -const QString C_NIMRUNCONFIGURATION_EXECUTABLE_KEY = QStringLiteral("Nim.NimRunConfiguration.Executable"); - // NimProject const char C_NIMPROJECT_EXCLUDEDFILES[] = "Nim.NimProjectExcludedFiles"; // NimBuildConfiguration const char C_NIMBUILDCONFIGURATION_ID[] = "Nim.NimBuildConfiguration"; -const QString C_NIMBUILDCONFIGURATION_DISPLAY_KEY = QStringLiteral("Nim.NimBuildConfiguration.Display"); -const QString C_NIMBUILDCONFIGURATION_BUILDDIRECTORY_KEY = QStringLiteral("Nim.NimBuildConfiguration.BuildDirectory"); - -// NimBuildConfigurationWidget -const char C_NIMBUILDCONFIGURATIONWIDGET_DISPLAY[] = QT_TRANSLATE_NOOP("NimBuildConfigurationWidget","General"); // NimCompilerBuildStep const char C_NIMCOMPILERBUILDSTEP_ID[] = "Nim.NimCompilerBuildStep"; diff --git a/src/plugins/nim/nimplugin.cpp b/src/plugins/nim/nimplugin.cpp index 3afcb19b5f..d9ff187179 100644 --- a/src/plugins/nim/nimplugin.cpp +++ b/src/plugins/nim/nimplugin.cpp @@ -43,6 +43,7 @@ #include <coreplugin/fileiconprovider.h> #include <projectexplorer/projectmanager.h> #include <projectexplorer/toolchainmanager.h> +#include <projectexplorer/runcontrol.h> #include <texteditor/snippets/snippetprovider.h> using namespace Utils; @@ -66,6 +67,7 @@ public: NimEditorFactory editorFactory; NimBuildConfigurationFactory buildConfigFactory; NimRunConfigurationFactory runConfigFactory; + SimpleRunWorkerFactory<SimpleTargetRunner, NimRunConfiguration> runWorkerFactory; NimCompilerBuildStepFactory buildStepFactory; NimCompilerCleanStepFactory cleanStepFactory; NimCodeStyleSettingsPage codeStyleSettingsPage; diff --git a/src/plugins/nim/project/nimbuildconfiguration.cpp b/src/plugins/nim/project/nimbuildconfiguration.cpp index 46acf4881b..0827a29327 100644 --- a/src/plugins/nim/project/nimbuildconfiguration.cpp +++ b/src/plugins/nim/project/nimbuildconfiguration.cpp @@ -24,7 +24,6 @@ ****************************************************************************/ #include "nimbuildconfiguration.h" -#include "nimbuildconfigurationwidget.h" #include "nimcompilerbuildstep.h" #include "nimproject.h" #include "nimbuildconfiguration.h" @@ -43,6 +42,7 @@ #include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectmacroexpander.h> #include <projectexplorer/target.h> +#include <projectexplorer/projectconfigurationaspects.h> #include <utils/mimetypes/mimedatabase.h> #include <utils/qtcassert.h> @@ -51,7 +51,7 @@ using namespace Utils; namespace Nim { -static FileName defaultBuildDirectory(const Kit *k, +static FilePath defaultBuildDirectory(const Kit *k, const QString &projectFilePath, const QString &bc, BuildConfiguration::BuildType buildType) @@ -62,17 +62,18 @@ static FileName defaultBuildDirectory(const Kit *k, QString buildDirectory = expander.expand(ProjectExplorerPlugin::buildDirectoryTemplate()); if (FileUtils::isAbsolutePath(buildDirectory)) - return FileName::fromString(buildDirectory); + return FilePath::fromString(buildDirectory); - auto projectDir = FileName::fromString(projectFileInfo.absoluteDir().absolutePath()); - auto result = projectDir.appendPath(buildDirectory); - - return result; + auto projectDir = FilePath::fromString(projectFileInfo.absoluteDir().absolutePath()); + return projectDir.pathAppended(buildDirectory); } NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id) : BuildConfiguration(target, id) { + setConfigWidgetDisplayName(tr("General")); + setConfigWidgetHasFrame(true); + setBuildDirectorySettingsKey("Nim.NimBuildConfiguration.BuildDirectory"); } void NimBuildConfiguration::initialize(const BuildInfo &info) @@ -105,7 +106,7 @@ void NimBuildConfiguration::initialize(const BuildInfo &info) break; } nimCompilerBuildStep->setDefaultCompilerOptions(defaultOption); - Utils::FileNameList nimFiles = project->nimFiles(); + Utils::FilePathList nimFiles = project->nimFiles(); if (!nimFiles.isEmpty()) nimCompilerBuildStep->setTargetNimFile(nimFiles.first()); buildSteps->appendStep(nimCompilerBuildStep); @@ -118,48 +119,20 @@ void NimBuildConfiguration::initialize(const BuildInfo &info) } } - -NamedWidget *NimBuildConfiguration::createConfigWidget() -{ - return new NimBuildConfigurationWidget(this); -} - BuildConfiguration::BuildType NimBuildConfiguration::buildType() const { return BuildConfiguration::Unknown; } -bool NimBuildConfiguration::fromMap(const QVariantMap &map) -{ - if (!BuildConfiguration::fromMap(map)) - return false; - - const QString displayName = map[Constants::C_NIMBUILDCONFIGURATION_DISPLAY_KEY].toString(); - const QString buildDirectory = map[Constants::C_NIMBUILDCONFIGURATION_BUILDDIRECTORY_KEY].toString(); - - setDisplayName(displayName); - setBuildDirectory(FileName::fromString(buildDirectory)); - - return true; -} - -QVariantMap NimBuildConfiguration::toMap() const -{ - QVariantMap result = BuildConfiguration::toMap(); - result[Constants::C_NIMBUILDCONFIGURATION_DISPLAY_KEY] = displayName(); - result[Constants::C_NIMBUILDCONFIGURATION_BUILDDIRECTORY_KEY] = buildDirectory().toString(); - return result; -} - -FileName NimBuildConfiguration::cacheDirectory() const +FilePath NimBuildConfiguration::cacheDirectory() const { - return buildDirectory().appendPath(QStringLiteral("nimcache")); + return buildDirectory().pathAppended("nimcache"); } -FileName NimBuildConfiguration::outFilePath() const +FilePath NimBuildConfiguration::outFilePath() const { const NimCompilerBuildStep *step = nimCompilerBuildStep(); - QTC_ASSERT(step, return FileName()); + QTC_ASSERT(step, return FilePath()); return step->outFilePath(); } diff --git a/src/plugins/nim/project/nimbuildconfiguration.h b/src/plugins/nim/project/nimbuildconfiguration.h index 90175647ea..3c1819e01d 100644 --- a/src/plugins/nim/project/nimbuildconfiguration.h +++ b/src/plugins/nim/project/nimbuildconfiguration.h @@ -40,18 +40,14 @@ class NimBuildConfiguration : public ProjectExplorer::BuildConfiguration NimBuildConfiguration(ProjectExplorer::Target *target, Core::Id id); void initialize(const ProjectExplorer::BuildInfo &info) override; - ProjectExplorer::NamedWidget *createConfigWidget() override; ProjectExplorer::BuildConfiguration::BuildType buildType() const override; - bool fromMap(const QVariantMap &map) override; - QVariantMap toMap() const override; - public: - Utils::FileName cacheDirectory() const; - Utils::FileName outFilePath() const; + Utils::FilePath cacheDirectory() const; + Utils::FilePath outFilePath() const; signals: - void outFilePathChanged(const Utils::FileName &outFilePath); + void outFilePathChanged(const Utils::FilePath &outFilePath); private: void setupBuild(const ProjectExplorer::BuildInfo *info); diff --git a/src/plugins/nim/project/nimbuildconfigurationwidget.cpp b/src/plugins/nim/project/nimbuildconfigurationwidget.cpp deleted file mode 100644 index e4511eba31..0000000000 --- a/src/plugins/nim/project/nimbuildconfigurationwidget.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) Filippo Cucchetto <filippocucchetto@gmail.com> -** 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 "nimbuildconfigurationwidget.h" -#include "nimbuildconfiguration.h" - -#include "../nimconstants.h" - -#include <utils/pathchooser.h> -#include <utils/detailswidget.h> - -#include <QVBoxLayout> -#include <QFormLayout> -#include <QComboBox> - -using namespace ProjectExplorer; -using namespace Utils; - -namespace Nim { - -NimBuildConfigurationWidget::NimBuildConfigurationWidget(NimBuildConfiguration *bc) - : NamedWidget(nullptr) - , m_bc(bc) -{ - // Build UI - auto mainLayout = new QVBoxLayout(this); - mainLayout->setMargin(0); - - auto detailsWidget = new DetailsWidget(); - detailsWidget->setState(DetailsWidget::NoSummary); - mainLayout->addWidget(detailsWidget); - - auto detailsInnerWidget = new QWidget(); - auto formLayout = new QFormLayout(detailsInnerWidget); - detailsWidget->setWidget(detailsInnerWidget); - - m_buildDirectoryChooser = new PathChooser(); - formLayout->addRow(tr("Build directory:"), m_buildDirectoryChooser); - - // Connect signals - connect(bc, &NimBuildConfiguration::buildDirectoryChanged, - this, &NimBuildConfigurationWidget::updateUi); - connect(m_buildDirectoryChooser, &PathChooser::pathChanged, - this, &NimBuildConfigurationWidget::onPathEdited); - - setDisplayName(tr(Constants::C_NIMBUILDCONFIGURATIONWIDGET_DISPLAY)); - updateUi(); -} - -NimBuildConfigurationWidget::~NimBuildConfigurationWidget() = default; - -void NimBuildConfigurationWidget::updateUi() -{ - m_buildDirectoryChooser->setPath(m_bc->buildDirectory().toUserOutput()); -} - -void NimBuildConfigurationWidget::onPathEdited(const QString &path) -{ - m_bc->setBuildDirectory(FileName::fromUserInput(path)); -} - - -} diff --git a/src/plugins/nim/project/nimbuildconfigurationwidget.h b/src/plugins/nim/project/nimbuildconfigurationwidget.h deleted file mode 100644 index cb6251b3ec..0000000000 --- a/src/plugins/nim/project/nimbuildconfigurationwidget.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) Filippo Cucchetto <filippocucchetto@gmail.com> -** 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 <projectexplorer/namedwidget.h> - -QT_BEGIN_NAMESPACE -class QComboBox; -class QLineEdit; -class QPushButton; -QT_END_NAMESPACE - -namespace Utils { class PathChooser; } - -namespace Nim { - -class NimBuildConfiguration; - -class NimBuildConfigurationWidget : public ProjectExplorer::NamedWidget -{ - Q_OBJECT - -public: - explicit NimBuildConfigurationWidget(NimBuildConfiguration *bc); - ~NimBuildConfigurationWidget(); - -private: - void updateUi(); - void onPathEdited(const QString &path); - - NimBuildConfiguration *m_bc; - Utils::PathChooser *m_buildDirectoryChooser; -}; - -} diff --git a/src/plugins/nim/project/nimcompilerbuildstep.cpp b/src/plugins/nim/project/nimcompilerbuildstep.cpp index a959ddbb1a..1ecc7e8c63 100644 --- a/src/plugins/nim/project/nimcompilerbuildstep.cpp +++ b/src/plugins/nim/project/nimcompilerbuildstep.cpp @@ -91,7 +91,7 @@ private: Task task(type, message, - Utils::FileName::fromUserInput(filename), + Utils::FilePath::fromUserInput(filename), lineNumber, ProjectExplorer::Constants::TASK_CATEGORY_COMPILE); emit addTask(task); @@ -135,7 +135,7 @@ bool NimCompilerBuildStep::fromMap(const QVariantMap &map) AbstractProcessStep::fromMap(map); m_userCompilerOptions = map[Constants::C_NIMCOMPILERBUILDSTEP_USERCOMPILEROPTIONS].toString().split('|'); m_defaultOptions = static_cast<DefaultBuildOptions>(map[Constants::C_NIMCOMPILERBUILDSTEP_DEFAULTBUILDOPTIONS].toInt()); - m_targetNimFile = FileName::fromString(map[Constants::C_NIMCOMPILERBUILDSTEP_TARGETNIMFILE].toString()); + m_targetNimFile = FilePath::fromString(map[Constants::C_NIMCOMPILERBUILDSTEP_TARGETNIMFILE].toString()); updateProcessParameters(); return true; } @@ -175,12 +175,12 @@ void NimCompilerBuildStep::setDefaultCompilerOptions(NimCompilerBuildStep::Defau updateProcessParameters(); } -FileName NimCompilerBuildStep::targetNimFile() const +FilePath NimCompilerBuildStep::targetNimFile() const { return m_targetNimFile; } -void NimCompilerBuildStep::setTargetNimFile(const FileName &targetNimFile) +void NimCompilerBuildStep::setTargetNimFile(const FilePath &targetNimFile) { if (targetNimFile == m_targetNimFile) return; @@ -189,12 +189,12 @@ void NimCompilerBuildStep::setTargetNimFile(const FileName &targetNimFile) updateProcessParameters(); } -FileName NimCompilerBuildStep::outFilePath() const +FilePath NimCompilerBuildStep::outFilePath() const { return m_outFilePath; } -void NimCompilerBuildStep::setOutFilePath(const FileName &outFilePath) +void NimCompilerBuildStep::setOutFilePath(const FilePath &outFilePath) { if (outFilePath == m_outFilePath) return; @@ -217,8 +217,7 @@ void NimCompilerBuildStep::updateOutFilePath() auto bc = qobject_cast<NimBuildConfiguration *>(buildConfiguration()); QTC_ASSERT(bc, return); const QString targetName = Utils::HostOsInfo::withExecutableSuffix(m_targetNimFile.toFileInfo().baseName()); - FileName outFilePath = bc->buildDirectory().appendPath(targetName); - setOutFilePath(outFilePath); + setOutFilePath(bc->buildDirectory().pathAppended(targetName)); } void NimCompilerBuildStep::updateCommand() @@ -226,16 +225,16 @@ void NimCompilerBuildStep::updateCommand() QTC_ASSERT(target(), return); QTC_ASSERT(target()->kit(), return); Kit *kit = target()->kit(); - auto tc = dynamic_cast<NimToolChain*>(ToolChainKitInformation::toolChain(kit, Constants::C_NIMLANGUAGE_ID)); + auto tc = dynamic_cast<NimToolChain*>(ToolChainKitAspect::toolChain(kit, Constants::C_NIMLANGUAGE_ID)); QTC_ASSERT(tc, return); - processParameters()->setCommand(tc->compilerCommand().toString()); + processParameters()->setCommand(tc->compilerCommand()); } void NimCompilerBuildStep::updateWorkingDirectory() { auto bc = qobject_cast<NimBuildConfiguration *>(buildConfiguration()); QTC_ASSERT(bc, return); - processParameters()->setWorkingDirectory(bc->buildDirectory().toString()); + processParameters()->setWorkingDirectory(bc->buildDirectory()); } void NimCompilerBuildStep::updateArguments() @@ -283,7 +282,7 @@ void NimCompilerBuildStep::updateTargetNimFile() { if (!m_targetNimFile.isEmpty()) return; - const Utils::FileNameList nimFiles = static_cast<NimProject *>(project())->nimFiles(); + const Utils::FilePathList nimFiles = static_cast<NimProject *>(project())->nimFiles(); if (!nimFiles.isEmpty()) setTargetNimFile(nimFiles.at(0)); } @@ -317,19 +316,19 @@ void NimPlugin::testNimParser_data() QTest::addColumn<OutputParserTester::Channel>("inputChannel"); QTest::addColumn<QString>("childStdOutLines"); QTest::addColumn<QString>("childStdErrLines"); - QTest::addColumn<QList<ProjectExplorer::Task> >("tasks"); + QTest::addColumn<Tasks >("tasks"); QTest::addColumn<QString>("outputLines"); // negative tests QTest::newRow("pass-through stdout") << "Sometext" << OutputParserTester::STDOUT << "Sometext\n" << QString() - << QList<Task>() + << Tasks() << QString(); QTest::newRow("pass-through stderr") << "Sometext" << OutputParserTester::STDERR << QString() << "Sometext\n" - << QList<Task>() + << Tasks() << QString(); // positive tests @@ -337,9 +336,9 @@ void NimPlugin::testNimParser_data() << QString::fromLatin1("main.nim(23, 1) Error: undeclared identifier: 'x'") << OutputParserTester::STDERR << QString("") << QString("main.nim(23, 1) Error: undeclared identifier: 'x'\n") - << QList<Task>({Task(Task::Error, + << Tasks({Task(Task::Error, "Error: undeclared identifier: 'x'", - Utils::FileName::fromUserInput("main.nim"), 23, + Utils::FilePath::fromUserInput("main.nim"), 23, ProjectExplorer::Constants::TASK_CATEGORY_COMPILE)}) << QString(); @@ -347,9 +346,9 @@ void NimPlugin::testNimParser_data() << QString::fromLatin1("lib/pure/parseopt.nim(56, 34) Warning: quoteIfContainsWhite is deprecated [Deprecated]") << OutputParserTester::STDERR << QString("") << QString("lib/pure/parseopt.nim(56, 34) Warning: quoteIfContainsWhite is deprecated [Deprecated]\n") - << QList<Task>({Task(Task::Warning, + << Tasks({Task(Task::Warning, "Warning: quoteIfContainsWhite is deprecated [Deprecated]", - Utils::FileName::fromUserInput("lib/pure/parseopt.nim"), 56, + Utils::FilePath::fromUserInput("lib/pure/parseopt.nim"), 56, ProjectExplorer::Constants::TASK_CATEGORY_COMPILE)}) << QString(); } @@ -360,7 +359,7 @@ void NimPlugin::testNimParser() testbench.appendOutputParser(new NimParser); QFETCH(QString, input); QFETCH(OutputParserTester::Channel, inputChannel); - QFETCH(QList<Task>, tasks); + QFETCH(Tasks, tasks); QFETCH(QString, childStdOutLines); QFETCH(QString, childStdErrLines); QFETCH(QString, outputLines); diff --git a/src/plugins/nim/project/nimcompilerbuildstep.h b/src/plugins/nim/project/nimcompilerbuildstep.h index c370a6ba50..a866694c9a 100644 --- a/src/plugins/nim/project/nimcompilerbuildstep.h +++ b/src/plugins/nim/project/nimcompilerbuildstep.h @@ -53,20 +53,20 @@ public: DefaultBuildOptions defaultCompilerOptions() const; void setDefaultCompilerOptions(DefaultBuildOptions options); - Utils::FileName targetNimFile() const; - void setTargetNimFile(const Utils::FileName &targetNimFile); + Utils::FilePath targetNimFile() const; + void setTargetNimFile(const Utils::FilePath &targetNimFile); - Utils::FileName outFilePath() const; + Utils::FilePath outFilePath() const; signals: void userCompilerOptionsChanged(const QStringList &options); void defaultCompilerOptionsChanged(DefaultBuildOptions options); - void targetNimFileChanged(const Utils::FileName &targetNimFile); + void targetNimFileChanged(const Utils::FilePath &targetNimFile); void processParametersChanged(); - void outFilePathChanged(const Utils::FileName &outFilePath); + void outFilePathChanged(const Utils::FilePath &outFilePath); private: - void setOutFilePath(const Utils::FileName &outFilePath); + void setOutFilePath(const Utils::FilePath &outFilePath); void updateOutFilePath(); void updateProcessParameters(); @@ -79,8 +79,8 @@ private: DefaultBuildOptions m_defaultOptions; QStringList m_userCompilerOptions; - Utils::FileName m_targetNimFile; - Utils::FileName m_outFilePath; + Utils::FilePath m_targetNimFile; + Utils::FilePath m_outFilePath; }; class NimCompilerBuildStepFactory : public ProjectExplorer::BuildStepFactory diff --git a/src/plugins/nim/project/nimcompilerbuildstepconfigwidget.cpp b/src/plugins/nim/project/nimcompilerbuildstepconfigwidget.cpp index 600f6cf915..27acf21726 100644 --- a/src/plugins/nim/project/nimcompilerbuildstepconfigwidget.cpp +++ b/src/plugins/nim/project/nimcompilerbuildstepconfigwidget.cpp @@ -60,11 +60,11 @@ NimCompilerBuildStepConfigWidget::NimCompilerBuildStepConfigWidget(NimCompilerBu this, &NimCompilerBuildStepConfigWidget::updateUi); // Connect UI signals - connect(m_ui->targetComboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::activated), + connect(m_ui->targetComboBox, QOverload<int>::of(&QComboBox::activated), this, &NimCompilerBuildStepConfigWidget::onTargetChanged); connect(m_ui->additionalArgumentsLineEdit, &QLineEdit::textEdited, this, &NimCompilerBuildStepConfigWidget::onAdditionalArgumentsTextEdited); - connect(m_ui->defaultArgumentsComboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::activated), + connect(m_ui->defaultArgumentsComboBox, QOverload<int>::of(&QComboBox::activated), this, &NimCompilerBuildStepConfigWidget::onDefaultArgumentsComboBoxIndexChanged); updateUi(); @@ -76,7 +76,7 @@ void NimCompilerBuildStepConfigWidget::onTargetChanged(int index) { Q_UNUSED(index); auto data = m_ui->targetComboBox->currentData(); - FileName path = FileName::fromString(data.toString()); + FilePath path = FilePath::fromString(data.toString()); m_buildStep->setTargetNimFile(path); } @@ -104,7 +104,7 @@ void NimCompilerBuildStepConfigWidget::updateCommandLineText() ProcessParameters *parameters = m_buildStep->processParameters(); QStringList command; - command << parameters->command(); + command << parameters->command().toString(); command << parameters->arguments(); // Remove empty args @@ -124,7 +124,7 @@ void NimCompilerBuildStepConfigWidget::updateTargetComboBox() // Re enter the files m_ui->targetComboBox->clear(); - foreach (const FileName &file, project->nimFiles()) + foreach (const FilePath &file, project->nimFiles()) m_ui->targetComboBox->addItem(file.fileName(), file.toString()); const int index = m_ui->targetComboBox->findData(m_buildStep->targetNimFile().toString()); diff --git a/src/plugins/nim/project/nimcompilercleanstep.cpp b/src/plugins/nim/project/nimcompilercleanstep.cpp index f07f501106..b802582108 100644 --- a/src/plugins/nim/project/nimcompilercleanstep.cpp +++ b/src/plugins/nim/project/nimcompilercleanstep.cpp @@ -54,7 +54,7 @@ BuildStepConfigWidget *NimCompilerCleanStep::createConfigWidget() bool NimCompilerCleanStep::init() { - FileName buildDir = buildConfiguration()->buildDirectory(); + FilePath buildDir = buildConfiguration()->buildDirectory(); bool result = buildDir.exists(); if (result) m_buildDir = buildDir; diff --git a/src/plugins/nim/project/nimcompilercleanstep.h b/src/plugins/nim/project/nimcompilercleanstep.h index e250d88f45..2cbde61beb 100644 --- a/src/plugins/nim/project/nimcompilercleanstep.h +++ b/src/plugins/nim/project/nimcompilercleanstep.h @@ -48,7 +48,7 @@ private: bool removeCacheDirectory(); bool removeOutFilePath(); - Utils::FileName m_buildDir; + Utils::FilePath m_buildDir; }; class NimCompilerCleanStepFactory : public ProjectExplorer::BuildStepFactory diff --git a/src/plugins/nim/project/nimproject.cpp b/src/plugins/nim/project/nimproject.cpp index 2af19e4d49..a6cad1657f 100644 --- a/src/plugins/nim/project/nimproject.cpp +++ b/src/plugins/nim/project/nimproject.cpp @@ -60,7 +60,7 @@ namespace Nim { const int MIN_TIME_BETWEEN_PROJECT_SCANS = 4500; -NimProject::NimProject(const FileName &fileName) : Project(Constants::C_NIM_MIMETYPE, fileName) +NimProject::NimProject(const FilePath &fileName) : Project(Constants::C_NIM_MIMETYPE, fileName) { setId(Constants::C_NIMPROJECT_ID); setDisplayName(fileName.toFileInfo().completeBaseName()); @@ -117,16 +117,16 @@ void NimProject::collectProjectFiles() { m_lastProjectScan.start(); QTC_ASSERT(!m_futureWatcher.future().isRunning(), return); - FileName prjDir = projectDirectory(); + FilePath prjDir = projectDirectory(); QFuture<QList<ProjectExplorer::FileNode *>> future = Utils::runAsync([prjDir, excluded = m_excludedFiles] { - return FileNode::scanForFiles(prjDir, [excluded](const FileName & fn) -> FileNode * { + return FileNode::scanForFiles(prjDir, [excluded](const FilePath & fn) -> FileNode * { const QString fileName = fn.fileName(); if (excluded.contains(fn.toString()) || fileName.endsWith(".nimproject", HostOsInfo::fileNameCaseSensitivity()) || fileName.contains(".nimproject.user", HostOsInfo::fileNameCaseSensitivity())) return nullptr; - return new FileNode(fn, FileType::Source, false); + return new FileNode(fn, FileType::Source); }); }); m_futureWatcher.setFuture(future); @@ -150,11 +150,10 @@ void NimProject::updateProject() emitParsingFinished(true); } -QList<Task> NimProject::projectIssues(const Kit *k) const +Tasks NimProject::projectIssues(const Kit *k) const { - QList<Task> result = Project::projectIssues(k); - auto tc = dynamic_cast<NimToolChain *>(ToolChainKitInformation::toolChain(k, - Constants::C_NIMLANGUAGE_ID)); + Tasks result = Project::projectIssues(k); + auto tc = dynamic_cast<NimToolChain *>(ToolChainKitAspect::toolChain(k, Constants::C_NIMLANGUAGE_ID)); if (!tc) { result.append(createProjectTask(Task::TaskType::Error, tr("No Nim compiler set."))); return result; @@ -165,7 +164,7 @@ QList<Task> NimProject::projectIssues(const Kit *k) const return result; } -FileNameList NimProject::nimFiles() const +FilePathList NimProject::nimFiles() const { return files([](const ProjectExplorer::Node *n) { return AllFiles(n) && n->filePath().endsWith(".nim"); diff --git a/src/plugins/nim/project/nimproject.h b/src/plugins/nim/project/nimproject.h index 5670fbe533..d0143de2fd 100644 --- a/src/plugins/nim/project/nimproject.h +++ b/src/plugins/nim/project/nimproject.h @@ -39,10 +39,10 @@ class NimProject : public ProjectExplorer::Project Q_OBJECT public: - explicit NimProject(const Utils::FileName &fileName); + explicit NimProject(const Utils::FilePath &fileName); - QList<ProjectExplorer::Task> projectIssues(const ProjectExplorer::Kit *k) const final; - Utils::FileNameList nimFiles() const; + ProjectExplorer::Tasks projectIssues(const ProjectExplorer::Kit *k) const final; + Utils::FilePathList nimFiles() const; QVariantMap toMap() const final; bool addFiles(const QStringList &filePaths); diff --git a/src/plugins/nim/project/nimprojectnode.cpp b/src/plugins/nim/project/nimprojectnode.cpp index 7604fb3a6d..6a6385b67e 100644 --- a/src/plugins/nim/project/nimprojectnode.cpp +++ b/src/plugins/nim/project/nimprojectnode.cpp @@ -32,25 +32,23 @@ using namespace Utils; namespace Nim { NimProjectNode::NimProjectNode(NimProject &project, - const FileName &projectFilePath) + const FilePath &projectFilePath) : ProjectNode(projectFilePath) , m_project(project) {} bool NimProjectNode::supportsAction(ProjectAction action, const Node *node) const { - switch (node->nodeType()) { - case NodeType::File: + if (node->asFileNode()) { return action == ProjectAction::Rename || action == ProjectAction::RemoveFile; - case NodeType::Folder: - case NodeType::Project: + } + if (node->isFolderNodeType() || node->isProjectNodeType()) { return action == ProjectAction::AddNewFile || action == ProjectAction::RemoveFile || action == ProjectAction::AddExistingFile; - default: - return ProjectNode::supportsAction(action, node); } + return ProjectNode::supportsAction(action, node); } bool NimProjectNode::addFiles(const QStringList &filePaths, QStringList *) diff --git a/src/plugins/nim/project/nimprojectnode.h b/src/plugins/nim/project/nimprojectnode.h index 317d4be555..6a950bdf4f 100644 --- a/src/plugins/nim/project/nimprojectnode.h +++ b/src/plugins/nim/project/nimprojectnode.h @@ -27,7 +27,7 @@ #include <projectexplorer/projectnodes.h> -namespace Utils { class FileName; } +namespace Utils { class FilePath; } namespace Nim { @@ -36,7 +36,7 @@ class NimProject; class NimProjectNode : public ProjectExplorer::ProjectNode { public: - NimProjectNode(NimProject &project, const Utils::FileName &projectFilePath); + NimProjectNode(NimProject &project, const Utils::FilePath &projectFilePath); bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const override; bool addFiles(const QStringList &filePaths, QStringList *) override; diff --git a/src/plugins/nim/project/nimrunconfiguration.cpp b/src/plugins/nim/project/nimrunconfiguration.cpp index c27cb75b54..7849f4dc19 100644 --- a/src/plugins/nim/project/nimrunconfiguration.cpp +++ b/src/plugins/nim/project/nimrunconfiguration.cpp @@ -30,6 +30,7 @@ #include <projectexplorer/localenvironmentaspect.h> #include <projectexplorer/runconfigurationaspects.h> +#include <projectexplorer/runcontrol.h> #include <utils/environment.h> @@ -44,12 +45,10 @@ namespace Nim { NimRunConfiguration::NimRunConfiguration(Target *target, Core::Id id) : RunConfiguration(target, id) { - auto envAspect = addAspect<LocalEnvironmentAspect> - (target, LocalEnvironmentAspect::BaseEnvironmentModifier()); - + addAspect<LocalEnvironmentAspect>(target); addAspect<ExecutableAspect>(); addAspect<ArgumentsAspect>(); - addAspect<WorkingDirectoryAspect>(envAspect); + addAspect<WorkingDirectoryAspect>(); addAspect<TerminalAspect>(); setDisplayName(tr("Current Build Target")); @@ -67,9 +66,9 @@ void NimRunConfiguration::updateConfiguration() QTC_ASSERT(buildConfiguration, return); setActiveBuildConfiguration(buildConfiguration); const QFileInfo outFileInfo = buildConfiguration->outFilePath().toFileInfo(); - aspect<ExecutableAspect>()->setExecutable(FileName::fromString(outFileInfo.absoluteFilePath())); + aspect<ExecutableAspect>()->setExecutable(FilePath::fromString(outFileInfo.absoluteFilePath())); const QString workingDirectory = outFileInfo.absoluteDir().absolutePath(); - aspect<WorkingDirectoryAspect>()->setDefaultWorkingDirectory(FileName::fromString(workingDirectory)); + aspect<WorkingDirectoryAspect>()->setDefaultWorkingDirectory(FilePath::fromString(workingDirectory)); } void NimRunConfiguration::setActiveBuildConfiguration(NimBuildConfiguration *activeBuildConfiguration) @@ -100,7 +99,6 @@ NimRunConfigurationFactory::NimRunConfigurationFactory() : FixedRunConfiguration { registerRunConfiguration<NimRunConfiguration>("Nim.NimRunConfiguration"); addSupportedProjectType(Constants::C_NIMPROJECT_ID); - addRunWorkerFactory<SimpleTargetRunner>(ProjectExplorer::Constants::NORMAL_RUN_MODE); } } // Nim diff --git a/src/plugins/nim/project/nimtoolchain.cpp b/src/plugins/nim/project/nimtoolchain.cpp index 6687c1eb8c..3e7fcbef72 100644 --- a/src/plugins/nim/project/nimtoolchain.cpp +++ b/src/plugins/nim/project/nimtoolchain.cpp @@ -39,20 +39,20 @@ using namespace Utils; namespace Nim { -NimToolChain::NimToolChain(ToolChain::Detection d) - : NimToolChain(Constants::C_NIMTOOLCHAIN_TYPEID, d) +NimToolChain::NimToolChain() + : NimToolChain(Constants::C_NIMTOOLCHAIN_TYPEID) {} -NimToolChain::NimToolChain(Core::Id typeId, ToolChain::Detection d) - : ToolChain(typeId, d) - , m_compilerCommand(FileName()) +NimToolChain::NimToolChain(Core::Id typeId) + : ToolChain(typeId) + , m_compilerCommand(FilePath()) , m_version(std::make_tuple(-1,-1,-1)) { setLanguage(Constants::C_NIMLANGUAGE_ID); } NimToolChain::NimToolChain(const NimToolChain &other) - : ToolChain(other.typeId(), other.detection()) + : ToolChain(other.typeId()) , m_compilerCommand(other.m_compilerCommand) , m_version(other.m_version) { @@ -71,7 +71,7 @@ Abi NimToolChain::targetAbi() const bool NimToolChain::isValid() const { - if (m_compilerCommand.isNull()) + if (m_compilerCommand.isEmpty()) return false; QFileInfo fi = compilerCommand().toFileInfo(); return fi.isExecutable(); @@ -102,7 +102,7 @@ ToolChain::BuiltInHeaderPathsRunner NimToolChain::createBuiltInHeaderPathsRunner return ToolChain::BuiltInHeaderPathsRunner(); } -HeaderPaths NimToolChain::builtInHeaderPaths(const QStringList &, const FileName &) const +HeaderPaths NimToolChain::builtInHeaderPaths(const QStringList &, const FilePath &) const { return {}; } @@ -113,19 +113,18 @@ void NimToolChain::addToEnvironment(Environment &env) const env.prependOrSetPath(compilerCommand().parentDir().toString()); } -QString NimToolChain::makeCommand(const Environment &env) const +FilePath NimToolChain::makeCommand(const Environment &env) const { - QString make = "make"; - FileName tmp = env.searchInPath(make); - return tmp.isEmpty() ? make : tmp.toString(); + const FilePath tmp = env.searchInPath("make"); + return tmp.isEmpty() ? FilePath::fromString("make") : tmp; } -FileName NimToolChain::compilerCommand() const +FilePath NimToolChain::compilerCommand() const { return m_compilerCommand; } -void NimToolChain::setCompilerCommand(const FileName &compilerCommand) +void NimToolChain::setCompilerCommand(const FilePath &compilerCommand) { m_compilerCommand = compilerCommand; parseVersion(compilerCommand, m_version); @@ -141,11 +140,6 @@ std::unique_ptr<ProjectExplorer::ToolChainConfigWidget> NimToolChain::createConf return std::make_unique<NimToolChainConfigWidget>(this); } -ToolChain *NimToolChain::clone() const -{ - return new NimToolChain(*this); -} - QVariantMap NimToolChain::toMap() const { QVariantMap data = ToolChain::toMap(); @@ -167,11 +161,11 @@ bool NimToolChain::fromMap(const QVariantMap &data) { if (!ToolChain::fromMap(data)) return false; - setCompilerCommand(FileName::fromString(data.value(Constants::C_NIMTOOLCHAIN_COMPILER_COMMAND_KEY).toString())); + setCompilerCommand(FilePath::fromString(data.value(Constants::C_NIMTOOLCHAIN_COMPILER_COMMAND_KEY).toString())); return true; } -bool NimToolChain::parseVersion(const FileName &path, std::tuple<int, int, int> &result) +bool NimToolChain::parseVersion(const FilePath &path, std::tuple<int, int, int> &result) { QProcess process; process.start(path.toString(), {"--version"}); diff --git a/src/plugins/nim/project/nimtoolchain.h b/src/plugins/nim/project/nimtoolchain.h index 1ebe381517..b35e073ccd 100644 --- a/src/plugins/nim/project/nimtoolchain.h +++ b/src/plugins/nim/project/nimtoolchain.h @@ -33,8 +33,8 @@ namespace Nim { class NimToolChain : public ProjectExplorer::ToolChain { public: - NimToolChain(Detection d); - NimToolChain(Core::Id typeId, Detection d); + NimToolChain(); + explicit NimToolChain(Core::Id typeId); QString typeDisplayName() const override; ProjectExplorer::Abi targetAbi() const override; @@ -47,25 +47,24 @@ public: BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const override; ProjectExplorer::HeaderPaths builtInHeaderPaths(const QStringList &flags, - const Utils::FileName &sysRoot) const final; + const Utils::FilePath &sysRoot) const final; void addToEnvironment(Utils::Environment &env) const final; - QString makeCommand(const Utils::Environment &env) const final; - Utils::FileName compilerCommand() const final; + Utils::FilePath makeCommand(const Utils::Environment &env) const final; + Utils::FilePath compilerCommand() const final; QString compilerVersion() const; - void setCompilerCommand(const Utils::FileName &compilerCommand); + void setCompilerCommand(const Utils::FilePath &compilerCommand); ProjectExplorer::IOutputParser *outputParser() const final; std::unique_ptr<ProjectExplorer::ToolChainConfigWidget> createConfigurationWidget() final; - ProjectExplorer::ToolChain *clone() const final; QVariantMap toMap() const final; bool fromMap(const QVariantMap &data) final; - static bool parseVersion(const Utils::FileName &path, std::tuple<int, int, int> &version); + static bool parseVersion(const Utils::FilePath &path, std::tuple<int, int, int> &version); private: NimToolChain(const NimToolChain &other); - Utils::FileName m_compilerCommand; + Utils::FilePath m_compilerCommand; std::tuple<int, int, int> m_version; }; diff --git a/src/plugins/nim/project/nimtoolchainfactory.cpp b/src/plugins/nim/project/nimtoolchainfactory.cpp index 0eaae567f6..5fc94c4926 100644 --- a/src/plugins/nim/project/nimtoolchainfactory.cpp +++ b/src/plugins/nim/project/nimtoolchainfactory.cpp @@ -43,39 +43,10 @@ namespace Nim { NimToolChainFactory::NimToolChainFactory() { setDisplayName(tr("Nim")); -} - -bool NimToolChainFactory::canCreate() -{ - return true; -} - -ToolChain *NimToolChainFactory::create(Core::Id l) -{ - if (l != Constants::C_NIMLANGUAGE_ID) - return nullptr; - auto result = new NimToolChain(ToolChain::ManualDetection); - result->setLanguage(l); - return result; -} - -bool NimToolChainFactory::canRestore(const QVariantMap &data) -{ - return typeIdFromMap(data) == Constants::C_NIMTOOLCHAIN_TYPEID; -} - -ToolChain *NimToolChainFactory::restore(const QVariantMap &data) -{ - auto tc = new NimToolChain(ToolChain::AutoDetection); - if (tc->fromMap(data)) - return tc; - delete tc; - return nullptr; -} - -QSet<Core::Id> NimToolChainFactory::supportedLanguages() const -{ - return {Constants::C_NIMLANGUAGE_ID}; + setSupportedToolChainType(Constants::C_NIMTOOLCHAIN_TYPEID); + setSupportedLanguages({Constants::C_NIMLANGUAGE_ID}); + setToolchainConstructor([] { return new NimToolChain; }); + setUserCreatable(true); } QList<ToolChain *> NimToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown) @@ -83,7 +54,7 @@ QList<ToolChain *> NimToolChainFactory::autoDetect(const QList<ToolChain *> &alr QList<ToolChain *> result; Environment systemEnvironment = Environment::systemEnvironment(); - const FileName compilerPath = systemEnvironment.searchInPath("nim"); + const FilePath compilerPath = systemEnvironment.searchInPath("nim"); if (compilerPath.isEmpty()) return result; @@ -95,17 +66,19 @@ QList<ToolChain *> NimToolChainFactory::autoDetect(const QList<ToolChain *> &alr if (!result.empty()) return result; - auto tc = new NimToolChain(ToolChain::AutoDetection); + auto tc = new NimToolChain; + tc->setDetection(ToolChain::AutoDetection); tc->setCompilerCommand(compilerPath); result.append(tc); return result; } -QList<ToolChain *> NimToolChainFactory::autoDetect(const FileName &compilerPath, const Core::Id &language) +QList<ToolChain *> NimToolChainFactory::autoDetect(const FilePath &compilerPath, const Core::Id &language) { QList<ToolChain *> result; if (language == Constants::C_NIMLANGUAGE_ID) { - auto tc = new NimToolChain(ToolChain::ManualDetection); + auto tc = new NimToolChain; + tc->setDetection(ToolChain::ManualDetection); // FIXME: sure? tc->setCompilerCommand(compilerPath); result.append(tc); } @@ -170,7 +143,7 @@ void NimToolChainConfigWidget::onCompilerCommandChanged(const QString &path) { auto tc = static_cast<NimToolChain *>(toolChain()); Q_ASSERT(tc); - tc->setCompilerCommand(FileName::fromString(path)); + tc->setCompilerCommand(FilePath::fromString(path)); fillUI(); } diff --git a/src/plugins/nim/project/nimtoolchainfactory.h b/src/plugins/nim/project/nimtoolchainfactory.h index 4ba0a028ad..70a49cbb37 100644 --- a/src/plugins/nim/project/nimtoolchainfactory.h +++ b/src/plugins/nim/project/nimtoolchainfactory.h @@ -41,13 +41,8 @@ class NimToolChainFactory : public ProjectExplorer::ToolChainFactory public: NimToolChainFactory(); - bool canCreate() final; - ProjectExplorer::ToolChain *create(Core::Id l) final; - bool canRestore(const QVariantMap &data) final; - ProjectExplorer::ToolChain *restore(const QVariantMap &data) final; - QSet<Core::Id> supportedLanguages() const final; QList<ProjectExplorer::ToolChain *> autoDetect(const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final; - QList<ProjectExplorer::ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final; + QList<ProjectExplorer::ToolChain *> autoDetect(const Utils::FilePath &compilerPath, const Core::Id &language) final; }; class NimToolChainConfigWidget : public ProjectExplorer::ToolChainConfigWidget diff --git a/src/plugins/nim/settings/nimtoolssettingspage.cpp b/src/plugins/nim/settings/nimtoolssettingspage.cpp index b658917395..05187f869b 100644 --- a/src/plugins/nim/settings/nimtoolssettingspage.cpp +++ b/src/plugins/nim/settings/nimtoolssettingspage.cpp @@ -32,9 +32,8 @@ namespace Nim { -NimToolsSettingsWidget::NimToolsSettingsWidget(NimSettings *settings, QWidget *parent) - : QWidget(parent) - , ui(new Ui::NimToolsSettingsWidget) +NimToolsSettingsWidget::NimToolsSettingsWidget(NimSettings *settings) + : ui(new Ui::NimToolsSettingsWidget) , m_settings(settings) { ui->setupUi(this); @@ -56,9 +55,8 @@ void NimToolsSettingsWidget::setCommand(const QString &filename) ui->pathWidget->setPath(filename); } -NimToolsSettingsPage::NimToolsSettingsPage(NimSettings *settings, QWidget *parent) - : Core::IOptionsPage(parent) - , m_settings(settings) +NimToolsSettingsPage::NimToolsSettingsPage(NimSettings *settings) + : m_settings(settings) { setId(Nim::Constants::C_NIMTOOLSSETTINGSPAGE_ID); setDisplayName(tr(Nim::Constants::C_NIMTOOLSSETTINGSPAGE_DISPLAY)); diff --git a/src/plugins/nim/settings/nimtoolssettingspage.h b/src/plugins/nim/settings/nimtoolssettingspage.h index 4a19ed00aa..e0de799960 100644 --- a/src/plugins/nim/settings/nimtoolssettingspage.h +++ b/src/plugins/nim/settings/nimtoolssettingspage.h @@ -43,7 +43,7 @@ class NimToolsSettingsWidget : public QWidget Q_OBJECT public: - explicit NimToolsSettingsWidget(NimSettings *settings, QWidget *parent = nullptr); + explicit NimToolsSettingsWidget(NimSettings *settings); ~NimToolsSettingsWidget(); @@ -60,7 +60,7 @@ class NimToolsSettingsPage : public Core::IOptionsPage Q_OBJECT public: - NimToolsSettingsPage(NimSettings *settings, QWidget *parent = nullptr); + NimToolsSettingsPage(NimSettings *settings); ~NimToolsSettingsPage(); diff --git a/src/plugins/nim/suggest/nimsuggestcache.cpp b/src/plugins/nim/suggest/nimsuggestcache.cpp index 6953883608..dafeffb39e 100644 --- a/src/plugins/nim/suggest/nimsuggestcache.cpp +++ b/src/plugins/nim/suggest/nimsuggestcache.cpp @@ -42,7 +42,7 @@ NimSuggestCache &NimSuggestCache::instance() NimSuggestCache::~NimSuggestCache() = default; -NimSuggest *NimSuggestCache::get(const Utils::FileName &filename) +NimSuggest *NimSuggestCache::get(const Utils::FilePath &filename) { auto it = m_nimSuggestInstances.find(filename); if (it == m_nimSuggestInstances.end()) { diff --git a/src/plugins/nim/suggest/nimsuggestcache.h b/src/plugins/nim/suggest/nimsuggestcache.h index c7b632e82e..cccd136b46 100644 --- a/src/plugins/nim/suggest/nimsuggestcache.h +++ b/src/plugins/nim/suggest/nimsuggestcache.h @@ -45,7 +45,7 @@ class NimSuggestCache : public QObject public: static NimSuggestCache &instance(); - NimSuggest *get(const Utils::FileName &filename); + NimSuggest *get(const Utils::FilePath &filename); QString executablePath() const; void setExecutablePath(const QString &path); @@ -57,7 +57,7 @@ private: void onEditorOpened(Core::IEditor *editor); void onEditorClosed(Core::IEditor *editor); - std::unordered_map<Utils::FileName, std::unique_ptr<Suggest::NimSuggest>> m_nimSuggestInstances; + std::unordered_map<Utils::FilePath, std::unique_ptr<Suggest::NimSuggest>> m_nimSuggestInstances; QString m_executablePath; }; diff --git a/src/plugins/nim/suggest/server.cpp b/src/plugins/nim/suggest/server.cpp index 862513f108..8e9b79b827 100644 --- a/src/plugins/nim/suggest/server.cpp +++ b/src/plugins/nim/suggest/server.cpp @@ -30,8 +30,8 @@ namespace Suggest { NimSuggestServer::NimSuggestServer(QObject *parent) : QObject(parent) { - connect(&m_process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)> - (&QProcess::finished), this, &NimSuggestServer::onFinished); + connect(&m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), + this, &NimSuggestServer::onFinished); connect(&m_process, &QProcess::started, this, &NimSuggestServer::onStarted); connect(&m_process, &QProcess::readyReadStandardOutput, this, &NimSuggestServer::onStandardOutputAvailable); @@ -69,8 +69,8 @@ bool NimSuggestServer::start(const QString &executablePath, void NimSuggestServer::kill() { - disconnect(&m_process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)> - (&QProcess::finished), this, &NimSuggestServer::onFinished); + disconnect(&m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), + this, &NimSuggestServer::onFinished); m_process.kill(); m_process.waitForFinished(); clearState(); |