diff --git a/src/plugins/baremetal/iarewtoolchain.cpp b/src/plugins/baremetal/iarewtoolchain.cpp index a74f1798d89..d287ef9f4e5 100644 --- a/src/plugins/baremetal/iarewtoolchain.cpp +++ b/src/plugins/baremetal/iarewtoolchain.cpp @@ -402,6 +402,7 @@ IarToolChainFactory::IarToolChainFactory() setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID, ProjectExplorer::Constants::CXX_LANGUAGE_ID}); setToolchainConstructor([] { return new IarToolChain; }); + setUserCreatable(true); } QList IarToolChainFactory::autoDetect(const QList &alreadyKnown) @@ -460,11 +461,6 @@ QList IarToolChainFactory::autoDetect(const QList &alr return autoDetectToolchains(candidates, alreadyKnown); } -bool IarToolChainFactory::canCreate() -{ - return true; -} - QList IarToolChainFactory::autoDetectToolchains( const Candidates &candidates, const QList &alreadyKnown) const { diff --git a/src/plugins/baremetal/iarewtoolchain.h b/src/plugins/baremetal/iarewtoolchain.h index 569f012b43d..810bfbd0b3a 100644 --- a/src/plugins/baremetal/iarewtoolchain.h +++ b/src/plugins/baremetal/iarewtoolchain.h @@ -110,8 +110,6 @@ public: QList autoDetect( const QList &alreadyKnown) final; - bool canCreate() final; - private: QList autoDetectToolchains(const Candidates &candidates, const QList &alreadyKnown) const; diff --git a/src/plugins/baremetal/keiltoolchain.cpp b/src/plugins/baremetal/keiltoolchain.cpp index fbdd600281b..29375ac4401 100644 --- a/src/plugins/baremetal/keiltoolchain.cpp +++ b/src/plugins/baremetal/keiltoolchain.cpp @@ -407,6 +407,7 @@ KeilToolchainFactory::KeilToolchainFactory() setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID, ProjectExplorer::Constants::CXX_LANGUAGE_ID}); setToolchainConstructor([] { return new KeilToolchain; }); + setUserCreatable(true); } QList KeilToolchainFactory::autoDetect(const QList &alreadyKnown) @@ -459,11 +460,6 @@ QList KeilToolchainFactory::autoDetect(const QList &al return autoDetectToolchains(candidates, alreadyKnown); } -bool KeilToolchainFactory::canCreate() -{ - return true; -} - QList KeilToolchainFactory::autoDetectToolchains( const Candidates &candidates, const QList &alreadyKnown) const { diff --git a/src/plugins/baremetal/keiltoolchain.h b/src/plugins/baremetal/keiltoolchain.h index 95a968286ee..55c523f1d44 100644 --- a/src/plugins/baremetal/keiltoolchain.h +++ b/src/plugins/baremetal/keiltoolchain.h @@ -110,8 +110,6 @@ public: QList autoDetect( const QList &alreadyKnown) final; - bool canCreate() final; - private: QList autoDetectToolchains(const Candidates &candidates, const QList &alreadyKnown) const; diff --git a/src/plugins/baremetal/sdcctoolchain.cpp b/src/plugins/baremetal/sdcctoolchain.cpp index b95c218298f..dd29073284f 100644 --- a/src/plugins/baremetal/sdcctoolchain.cpp +++ b/src/plugins/baremetal/sdcctoolchain.cpp @@ -391,6 +391,7 @@ SdccToolChainFactory::SdccToolChainFactory() setSupportedToolChainType(Constants::SDCC_TOOLCHAIN_TYPEID); setSupportedLanguages({ProjectExplorer::Constants::C_LANGUAGE_ID}); setToolchainConstructor([] { return new SdccToolChain; }); + setUserCreatable(true); } QList SdccToolChainFactory::autoDetect(const QList &alreadyKnown) @@ -436,11 +437,6 @@ QList SdccToolChainFactory::autoDetect(const QList &al return autoDetectToolchains(candidates, alreadyKnown); } -bool SdccToolChainFactory::canCreate() -{ - return true; -} - QList SdccToolChainFactory::autoDetectToolchains( const Candidates &candidates, const QList &alreadyKnown) const { diff --git a/src/plugins/baremetal/sdcctoolchain.h b/src/plugins/baremetal/sdcctoolchain.h index 787470bf9d9..711207d209f 100644 --- a/src/plugins/baremetal/sdcctoolchain.h +++ b/src/plugins/baremetal/sdcctoolchain.h @@ -105,13 +105,11 @@ class SdccToolChainFactory final : public ProjectExplorer::ToolChainFactory Q_OBJECT public: - explicit SdccToolChainFactory(); + SdccToolChainFactory(); QList autoDetect( const QList &alreadyKnown) final; - bool canCreate() final; - private: QList autoDetectToolchains(const Candidates &candidates, const QList &alreadyKnown) const; diff --git a/src/plugins/nim/project/nimtoolchainfactory.cpp b/src/plugins/nim/project/nimtoolchainfactory.cpp index b59f83303b7..953ad569b14 100644 --- a/src/plugins/nim/project/nimtoolchainfactory.cpp +++ b/src/plugins/nim/project/nimtoolchainfactory.cpp @@ -46,11 +46,7 @@ NimToolChainFactory::NimToolChainFactory() setSupportedToolChainType(Constants::C_NIMTOOLCHAIN_TYPEID); setSupportedLanguages({Constants::C_NIMLANGUAGE_ID}); setToolchainConstructor([] { return new NimToolChain; }); -} - -bool NimToolChainFactory::canCreate() -{ - return true; + setUserCreatable(true); } QList NimToolChainFactory::autoDetect(const QList &alreadyKnown) diff --git a/src/plugins/nim/project/nimtoolchainfactory.h b/src/plugins/nim/project/nimtoolchainfactory.h index ab7a8584ec1..ed40bfeb624 100644 --- a/src/plugins/nim/project/nimtoolchainfactory.h +++ b/src/plugins/nim/project/nimtoolchainfactory.h @@ -41,8 +41,6 @@ class NimToolChainFactory : public ProjectExplorer::ToolChainFactory public: NimToolChainFactory(); - bool canCreate() final; - QList autoDetect(const QList &alreadyKnown) final; QList autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final; }; diff --git a/src/plugins/projectexplorer/customtoolchain.cpp b/src/plugins/projectexplorer/customtoolchain.cpp index a46702e38d0..199e1faca14 100644 --- a/src/plugins/projectexplorer/customtoolchain.cpp +++ b/src/plugins/projectexplorer/customtoolchain.cpp @@ -422,11 +422,7 @@ CustomToolChainFactory::CustomToolChainFactory() setSupportedToolChainType(Constants::CUSTOM_TOOLCHAIN_TYPEID); setSupportsAllLanguages(true); setToolchainConstructor([] { return new CustomToolChain; }); -} - -bool CustomToolChainFactory::canCreate() -{ - return true; + setUserCreatable(true); } // -------------------------------------------------------------------------- diff --git a/src/plugins/projectexplorer/customtoolchain.h b/src/plugins/projectexplorer/customtoolchain.h index 0fda88c5b15..ef403851a03 100644 --- a/src/plugins/projectexplorer/customtoolchain.h +++ b/src/plugins/projectexplorer/customtoolchain.h @@ -143,8 +143,6 @@ class CustomToolChainFactory : public ToolChainFactory public: CustomToolChainFactory(); - - bool canCreate() override; }; // -------------------------------------------------------------------------- diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index a49f79484a7..bfb179bdfad 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -878,11 +878,7 @@ GccToolChainFactory::GccToolChainFactory() setSupportedToolChainType(Constants::GCC_TOOLCHAIN_TYPEID); setSupportedLanguages({Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}); setToolchainConstructor([] { return new GccToolChain; }); -} - -bool GccToolChainFactory::canCreate() -{ - return true; + setUserCreatable(true); } QList GccToolChainFactory::autoDetect(const QList &alreadyKnown) diff --git a/src/plugins/projectexplorer/gcctoolchainfactories.h b/src/plugins/projectexplorer/gcctoolchainfactories.h index 1c917da0353..90d76ea7346 100644 --- a/src/plugins/projectexplorer/gcctoolchainfactories.h +++ b/src/plugins/projectexplorer/gcctoolchainfactories.h @@ -57,8 +57,6 @@ public: QList autoDetect(const QList &alreadyKnown) override; QList autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) override; - bool canCreate() override; - protected: enum class DetectVariants { Yes, No }; using ToolchainChecker = std::function; diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index fdd617d9d6a..ce40d4ea91f 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -1878,7 +1878,7 @@ ClangClToolChainFactory::ClangClToolChainFactory() setToolchainConstructor([] { return new ClangClToolChain; }); } -bool ClangClToolChainFactory::canCreate() +bool ClangClToolChainFactory::canCreate() const { return !g_availableMsvcToolchains.isEmpty(); } diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index bf3ecdbcece..03f7a2fc473 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -239,7 +239,7 @@ public: QList autoDetect(const QList &alreadyKnown) override; - bool canCreate() override; + bool canCreate() const override; ToolChain *create() override; }; diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index 47b33fe4daf..fd81769cb45 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -438,9 +438,9 @@ QList ToolChainFactory::autoDetect(const Utils::FileName &compilerP return QList(); } -bool ToolChainFactory::canCreate() +bool ToolChainFactory::canCreate() const { - return false; + return m_userCreatable; } ToolChain *ToolChainFactory::create() @@ -517,4 +517,9 @@ void ToolChainFactory::setToolchainConstructor m_toolchainConstructor = toolchainContructor; } +void ToolChainFactory::setUserCreatable(bool userCreatable) +{ + m_userCreatable = userCreatable; +} + } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h index d8ac0458fbb..e4eedcd980e 100644 --- a/src/plugins/projectexplorer/toolchain.h +++ b/src/plugins/projectexplorer/toolchain.h @@ -196,7 +196,7 @@ public: virtual QList autoDetect(const QList &alreadyKnown); virtual QList autoDetect(const Utils::FileName &compilerPath, const Core::Id &language); - virtual bool canCreate(); + virtual bool canCreate() const; virtual ToolChain *create(); virtual ToolChain *restore(const QVariantMap &data); @@ -207,6 +207,8 @@ public: QSet supportedLanguages() const; + void setUserCreatable(bool userCreatable); + protected: void setDisplayName(const QString &name) { m_displayName = name; } void setSupportedToolChainType(const Core::Id &supportedToolChainType); @@ -232,6 +234,7 @@ private: Core::Id m_supportedToolChainType; QSet m_supportedLanguages; bool m_supportsAllLanguages = false; + bool m_userCreatable = false; std::function m_toolchainConstructor; }; diff --git a/src/plugins/qnx/qnxtoolchain.cpp b/src/plugins/qnx/qnxtoolchain.cpp index 0adeec61362..d1880da40f4 100644 --- a/src/plugins/qnx/qnxtoolchain.cpp +++ b/src/plugins/qnx/qnxtoolchain.cpp @@ -209,6 +209,7 @@ QnxToolChainFactory::QnxToolChainFactory() setSupportedToolChainType(Constants::QNX_TOOLCHAIN_ID); setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID}); setToolchainConstructor([] { return new QnxToolChain; }); + setUserCreatable(true); } QList QnxToolChainFactory::autoDetect( @@ -222,11 +223,6 @@ QList QnxToolChainFactory::autoDetect( return tcs; } -bool QnxToolChainFactory::canCreate() -{ - return true; -} - //--------------------------------------------------------------------------------- // QnxToolChainConfigWidget //--------------------------------------------------------------------------------- diff --git a/src/plugins/qnx/qnxtoolchain.h b/src/plugins/qnx/qnxtoolchain.h index b63c883a11b..074c1ff6cd0 100644 --- a/src/plugins/qnx/qnxtoolchain.h +++ b/src/plugins/qnx/qnxtoolchain.h @@ -74,8 +74,6 @@ public: QList autoDetect( const QList &alreadyKnown) override; - - bool canCreate() override; }; //----------------------------------------------------------------------------