Browse Source

CMake GUI: Add --browse-manual argument

Kyle Edwards 5 years ago
parent
commit
ef03124237
3 changed files with 26 additions and 14 deletions
  1. 4 0
      Help/manual/cmake-gui.1.rst
  2. 6 1
      Source/QtDialog/CMakeSetup.cxx
  3. 16 13
      Source/QtDialog/CMakeSetupDialog.cxx

+ 4 - 0
Help/manual/cmake-gui.1.rst

@@ -11,6 +11,7 @@ Synopsis
  cmake-gui [<options>]
  cmake-gui [<options>] {<path-to-source> | <path-to-existing-build>}
  cmake-gui [<options>] -S <path-to-source> -B <path-to-build>
+ cmake-gui [<options>] --browse-manual
 
 Description
 ===========
@@ -40,6 +41,9 @@ Options
  Name of the preset to use from the project's
  :manual:`presets <cmake-presets(7)>` files, if it has them.
 
+``--browse-manual``
+ Open the CMake reference manual in a browser and immediately exit.
+
 .. include:: OPTIONS_HELP.txt
 
 See Also

+ 6 - 1
Source/QtDialog/CMakeSetup.cxx

@@ -32,7 +32,8 @@ static const char* cmDocumentationUsage[][2] = {
     "  cmake-gui [options]\n"
     "  cmake-gui [options] <path-to-source>\n"
     "  cmake-gui [options] <path-to-existing-build>\n"
-    "  cmake-gui [options] -S <path-to-source> -B <path-to-build>\n" },
+    "  cmake-gui [options] -S <path-to-source> -B <path-to-build>\n"
+    "  cmake-gui [options] --browse-manual\n" },
   { nullptr, nullptr }
 };
 
@@ -56,6 +57,7 @@ Q_IMPORT_PLUGIN(QWindowsVistaStylePlugin);
 
 int CMakeGUIExec(CMakeSetupDialog* window);
 void SetupDefaultQSettings();
+void OpenReferenceManual();
 
 int main(int argc, char** argv)
 {
@@ -193,6 +195,9 @@ int main(int argc, char** argv)
         return 1;
       }
       presetName = preset.toLocal8Bit().data();
+    } else if (arg == "--browse-manual") {
+      OpenReferenceManual();
+      return 0;
     }
   }
   if (!sourceDirectory.empty() &&

+ 16 - 13
Source/QtDialog/CMakeSetupDialog.cxx

@@ -43,6 +43,21 @@
 #include "RegexExplorer.h"
 #include "WarningMessagesDialog.h"
 
+void OpenReferenceManual()
+{
+  QString urlFormat("https://cmake.org/cmake/help/v%1.%2/");
+  QUrl url(urlFormat.arg(QString::number(cmVersion::GetMajorVersion()),
+                         QString::number(cmVersion::GetMinorVersion())));
+
+  if (!cmSystemTools::GetHTMLDoc().empty()) {
+    url = QUrl::fromLocalFile(
+      QDir(QString::fromLocal8Bit(cmSystemTools::GetHTMLDoc().data()))
+        .filePath("index.html"));
+  }
+
+  QDesktopServices::openUrl(url);
+}
+
 namespace {
 const QString PRESETS_DISABLED_TOOLTIP =
   "This option is disabled because there are no available presets in "
@@ -194,19 +209,7 @@ CMakeSetupDialog::CMakeSetupDialog()
   QObject::connect(a, &QAction::triggered, this, &CMakeSetupDialog::doHelp);
   a->setShortcut(QKeySequence::HelpContents);
   a = HelpMenu->addAction(tr("CMake Reference Manual"));
-  QObject::connect(a, &QAction::triggered, this, []() {
-    QString urlFormat("https://cmake.org/cmake/help/v%1.%2/");
-    QUrl url(urlFormat.arg(QString::number(cmVersion::GetMajorVersion()),
-                           QString::number(cmVersion::GetMinorVersion())));
-
-    if (!cmSystemTools::GetHTMLDoc().empty()) {
-      url = QUrl::fromLocalFile(
-        QDir(QString::fromLocal8Bit(cmSystemTools::GetHTMLDoc().data()))
-          .filePath("index.html"));
-    }
-
-    QDesktopServices::openUrl(url);
-  });
+  QObject::connect(a, &QAction::triggered, this, OpenReferenceManual);
   a = HelpMenu->addAction(tr("About"));
   QObject::connect(a, &QAction::triggered, this, &CMakeSetupDialog::doAbout);