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.
This commit is contained in:
Stephen Kelly 2014-06-13 15:27:59 +02:00
parent 6b05e03de4
commit b5002631c0
2 changed files with 37 additions and 0 deletions

View File

@ -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()

View File

@ -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)