22
22
#include "projectpathswidget.h"
23
23
#include "customdefinesandincludes.h"
24
#include "definesandincludesmanager.h"
25
#include "../compilerprovider/icompilerprovider.h"
24
#include "../compilerprovider/compilerprovider.h"
27
26
#include <interfaces/iruncontroller.h>
28
27
#include <interfaces/iproject.h>
36
35
#include "kcm_customdefinesandincludes.h"
40
ICompilerProvider* compilerProvider()
42
auto compilerProvider = KDevelop::ICore::self()->pluginController()->pluginForExtension("org.kdevelop.ICompilerProvider");
43
if (!compilerProvider || !compilerProvider->extension<ICompilerProvider>()) {
47
return compilerProvider->extension<ICompilerProvider>();
51
37
K_PLUGIN_FACTORY(DefinesAndIncludesFactory, registerPlugin<DefinesAndIncludes>(); )
52
38
K_EXPORT_PLUGIN(DefinesAndIncludesFactory("kcm_kdevcustomdefinesandincludes", "kdevcustomdefinesandincludes"))
40
using namespace KDevelop;
54
42
DefinesAndIncludes::DefinesAndIncludes( QWidget* parent, const QVariantList& args )
55
43
: ProjectKCModule<CustomDefinesAndIncludes>( DefinesAndIncludesFactory::componentData(), parent, args )
75
63
void DefinesAndIncludes::loadFrom( KConfig* cfg )
77
65
configWidget->clear();
78
auto iadm = KDevelop::IDefinesAndIncludesManager::manager();
79
auto settings = static_cast<KDevelop::DefinesAndIncludesManager*>( iadm );
67
auto settings = SettingsManager::globalInstance();
80
68
configWidget->setPaths( settings->readPaths( cfg ) );
82
if (auto cp = compilerProvider()) {
83
configWidget->setCompilers(cp->compilers());
84
configWidget->setCurrentCompiler(cp->currentCompiler(project())->name());
70
auto provider = settings->provider();
71
configWidget->setCompilers(provider->compilers());
72
configWidget->setCurrentCompiler(provider->currentCompiler(project())->name());
88
75
void DefinesAndIncludes::saveTo(KConfig* cfg, KDevelop::IProject*)
90
auto iadm = KDevelop::IDefinesAndIncludesManager::manager();
91
auto settings = static_cast<KDevelop::DefinesAndIncludesManager*>( iadm );
77
auto settings = SettingsManager::globalInstance();
92
78
settings->writePaths( cfg, configWidget->paths() );
94
if (auto cp = compilerProvider()) {
95
settings->writeCurrentCompiler(cfg ,configWidget->currentCompiler());
97
cp->setCompiler(project(), settings->currentCompiler(cfg));
99
settings->writeUserDefinedCompilers(configWidget->compilers());
80
auto provider = settings->provider();
81
settings->writeCurrentCompiler(cfg, configWidget->currentCompiler());
82
provider->setCompiler(project(), settings->currentCompiler(cfg));
83
settings->writeUserDefinedCompilers(configWidget->compilers());
102
85
if ( settings->needToReparseCurrentProject( cfg ) ) {
103
using namespace KDevelop;
104
86
ICore::self()->projectController()->reparseProject(project(), true);
106
88
//TODO: BackgroundParser should check whether a document is currently opened and prioritize it then. The _focused_ one should be prioritized even further.