diff --git a/projectbuilders/cmakebuilder/cmakebuilderconfig.kcfg b/projectbuilders/cmakebuilder/cmakebuilderconfig.kcfg --- a/projectbuilders/cmakebuilder/cmakebuilderconfig.kcfg +++ b/projectbuilders/cmakebuilder/cmakebuilderconfig.kcfg @@ -5,6 +5,9 @@ http://www.kde.org/standards/kcfg/1.0/kcfg.xsd"> + + + Unix Makefiles diff --git a/projectbuilders/cmakebuilder/cmakebuilderpreferences.h b/projectbuilders/cmakebuilder/cmakebuilderpreferences.h --- a/projectbuilders/cmakebuilder/cmakebuilderpreferences.h +++ b/projectbuilders/cmakebuilder/cmakebuilderpreferences.h @@ -45,6 +45,7 @@ virtual void defaults() override; public slots: + void cmakeExeChanged(const QString& exe); void generatorChanged(const QString& generator); private: diff --git a/projectbuilders/cmakebuilder/cmakebuilderpreferences.cpp b/projectbuilders/cmakebuilder/cmakebuilderpreferences.cpp --- a/projectbuilders/cmakebuilder/cmakebuilderpreferences.cpp +++ b/projectbuilders/cmakebuilder/cmakebuilderpreferences.cpp @@ -27,6 +27,7 @@ #include "ui_cmakebuildersettings.h" #include "cmakebuilderconfig.h" +#include "cmakeutils.h" CMakeBuilderPreferences::CMakeBuilderPreferences(KDevelop::IPlugin* plugin, QWidget* parent) : KDevelop::ConfigPage(plugin, CMakeBuilderSettings::self(), parent) @@ -40,6 +41,9 @@ // Visual Studio solution is the standard generator under windows, but we dont want to use // the VS IDE, so we need nmake makefiles m_prefsUi->generator->addItem("NMake Makefiles"); + static_cast(CMakeBuilderSettings::self()->findItem("generator"))->setDefaultValue("NMake Makefiles"); + + m_prefsUi->cmakeExe->setFilter("*.exe"); #else m_prefsUi->generator->addItem("Unix Makefiles"); #endif @@ -47,6 +51,7 @@ if(hasNinja) m_prefsUi->generator->addItem("Ninja"); + connect(m_prefsUi->cmakeExe, &KUrlRequester::textChanged, this, &CMakeBuilderPreferences::cmakeExeChanged); connect(m_prefsUi->generator, static_cast(&QComboBox::currentIndexChanged), this, &CMakeBuilderPreferences::generatorChanged); } @@ -57,12 +62,14 @@ void CMakeBuilderPreferences::defaults() { + m_prefsUi->cmakeExe->setText(CMake::findExecutable()); m_prefsUi->generator->setCurrentIndex(0); KDevelop::ConfigPage::defaults(); } void CMakeBuilderPreferences::apply() { + CMakeBuilderSettings::setCmakeExe(m_prefsUi->cmakeExe->text()); CMakeBuilderSettings::setGenerator(m_prefsUi->generator->currentText()); KDevelop::ConfigPage::apply(); CMakeBuilderSettings::self()->save(); @@ -70,11 +77,19 @@ void CMakeBuilderPreferences::reset() { + m_prefsUi->cmakeExe->setText(CMakeBuilderSettings::self()->cmakeExe()); int idx = m_prefsUi->generator->findText(CMakeBuilderSettings::self()->generator()); m_prefsUi->generator->setCurrentIndex(idx); KDevelop::ConfigPage::reset(); } +void CMakeBuilderPreferences::cmakeExeChanged(const QString& exe) +{ + if (CMakeBuilderSettings::self()->cmakeExe() != exe) { + emit changed(); + } +} + void CMakeBuilderPreferences::generatorChanged(const QString& generator) { if (CMakeBuilderSettings::self()->generator() != generator) { diff --git a/projectbuilders/cmakebuilder/cmakebuildersettings.ui b/projectbuilders/cmakebuilder/cmakebuildersettings.ui --- a/projectbuilders/cmakebuilder/cmakebuildersettings.ui +++ b/projectbuilders/cmakebuilder/cmakebuildersettings.ui @@ -12,13 +12,30 @@ - + - Generator: + Default CMake executable: + + + + 0 + 0 + + + + + + + + Generator: + + + +