CMakePM: Make configure step in Settings collapsible

This way the user interface is more consistent.

Change-Id: I93d029661d0e3955dc239e299dba2eda4f801149
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Cristian Adam
2022-07-21 18:09:29 +02:00
parent c1c917839d
commit 5e88db1227

View File

@@ -53,6 +53,7 @@
#include <projectexplorer/devicesupport/idevice.h> #include <projectexplorer/devicesupport/idevice.h>
#include <projectexplorer/kitinformation.h> #include <projectexplorer/kitinformation.h>
#include <projectexplorer/namedwidget.h> #include <projectexplorer/namedwidget.h>
#include <projectexplorer/processparameters.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
@@ -139,6 +140,8 @@ private:
void reconfigureWithInitialParameters(); void reconfigureWithInitialParameters();
void updateInitialCMakeArguments(); void updateInitialCMakeArguments();
void kitCMakeConfiguration(); void kitCMakeConfiguration();
void updateConfigureDetailsWidgetsSummary(
const QStringList &configurationArguments = QStringList());
CMakeBuildSystem *m_buildSystem; CMakeBuildSystem *m_buildSystem;
QTreeView *m_configView; QTreeView *m_configView;
@@ -157,6 +160,7 @@ private:
QTimer m_showProgressTimer; QTimer m_showProgressTimer;
FancyLineEdit *m_filterEdit; FancyLineEdit *m_filterEdit;
InfoLabel *m_warningMessageLabel; InfoLabel *m_warningMessageLabel;
DetailsWidget *m_configureDetailsWidget;
QPushButton *m_batchEditButton = nullptr; QPushButton *m_batchEditButton = nullptr;
QPushButton *m_kitConfiguration = nullptr; QPushButton *m_kitConfiguration = nullptr;
@@ -188,12 +192,14 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildSystem *bs) :
auto vbox = new QVBoxLayout(this); auto vbox = new QVBoxLayout(this);
vbox->setContentsMargins(0, 0, 0, 0); vbox->setContentsMargins(0, 0, 0, 0);
auto container = new DetailsWidget; m_configureDetailsWidget = new DetailsWidget;
container->setState(DetailsWidget::NoSummary);
vbox->addWidget(container);
auto details = new QWidget(container); updateConfigureDetailsWidgetsSummary();
container->setWidget(details);
vbox->addWidget(m_configureDetailsWidget);
auto details = new QWidget(m_configureDetailsWidget);
m_configureDetailsWidget->setWidget(details);
auto buildDirAspect = bc->buildDirectoryAspect(); auto buildDirAspect = bc->buildDirectoryAspect();
buildDirAspect->setAutoApplyOnEditingFinished(true); buildDirAspect->setAutoApplyOnEditingFinished(true);
@@ -674,6 +680,27 @@ void CMakeBuildSettingsWidget::kitCMakeConfiguration()
dialog->show(); dialog->show();
} }
void CMakeBuildSettingsWidget::updateConfigureDetailsWidgetsSummary(
const QStringList &configurationArguments)
{
ProjectExplorer::ProcessParameters params;
CommandLine cmd;
const CMakeTool *tool = CMakeKitAspect::cmakeTool(m_buildSystem->kit());
cmd.setExecutable(tool ? tool->cmakeExecutable() : "cmake");
const BuildConfiguration *bc = m_buildSystem->buildConfiguration();
const FilePath buildDirectory = bc ? bc->buildDirectory() : ".";
cmd.addArgs({"-S", m_buildSystem->projectDirectory().path()});
cmd.addArgs({"-B", buildDirectory.onDevice(cmd.executable()).path()});
cmd.addArgs(configurationArguments);
params.setCommandLine(cmd);
m_configureDetailsWidget->setSummaryText(params.summary(tr("Configure")));
m_configureDetailsWidget->setState(DetailsWidget::Expanded);
}
void CMakeBuildSettingsWidget::setError(const QString &message) void CMakeBuildSettingsWidget::setError(const QString &message)
{ {
m_buildSystem->buildConfiguration()->buildDirectoryAspect()->setProblem(message); m_buildSystem->buildConfiguration()->buildDirectoryAspect()->setProblem(message);
@@ -756,8 +783,10 @@ void CMakeBuildSettingsWidget::updateButtonState()
m_buildSystem->setConfigurationChanges(configChanges); m_buildSystem->setConfigurationChanges(configChanges);
// Update the tooltip with the changes // Update the tooltip with the changes
m_reconfigureButton->setToolTip( const QStringList configurationArguments = m_buildSystem->configurationChangesArguments(
m_buildSystem->configurationChangesArguments(isInitialConfiguration()).join('\n')); isInitialConfiguration());
m_reconfigureButton->setToolTip(configurationArguments.join('\n'));
updateConfigureDetailsWidgetsSummary(configurationArguments);
} }
void CMakeBuildSettingsWidget::updateAdvancedCheckBox() void CMakeBuildSettingsWidget::updateAdvancedCheckBox()