forked from qt-creator/qt-creator
CMakePM: Add "Re-configure with Initial Parameters" button
This makes it easier to configure a CMake project with initial cmake parameters when parameters are added or if the configuration fails. Task-number: QTCREATORBUG-24637 Change-Id: I880ac6ad82f7cc5e1df2e34e9bcc28e67c3d716e Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -40,6 +40,7 @@
|
|||||||
#include <ios/iosconstants.h>
|
#include <ios/iosconstants.h>
|
||||||
|
|
||||||
#include <coreplugin/find/itemviewfind.h>
|
#include <coreplugin/find/itemviewfind.h>
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <projectexplorer/buildaspects.h>
|
#include <projectexplorer/buildaspects.h>
|
||||||
#include <projectexplorer/buildinfo.h>
|
#include <projectexplorer/buildinfo.h>
|
||||||
@@ -58,6 +59,7 @@
|
|||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/categorysortfiltermodel.h>
|
#include <utils/categorysortfiltermodel.h>
|
||||||
|
#include <utils/checkablemessagebox.h>
|
||||||
#include <utils/detailswidget.h>
|
#include <utils/detailswidget.h>
|
||||||
#include <utils/headerviewstretcher.h>
|
#include <utils/headerviewstretcher.h>
|
||||||
#include <utils/infolabel.h>
|
#include <utils/infolabel.h>
|
||||||
@@ -190,6 +192,36 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
|||||||
aspectWidgetBuilder.finishRow();
|
aspectWidgetBuilder.finishRow();
|
||||||
initialCMakeAspect->addToLayout(aspectWidgetBuilder);
|
initialCMakeAspect->addToLayout(aspectWidgetBuilder);
|
||||||
aspectWidgetBuilder.finishRow();
|
aspectWidgetBuilder.finishRow();
|
||||||
|
auto clearCMakeConfiguration = new QPushButton(tr("Re-configure with Initial Parameters"));
|
||||||
|
connect(clearCMakeConfiguration, &QPushButton::clicked, this, [bc]() {
|
||||||
|
auto *settings = CMakeProjectPlugin::projectTypeSpecificSettings();
|
||||||
|
bool doNotAsk{!settings->askBeforeReConfigureInitialParams()};
|
||||||
|
if (!doNotAsk) {
|
||||||
|
QDialogButtonBox::StandardButton reply = Utils::CheckableMessageBox::question(
|
||||||
|
nullptr,
|
||||||
|
tr("Re-configure with Initial Parameters"),
|
||||||
|
tr("Clear CMake configuration and configure with initial parameters?"),
|
||||||
|
tr("Do not ask again"),
|
||||||
|
&doNotAsk,
|
||||||
|
QDialogButtonBox::Yes | QDialogButtonBox::No,
|
||||||
|
QDialogButtonBox::Yes);
|
||||||
|
|
||||||
|
settings->setAskBeforeReConfigureInitialParams(!doNotAsk);
|
||||||
|
settings->toSettings(Core::ICore::settings());
|
||||||
|
|
||||||
|
if (reply != QDialogButtonBox::Yes) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
auto cbc = static_cast<CMakeBuildSystem*>(bc->buildSystem());
|
||||||
|
cbc->clearCMakeCache();
|
||||||
|
if (ProjectExplorerPlugin::saveModifiedFiles())
|
||||||
|
cbc->runCMake();
|
||||||
|
});
|
||||||
|
aspectWidgetBuilder.addItem(LayoutBuilder::LayoutItem(new QLabel("")));
|
||||||
|
aspectWidgetBuilder.addItem(LayoutBuilder::LayoutItem(clearCMakeConfiguration));
|
||||||
|
aspectWidgetBuilder.finishRow();
|
||||||
auto buildTypeAspect = bc->aspect<BuildTypeAspect>();
|
auto buildTypeAspect = bc->aspect<BuildTypeAspect>();
|
||||||
connect(buildTypeAspect, &BaseAspect::changed, this, [this, buildTypeAspect]() {
|
connect(buildTypeAspect, &BaseAspect::changed, this, [this, buildTypeAspect]() {
|
||||||
if (!m_buildConfiguration->isMultiConfig()) {
|
if (!m_buildConfiguration->isMultiConfig()) {
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ static const char SETTINGS_KEY[] = "CMakeSpecificSettings";
|
|||||||
static const char AFTER_ADD_FILE_ACTION_KEY[] = "ProjectPopupSetting";
|
static const char AFTER_ADD_FILE_ACTION_KEY[] = "ProjectPopupSetting";
|
||||||
static const char NINJA_PATH[] = "NinjaPath";
|
static const char NINJA_PATH[] = "NinjaPath";
|
||||||
static const char PACKAGE_MANAGER_AUTO_SETUP[] = "PackageManagerAutoSetup";
|
static const char PACKAGE_MANAGER_AUTO_SETUP[] = "PackageManagerAutoSetup";
|
||||||
|
static const char ASK_RECONFIGURE_INITIAL_PARAMS[] = "AskReConfigureInitialParams";
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeSpecificSettings::fromSettings(QSettings *settings)
|
void CMakeSpecificSettings::fromSettings(QSettings *settings)
|
||||||
@@ -53,6 +54,7 @@ void CMakeSpecificSettings::toSettings(QSettings *settings) const
|
|||||||
settings->beginGroup(QString(SETTINGS_KEY));
|
settings->beginGroup(QString(SETTINGS_KEY));
|
||||||
settings->setValue(QString(AFTER_ADD_FILE_ACTION_KEY), static_cast<int>(m_afterAddFileToProjectSetting));
|
settings->setValue(QString(AFTER_ADD_FILE_ACTION_KEY), static_cast<int>(m_afterAddFileToProjectSetting));
|
||||||
settings->setValue(QString(PACKAGE_MANAGER_AUTO_SETUP), m_packageManagerAutoSetup);
|
settings->setValue(QString(PACKAGE_MANAGER_AUTO_SETUP), m_packageManagerAutoSetup);
|
||||||
|
settings->setValue(QString(ASK_RECONFIGURE_INITIAL_PARAMS), m_askBeforeReConfigureInitialParams);
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,10 +53,13 @@ public:
|
|||||||
void setPackageManagerAutoSetup(bool checked) { m_packageManagerAutoSetup = checked; }
|
void setPackageManagerAutoSetup(bool checked) { m_packageManagerAutoSetup = checked; }
|
||||||
bool packageManagerAutoSetup() const { return m_packageManagerAutoSetup; }
|
bool packageManagerAutoSetup() const { return m_packageManagerAutoSetup; }
|
||||||
|
|
||||||
|
bool askBeforeReConfigureInitialParams() const { return m_askBeforeReConfigureInitialParams; }
|
||||||
|
void setAskBeforeReConfigureInitialParams(bool doAsk) { m_askBeforeReConfigureInitialParams = doAsk; }
|
||||||
private:
|
private:
|
||||||
AfterAddFileAction m_afterAddFileToProjectSetting;
|
AfterAddFileAction m_afterAddFileToProjectSetting;
|
||||||
Utils::FilePath m_ninjaPath;
|
Utils::FilePath m_ninjaPath;
|
||||||
bool m_packageManagerAutoSetup = true;
|
bool m_packageManagerAutoSetup = true;
|
||||||
|
bool m_askBeforeReConfigureInitialParams = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ CMakeSpecificSettingWidget::CMakeSpecificSettingWidget(CMakeSpecificSettings *se
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_ui.packageManagerAutoSetup->setChecked(settings->packageManagerAutoSetup());
|
m_ui.packageManagerAutoSetup->setChecked(settings->packageManagerAutoSetup());
|
||||||
|
m_ui.askBeforeReConfigureWithInitialParams->setChecked(settings->askBeforeReConfigureInitialParams());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeSpecificSettingWidget::apply()
|
void CMakeSpecificSettingWidget::apply()
|
||||||
@@ -80,6 +81,7 @@ void CMakeSpecificSettingWidget::apply()
|
|||||||
m_settings->setAfterAddFileSetting(popupSetting == -1 ? AfterAddFileAction::ASK_USER
|
m_settings->setAfterAddFileSetting(popupSetting == -1 ? AfterAddFileAction::ASK_USER
|
||||||
: static_cast<AfterAddFileAction>(popupSetting));
|
: static_cast<AfterAddFileAction>(popupSetting));
|
||||||
m_settings->setPackageManagerAutoSetup(m_ui.packageManagerAutoSetup->isChecked());
|
m_settings->setPackageManagerAutoSetup(m_ui.packageManagerAutoSetup->isChecked());
|
||||||
|
m_settings->setAskBeforeReConfigureInitialParams(m_ui.askBeforeReConfigureWithInitialParams->isChecked());
|
||||||
m_settings->toSettings(Core::ICore::settings());
|
m_settings->toSettings(Core::ICore::settings());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="askBeforeReConfigureWithInitialParams">
|
||||||
|
<property name="text">
|
||||||
|
<string>Ask before re-configuring with initial parameters</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|||||||
Reference in New Issue
Block a user