File indexing completed on 2024-04-28 04:38:57

0001 /*
0002     SPDX-FileCopyrightText: 2006 Matt Rogers <mattr@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "makebuilderpreferences.h"
0008 
0009 #include "ui_makeconfig.h"
0010 #include "makebuilderconfig.h"
0011 
0012 using namespace KDevelop;
0013 
0014 MakeBuilderPreferences::MakeBuilderPreferences(IPlugin* plugin, const ProjectConfigOptions& options, QWidget* parent)
0015     : ProjectConfigPage<MakeBuilderSettings>(plugin, options, parent)
0016 {
0017     m_prefsUi = new Ui::MakeConfig;
0018     m_prefsUi->setupUi(this);
0019     connect(m_prefsUi->makeExecutable, &KUrlRequester::textChanged,
0020             this, &MakeBuilderPreferences::changed);
0021     connect(m_prefsUi->makeExecutable, &KUrlRequester::urlSelected,
0022             this, &MakeBuilderPreferences::changed);
0023     connect(m_prefsUi->configureEnvironment, &EnvironmentConfigureButton::environmentConfigured,
0024             this, &MakeBuilderPreferences::changed);
0025 
0026     m_prefsUi->configureEnvironment->setSelectionWidget( m_prefsUi->kcfg_environmentProfile );
0027 }
0028 
0029 void MakeBuilderPreferences::reset()
0030 {
0031     ProjectConfigPage::reset();
0032     QSignalBlocker sigBlock(this); // don't emit changed signal from m_prefsUi->makeExecutable
0033     m_prefsUi->makeExecutable->setText(MakeBuilderSettings::self()->makeExecutable());
0034 }
0035 
0036 void MakeBuilderPreferences::apply()
0037 {
0038     MakeBuilderSettings::self()->setMakeExecutable(m_prefsUi->makeExecutable->text());
0039     MakeBuilderSettings::self()->save(); // TODO: is this needed? KConfigDialogManager should end up calling it
0040     ProjectConfigPage::apply();
0041 }
0042 
0043 void MakeBuilderPreferences::defaults()
0044 {
0045     MakeBuilderSettings::self()->setDefaults();
0046     m_prefsUi->makeExecutable->setText(MakeBuilderSettings::self()->makeExecutable());
0047     ProjectConfigPage::defaults();
0048 }
0049 
0050 MakeBuilderPreferences::~MakeBuilderPreferences()
0051 {
0052     delete m_prefsUi;
0053 }
0054 
0055 QString MakeBuilderPreferences::standardMakeExecutable()
0056 {
0057 #ifdef Q_OS_WIN
0058     if (!QStandardPaths::findExecutable(QStringLiteral("make")).isEmpty())
0059         return QStringLiteral("make");
0060     if (!QStandardPaths::findExecutable(QStringLiteral("mingw32-make")).isEmpty())
0061         return QStringLiteral("mingw32-make");
0062     return QStringLiteral("nmake");
0063 #else
0064     return QStringLiteral("make");
0065 #endif
0066 }
0067 
0068 QString MakeBuilderPreferences::name() const
0069 {
0070     return i18nc("@title:tab", "Make");
0071 }
0072 
0073 QString MakeBuilderPreferences::fullName() const
0074 {
0075     return i18nc("@title:tab", "Configure Make Settings");
0076 }
0077 
0078 QIcon MakeBuilderPreferences::icon() const
0079 {
0080     return QIcon::fromTheme(QStringLiteral("run-build"));
0081 }
0082 
0083 #include "moc_makebuilderpreferences.cpp"