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 <coreplugin/find/itemviewfind.h>
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include <projectexplorer/buildaspects.h>
|
||||
#include <projectexplorer/buildinfo.h>
|
||||
@@ -58,6 +59,7 @@
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/categorysortfiltermodel.h>
|
||||
#include <utils/checkablemessagebox.h>
|
||||
#include <utils/detailswidget.h>
|
||||
#include <utils/headerviewstretcher.h>
|
||||
#include <utils/infolabel.h>
|
||||
@@ -190,6 +192,36 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
||||
aspectWidgetBuilder.finishRow();
|
||||
initialCMakeAspect->addToLayout(aspectWidgetBuilder);
|
||||
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>();
|
||||
connect(buildTypeAspect, &BaseAspect::changed, this, [this, buildTypeAspect]() {
|
||||
if (!m_buildConfiguration->isMultiConfig()) {
|
||||
|
||||
Reference in New Issue
Block a user