summaryrefslogtreecommitdiff
path: root/Utilities/Sphinx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2014-06-13 15:27:59 +0200
committerStephen Kelly <steveire@gmail.com>2014-06-17 11:06:48 +0200
commitb5002631c0fedc5ae747fc0450fb4285f977b512 (patch)
tree710232526ffca5126b05a255843c5495cafa4a96 /Utilities/Sphinx
parent6b05e03de4353275d1e2e614150757397bd1f855 (diff)
downloadcmake-b5002631c0fedc5ae747fc0450fb4285f977b512.tar.gz
Help: Create proper identifiers for keywords in QtHelp.
This is necessary in order for the QHelpEngineCore::linksForIdentifier API to work. http://doc-snapshot.qt-project.org/qt5-5.3/qhelpenginecore.html#linksForIdentifier That API is used by QtCreator to enable contextual links to help files.
Diffstat (limited to 'Utilities/Sphinx')
-rw-r--r--Utilities/Sphinx/CMakeLists.txt5
-rwxr-xr-xUtilities/Sphinx/create_identifiers.py32
2 files changed, 37 insertions, 0 deletions
diff --git a/Utilities/Sphinx/CMakeLists.txt b/Utilities/Sphinx/CMakeLists.txt
index 951f7abb59..fd8cda90bc 100644
--- a/Utilities/Sphinx/CMakeLists.txt
+++ b/Utilities/Sphinx/CMakeLists.txt
@@ -88,6 +88,11 @@ if(SPHINX_QTHELP)
COMMAND ${CMAKE_COMMAND} "-DQTHELP_DIR=${CMAKE_CURRENT_BINARY_DIR}/qthelp/"
"-DCMake_VERSION=${CMake_VERSION_MAJOR}${CMake_VERSION_MINOR}${CMake_VERSION_PATCH}"
-P "${CMAKE_CURRENT_SOURCE_DIR}/fixup_qthelp_names.cmake"
+
+ # Create proper identifiers. Workaround for
+ # https://bitbucket.org/birkenfeld/sphinx/issue/1491/qthelp-should-generate-identifiers-for
+ COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/create_identifiers.py" "${CMAKE_CURRENT_BINARY_DIR}/qthelp/"
+
COMMAND qcollectiongenerator ${CMAKE_CURRENT_BINARY_DIR}/qthelp/CMake.qhcp
)
endif()
diff --git a/Utilities/Sphinx/create_identifiers.py b/Utilities/Sphinx/create_identifiers.py
new file mode 100755
index 0000000000..4db7a3f68a
--- /dev/null
+++ b/Utilities/Sphinx/create_identifiers.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+
+import sys, os
+
+if len(sys.argv) != 2:
+ sys.exit(-1)
+name = sys.argv[1] + "/CMake.qhp"
+
+f = open(name)
+
+if not f:
+ sys.exit(-1)
+
+lines = f.read().splitlines()
+
+if not lines:
+ sys.exit(-1)
+
+newlines = []
+
+for line in lines:
+ if "<keyword name=\"command\"" in line:
+ if not "id=\"" in line:
+ prefix = "<keyword name=\"command\" "
+ part1, part2 = line.split(prefix)
+ head, tail = part2.split("#command:")
+ cmdname, rest = tail.split("\"")
+ line = part1 + prefix + "id=\"command/" + cmdname + "\" " + part2
+ newlines.append(line + "\n")
+
+f = open(name, "w")
+f.writelines(newlines)