diff options
Diffstat (limited to 'src/plugins/cmakeprojectmanager')
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp | 29 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakeprojectmanager.h | 10 |
2 files changed, 21 insertions, 18 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index fe0c2561d0..556a8d88dc 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -291,22 +291,23 @@ QString CMakeSettingsPage::findCmakeExecutable() const return Utils::Environment::systemEnvironment().searchInPath(QLatin1String("cmake")); } -QWidget *CMakeSettingsPage::createPage(QWidget *parent) +QWidget *CMakeSettingsPage::widget() { - QWidget *outerWidget = new QWidget(parent); - QFormLayout *formLayout = new QFormLayout(outerWidget); - formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); - m_pathchooser = new Utils::PathChooser; - m_pathchooser->setExpectedKind(Utils::PathChooser::ExistingCommand); - formLayout->addRow(tr("Executable:"), m_pathchooser); - formLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding)); + if (!m_widget) { + m_widget = new QWidget; + QFormLayout *formLayout = new QFormLayout(m_widget); + formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); + m_pathchooser = new Utils::PathChooser; + m_pathchooser->setExpectedKind(Utils::PathChooser::ExistingCommand); + formLayout->addRow(tr("Executable:"), m_pathchooser); + formLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding)); + + m_preferNinja = new QCheckBox(tr("Prefer Ninja generator (CMake 2.8.9 or higher required)")); + formLayout->addRow(m_preferNinja); + } m_pathchooser->setPath(m_cmakeValidatorForUser.cmakeExecutable()); - - m_preferNinja = new QCheckBox(tr("Prefer Ninja generator (CMake 2.8.9 or higher required)")); m_preferNinja->setChecked(preferNinja()); - formLayout->addRow(m_preferNinja); - - return outerWidget; + return m_widget; } void CMakeSettingsPage::saveSettings() const @@ -329,7 +330,7 @@ void CMakeSettingsPage::apply() void CMakeSettingsPage::finish() { - + delete m_widget; } QString CMakeSettingsPage::cmakeExecutable() const diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h index 55e4507147..f99ed968f2 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h @@ -40,12 +40,13 @@ #include <utils/environment.h> #include <utils/pathchooser.h> -#include <QFuture> -#include <QStringList> +#include <QAction> #include <QCheckBox> #include <QDir> +#include <QFuture> +#include <QPointer> +#include <QStringList> #include <QVector> -#include <QAction> #include "cmakevalidator.h" @@ -108,7 +109,7 @@ public: CMakeSettingsPage(); ~CMakeSettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); @@ -125,6 +126,7 @@ private: void saveSettings() const; QString findCmakeExecutable() const; + QPointer<QWidget> m_widget; Utils::PathChooser *m_pathchooser; QCheckBox *m_preferNinja; CMakeValidator m_cmakeValidatorForUser; |