Browse Source

Merge topic 'cmake-gui-disable-presets'

d471406f0b CMake GUI: Disable preset fields instead of hiding them

Acked-by: Kitware Robot <[email protected]>
Acked-by: Brad King <[email protected]>
Merge-request: !5374
Craig Scott 5 years ago
parent
commit
b189834d05

+ 10 - 3
Source/QtDialog/CMakeSetupDialog.cxx

@@ -43,6 +43,12 @@
 #include "RegexExplorer.h"
 #include "WarningMessagesDialog.h"
 
+namespace {
+const QString PRESETS_DISABLED_TOOLTIP =
+  "This option is disabled because there are no available presets in "
+  "CMakePresets.json or CMakeUserPresets.json.";
+}
+
 QCMakeThread::QCMakeThread(QObject* p)
   : QThread(p)
 {
@@ -92,6 +98,7 @@ CMakeSetupDialog::CMakeSetupDialog()
   this->ProgressBar->reset();
   this->RemoveEntry->setEnabled(false);
   this->AddEntry->setEnabled(false);
+  this->Preset->setStatusTip(PRESETS_DISABLED_TOOLTIP);
 
   QByteArray p = settings.value("SplitterSizes").toByteArray();
   this->Splitter->restoreState(p);
@@ -696,8 +703,8 @@ void CMakeSetupDialog::updatePresets(const QVector<QCMakePreset>& presets)
     this->Preset->blockSignals(false);
   }
 
