forked from qt-creator/qt-creator
CMakePM: Add "Kit Configuration" button in Settings page
This "Kit Configuration" button opens a dialog with the kit's CMake settings. This way a user can change all CMake related settings in the project's Settings page. Change-Id: I76b6e69ea7a9b96823f6583aef007cf413410407 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -135,6 +135,7 @@ private:
|
|||||||
void batchEditConfiguration();
|
void batchEditConfiguration();
|
||||||
void reconfigureWithInitialParameters(CMakeBuildConfiguration *bc);
|
void reconfigureWithInitialParameters(CMakeBuildConfiguration *bc);
|
||||||
void updateInitialCMakeArguments();
|
void updateInitialCMakeArguments();
|
||||||
|
void kitCMakeConfiguration();
|
||||||
|
|
||||||
CMakeBuildConfiguration *m_buildConfiguration;
|
CMakeBuildConfiguration *m_buildConfiguration;
|
||||||
QTreeView *m_configView;
|
QTreeView *m_configView;
|
||||||
@@ -155,6 +156,7 @@ private:
|
|||||||
InfoLabel *m_warningMessageLabel;
|
InfoLabel *m_warningMessageLabel;
|
||||||
|
|
||||||
QPushButton *m_batchEditButton = nullptr;
|
QPushButton *m_batchEditButton = nullptr;
|
||||||
|
QPushButton *m_kitConfiguration = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
static QModelIndex mapToSource(const QAbstractItemView *view, const QModelIndex &idx)
|
static QModelIndex mapToSource(const QAbstractItemView *view, const QModelIndex &idx)
|
||||||
@@ -220,6 +222,11 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
|||||||
updateConfigurationStateIndex(index);
|
updateConfigurationStateIndex(index);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
m_kitConfiguration = new QPushButton(tr("Kit Configuration"));
|
||||||
|
m_kitConfiguration->setToolTip(tr("Edit the current kit's CMake configuration."));
|
||||||
|
m_kitConfiguration->setFixedWidth(m_kitConfiguration->sizeHint().width());
|
||||||
|
connect(m_kitConfiguration, &QPushButton::clicked, this, [this]() { kitCMakeConfiguration(); });
|
||||||
|
|
||||||
m_filterEdit = new FancyLineEdit;
|
m_filterEdit = new FancyLineEdit;
|
||||||
m_filterEdit->setPlaceholderText(tr("Filter"));
|
m_filterEdit->setPlaceholderText(tr("Filter"));
|
||||||
m_filterEdit->setFiltering(true);
|
m_filterEdit->setFiltering(true);
|
||||||
@@ -333,7 +340,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
|||||||
},
|
},
|
||||||
m_warningMessageLabel,
|
m_warningMessageLabel,
|
||||||
Space(10),
|
Space(10),
|
||||||
m_configurationStates,
|
Row{m_kitConfiguration, m_configurationStates},
|
||||||
Group {
|
Group {
|
||||||
cmakeConfiguration,
|
cmakeConfiguration,
|
||||||
Row {
|
Row {
|
||||||
@@ -603,6 +610,38 @@ void CMakeBuildSettingsWidget::updateInitialCMakeArguments()
|
|||||||
m_buildConfiguration->aspect<InitialCMakeArgumentsAspect>()->value()));
|
m_buildConfiguration->aspect<InitialCMakeArgumentsAspect>()->value()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CMakeBuildSettingsWidget::kitCMakeConfiguration()
|
||||||
|
{
|
||||||
|
m_buildConfiguration->kit()->blockNotification();
|
||||||
|
|
||||||
|
auto dialog = new QDialog(this);
|
||||||
|
dialog->setWindowTitle(tr("Kit CMake Configuration"));
|
||||||
|
dialog->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
dialog->setModal(true);
|
||||||
|
connect(dialog, &QDialog::finished, this, [=]{
|
||||||
|
m_buildConfiguration->kit()->unblockNotification();
|
||||||
|
});
|
||||||
|
|
||||||
|
CMakeKitAspect kitAspect;
|
||||||
|
CMakeGeneratorKitAspect generatorAspect;
|
||||||
|
CMakeConfigurationKitAspect configurationKitAspect;
|
||||||
|
|
||||||
|
auto layout = new QGridLayout(dialog);
|
||||||
|
|
||||||
|
kitAspect.createConfigWidget(m_buildConfiguration->kit())
|
||||||
|
->addToLayoutWithLabel(layout->parentWidget());
|
||||||
|
generatorAspect.createConfigWidget(m_buildConfiguration->kit())
|
||||||
|
->addToLayoutWithLabel(layout->parentWidget());
|
||||||
|
configurationKitAspect.createConfigWidget(m_buildConfiguration->kit())
|
||||||
|
->addToLayoutWithLabel(layout->parentWidget());
|
||||||
|
|
||||||
|
layout->setColumnStretch(1, 1);
|
||||||
|
|
||||||
|
dialog->setMinimumWidth(400);
|
||||||
|
dialog->resize(800, 1);
|
||||||
|
dialog->show();
|
||||||
|
}
|
||||||
|
|
||||||
void CMakeBuildSettingsWidget::setError(const QString &message)
|
void CMakeBuildSettingsWidget::setError(const QString &message)
|
||||||
{
|
{
|
||||||
m_buildConfiguration->buildDirectoryAspect()->setProblem(message);
|
m_buildConfiguration->buildDirectoryAspect()->setProblem(message);
|
||||||
|
Reference in New Issue
Block a user