File indexing completed on 2024-04-28 04:38:28
0001 /* 0002 SPDX-FileCopyrightText: 2014 Sergey Kalinichev <kalinichev.so.0@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef CUSTOMDEFINESANDINCLUDESMANAGER_H 0008 #define CUSTOMDEFINESANDINCLUDESMANAGER_H 0009 0010 #include <QVariantList> 0011 #include <QVector> 0012 #include <QScopedPointer> 0013 0014 #include <interfaces/iplugin.h> 0015 0016 #include "idefinesandincludesmanager.h" 0017 0018 #include "compilerprovider/settingsmanager.h" 0019 0020 class CompilerProvider; 0021 class NoProjectIncludePathsManager; 0022 0023 /// @brief: Class for retrieving custom defines and includes. 0024 class DefinesAndIncludesManager : public KDevelop::IPlugin, public KDevelop::IDefinesAndIncludesManager 0025 { 0026 Q_OBJECT 0027 Q_INTERFACES( KDevelop::IDefinesAndIncludesManager ) 0028 0029 public: 0030 explicit DefinesAndIncludesManager( QObject* parent, const QVariantList& args = QVariantList() ); 0031 ~DefinesAndIncludesManager() override; 0032 0033 ///@return list of all custom defines for @p item 0034 KDevelop::Defines defines( KDevelop::ProjectBaseItem* item, Type type ) const override; 0035 ///@return list of all custom includes for @p item 0036 KDevelop::Path::List includes( KDevelop::ProjectBaseItem* item, Type type ) const override; 0037 ///@return list of all custom framework directories for @p item 0038 KDevelop::Path::List frameworkDirectories( KDevelop::ProjectBaseItem* item, Type type ) const override; 0039 0040 KDevelop::Defines defines( const QString& path, Type type = All ) const override; 0041 KDevelop::Path::List includes( const QString& path, Type type = All ) const override; 0042 KDevelop::Path::List frameworkDirectories(const QString& path, Type type = All) const override; 0043 0044 void registerProvider( Provider* provider ) override; 0045 bool unregisterProvider( Provider* provider ) override; 0046 0047 KDevelop::Path::List includesInBackground( const QString& path ) const override; 0048 KDevelop::Path::List frameworkDirectoriesInBackground( const QString& path ) const override; 0049 KDevelop::Defines definesInBackground(const QString& path) const override; 0050 0051 void registerBackgroundProvider(BackgroundProvider* provider) override; 0052 bool unregisterBackgroundProvider(BackgroundProvider* provider) override; 0053 0054 QString parserArguments(KDevelop::ProjectBaseItem* item) const override; 0055 QString parserArguments(const QString& path) const override; 0056 QString parserArgumentsInBackground(const QString& path) const override; 0057 0058 void openConfigurationDialog( const QString& pathToFile ) override; 0059 int perProjectConfigPages() const override; 0060 KDevelop::ConfigPage* perProjectConfigPage(int number, const KDevelop::ProjectConfigOptions& options, 0061 QWidget* parent) override; 0062 0063 KDevelop::ConfigPage* configPage(int number, QWidget *parent) override; 0064 int configPages() const override; 0065 0066 private: 0067 QVector<Provider*> m_providers; 0068 QVector<BackgroundProvider*> m_backgroundProviders; 0069 SettingsManager* m_settings; 0070 QScopedPointer<NoProjectIncludePathsManager> m_noProjectIPM; 0071 KDevelop::Path::List m_defaultFrameworkDirectories; 0072 }; 0073 0074 #endif // CUSTOMDEFINESANDINCLUDESMANAGER_H