// Copyright (C) Filippo Cucchetto // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "nimrunconfiguration.h" #include "nimbuildconfiguration.h" #include "../nimconstants.h" #include "../nimtr.h" #include #include #include #include #include #include using namespace ProjectExplorer; using namespace Utils; namespace Nim { class NimRunConfiguration final : public RunConfiguration { public: NimRunConfiguration(Target *target, Utils::Id id) : RunConfiguration(target, id) { auto envAspect = addAspect(target); addAspect(target, ExecutableAspect::RunDevice); addAspect(macroExpander()); addAspect(macroExpander(), envAspect); addAspect(); setDisplayName(Tr::tr("Current Build Target")); setDefaultDisplayName(Tr::tr("Current Build Target")); setUpdater([this, target] { auto buildConfiguration = qobject_cast(target->activeBuildConfiguration()); QTC_ASSERT(buildConfiguration, return); const QFileInfo outFileInfo = buildConfiguration->outFilePath().toFileInfo(); aspect()->setExecutable(FilePath::fromString(outFileInfo.absoluteFilePath())); const QString workingDirectory = outFileInfo.absoluteDir().absolutePath(); aspect()->setDefaultWorkingDirectory(FilePath::fromString(workingDirectory)); }); // Connect target signals connect(target, &Target::buildSystemUpdated, this, &RunConfiguration::update); update(); } }; // NimRunConfigurationFactory NimRunConfigurationFactory::NimRunConfigurationFactory() : FixedRunConfigurationFactory(QString()) { registerRunConfiguration("Nim.NimRunConfiguration"); addSupportedProjectType(Constants::C_NIMPROJECT_ID); } } // Nim