-  this->Preset->setHidden(presets.isEmpty());
-  this->PresetLabel->setHidden(presets.isEmpty());
+  this->Preset->setDisabled(presets.isEmpty());
+  this->Preset->setToolTip(presets.isEmpty() ? PRESETS_DISABLED_TOOLTIP : "");
 
   if (!this->DeferredPreset.isNull()) {
     this->Preset->setPresetName(this->DeferredPreset);
@@ -823,7 +830,7 @@ void CMakeSetupDialog::setEnabledState(bool enabled)
   this->CacheValues->cacheModel()->setEditEnabled(enabled);
   this->SourceDirectory->setEnabled(enabled);
   this->BrowseSourceDirectoryButton->setEnabled(enabled);
-  this->Preset->setEnabled(enabled);
+  this->Preset->setEnabled(enabled && !this->Preset->presets().isEmpty());
   this->BinaryDirectory->setEnabled(enabled);
   this->BrowseBinaryDirectoryButton->setEnabled(enabled);
   this->ReloadCacheAction->setEnabled(enabled);

+ 5 - 1
Source/QtDialog/CMakeSetupDialog.ui

@@ -68,7 +68,11 @@
       </widget>
      </item>
      <item row="1" column="1">
-      <widget class="QCMakePresetComboBox" name="Preset"/>
+      <widget class="QCMakePresetComboBox" name="Preset">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+      </widget>
      </item>
      <item row="2" column="0">
       <widget class="QLabel" name="BinaryLabel">

+ 9 - 18
Tests/CMakeGUI/CMakeGUITest.cxx

@@ -356,16 +356,14 @@ void CMakeGUITest::changingPresets()
   QCOMPARE(this->m_window->Preset->presetName(), QString{});
   QCOMPARE(this->m_window->Preset->presets().size(), 0);
   QCOMPARE(this->m_window->BinaryDirectory->currentText(), "");
-  QCOMPARE(this->m_window->Preset->isHidden(), true);
-  QCOMPARE(this->m_window->PresetLabel->isHidden(), true);
+  QCOMPARE(this->m_window->Preset->isEnabled(), false);
 
   writePresets("build1", { "preset" });
   loopSleep(1500);
   QCOMPARE(this->m_window->Preset->presetName(), QString{});
   QCOMPARE(this->m_window->Preset->presets().size(), 1);
   QCOMPARE(this->m_window->BinaryDirectory->currentText(), "");
-  QCOMPARE(this->m_window->Preset->isHidden(), false);
-  QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+  QCOMPARE(this->m_window->Preset->isEnabled(), true);
 
   this->m_window->Preset->setPresetName("preset");
   loopSleep();
@@ -373,8 +371,7 @@ void CMakeGUITest::changingPresets()
   QCOMPARE(this->m_window->Preset->presets().size(), 1);
   QCOMPARE(this->m_window->BinaryDirectory->currentText(),
            CMakeGUITest_BINARY_DIR "/changingPresets/src/build1/preset");
-  QCOMPARE(this->m_window->Preset->isHidden(), false);
-  QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+  QCOMPARE(this->m_window->Preset->isEnabled(), true);
 
   writePresets("build2", { "preset2", "preset" });
   loopSleep(1500);
@@ -382,8 +379,7 @@ void CMakeGUITest::changingPresets()
   QCOMPARE(this->m_window->Preset->presets().size(), 2);
   QCOMPARE(this->m_window->BinaryDirectory->currentText(),
            CMakeGUITest_BINARY_DIR "/changingPresets/src/build1/preset");
-  QCOMPARE(this->m_window->Preset->isHidden(), false);
-  QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+  QCOMPARE(this->m_window->Preset->isEnabled(), true);
 
   writePresets("build3", { "preset2" });
   loopSleep(1500);
@@ -391,8 +387,7 @@ void CMakeGUITest::changingPresets()
   QCOMPARE(this->m_window->Preset->presets().size(), 1);
   QCOMPARE(this->m_window->BinaryDirectory->currentText(),
            CMakeGUITest_BINARY_DIR "/changingPresets/src/build1/preset");
-  QCOMPARE(this->m_window->Preset->isHidden(), false);
-  QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+  QCOMPARE(this->m_window->Preset->isEnabled(), true);
 
   this->m_window->Preset->setPresetName("preset2");
   loopSleep();
@@ -400,8 +395,7 @@ void CMakeGUITest::changingPresets()
   QCOMPARE(this->m_window->Preset->presets().size(), 1);
   QCOMPARE(this->m_window->BinaryDirectory->currentText(),
            CMakeGUITest_BINARY_DIR "/changingPresets/src/build3/preset2");
-  QCOMPARE(this->m_window->Preset->isHidden(), false);
-  QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+  QCOMPARE(this->m_window->Preset->isEnabled(), true);
 
   QDir::root().mkpath(CMakeGUITest_BINARY_DIR "/changingPresets/src2");
   QFile::copy(CMakeGUITest_BINARY_DIR "/changingPresets/src/CMakePresets.json",
@@ -414,8 +408,7 @@ void CMakeGUITest::changingPresets()
   QCOMPARE(this->m_window->Preset->presets().size(), 1);
   QCOMPARE(this->m_window->BinaryDirectory->currentText(),
            CMakeGUITest_BINARY_DIR "/changingPresets/src/build3/preset2");
-  QCOMPARE(this->m_window->Preset->isHidden(), false);
-  QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+  QCOMPARE(this->m_window->Preset->isEnabled(), true);
 
   this->m_window->Preset->setPresetName("preset2");
   loopSleep();
@@ -423,8 +416,7 @@ void CMakeGUITest::changingPresets()
   QCOMPARE(this->m_window->Preset->presets().size(), 1);
   QCOMPARE(this->m_window->BinaryDirectory->currentText(),
            CMakeGUITest_BINARY_DIR "/changingPresets/src2/build3/preset2");
-  QCOMPARE(this->m_window->Preset->isHidden(), false);
-  QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+  QCOMPARE(this->m_window->Preset->isEnabled(), true);
 
   QFile(CMakeGUITest_BINARY_DIR "/changingPresets/src2/CMakePresets.json")
     .remove();
@@ -433,8 +425,7 @@ void CMakeGUITest::changingPresets()
   QCOMPARE(this->m_window->Preset->presets().size(), 0);
   QCOMPARE(this->m_window->BinaryDirectory->currentText(),
            CMakeGUITest_BINARY_DIR "/changingPresets/src2/build3/preset2");
-  QCOMPARE(this->m_window->Preset->isHidden(), true);
-  QCOMPARE(this->m_window->PresetLabel->isHidden(), true);
+  QCOMPARE(this->m_window->Preset->isEnabled(), false);
 }
 
 void SetupDefaultQSettings()