Git commit 67be64955649836cef148a7208c863ff98ae180b by Ralf Habacker. Committed on 09/01/2017 at 20:46. Pushed by habacker into branch 'master'.
Use standard KDE4/KF5 docbook support to create application welcome page. Application welcome page is now installed in apphelp subdir of umbrello doc installation path. M +1 -79 doc/CMakeLists.txt A +14 -0 doc/apphelp/CMakeLists.txt R +0 -0 doc/apphelp/index.docbook [from: doc/welcome.docbook - 100% similarity] M +32 -13 umbrello/umlappprivate.cpp M +2 -0 umbrello/umlappprivate.h https://commits.kde.org/umbrello/67be64955649836cef148a7208c863ff98ae180b diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index d20d0e705..b4d6a8578 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,77 +1,9 @@ if (NOT BUILD_KF5) set(KDOCTOOLS_CUSTOMIZATION_DIR "${KDE4_DATA_INSTALL_DIR}/ksgmltools2/customization") - if(DEFINED KDE4_MEINPROC_EXECUTABLE) - set(KDOCTOOLS_MEINPROC_EXECUTABLE ${KDE4_MEINPROC_EXECUTABLE}) - else() - set(KDOCTOOLS_MEINPROC_EXECUTABLE meinproc4) - endif() else() set(KDOCTOOLS_CUSTOMIZATION_DIR "${KDOCTOOLS_DATA_INSTALL_DIR}/kdoctools/customization") endif() -function(_kdoctools_create_target_name out in) - string(REGEX REPLACE "^${CMAKE_BINARY_DIR}/?" "" in "${in}") - string(REGEX REPLACE "[^0-9a-zA-Z]+" "-" tmp "${in}") - set(${out} ${tmp} PARENT_SCOPE) -endfunction() - -function (kdoctools_create_article docbook) - # Parse arguments - set(options) - set(oneValueArgs INSTALL_DESTINATION SUBDIR) - set(multiValueArgs) - cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - - if(NOT DEFINED ARGS_SUBDIR) - message(FATAL_ERROR "SUBDIR needs to be defined when calling kdoctools_create_article") - endif() - - # Init vars - get_filename_component(docbook ${docbook} ABSOLUTE) - file(RELATIVE_PATH src_doc ${CMAKE_CURRENT_SOURCE_DIR} ${docbook}) - get_filename_component(src_dir ${src_doc} DIRECTORY) - get_filename_component(_name ${docbook} NAME_WE) - set(build_dir ${CMAKE_CURRENT_BINARY_DIR}/${src_dir}) - set(build_html ${build_dir}/${_name}.html) - - # current directory is the docbook directory, but if this is empty, the - # globs which finds the docbooks and the images will be empty too as - # they will expand into "/*.docbook" and "/*.png" - if (src_dir STREQUAL "") - set(src_dir ".") - endif () - - # Create some place to store our files - file(MAKE_DIRECTORY ${build_dir}) - - #Bootstrap - if (_kdoctoolsBootStrapping) - set(_bootstrapOption "--srcdir=${KDocTools_BINARY_DIR}/src") - elseif (CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_NAME STREQUAL "Windows") - set(_bootstrapOption "--srcdir=${KDOCTOOLS_DATA_INSTALL_DIR}/kdoctools") - else () - set(_bootstrapOption) - endif () - set(_ssheet "${KDOCTOOLS_CUSTOMIZATION_DIR}/kde-chunk.xsl") - - add_custom_command(OUTPUT ${build_html} - COMMAND ${KDOCTOOLS_MEINPROC_EXECUTABLE} --check ${_bootstrapOption} -o ${build_html} ${src_doc} - DEPENDS ${src_doc} ${_ssheet} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) - - _kdoctools_create_target_name(_targ_html ${build_html}) - add_custom_target(${_targ_html} ALL DEPENDS ${build_html}) - - set(installDest "${ARGS_INSTALL_DESTINATION}") - if(installDest) - set(subdir "${ARGS_SUBDIR}") -# file(GLOB images ${src_dir}/*.png) -# install(FILES ${build_doc} ${src_docs} ${images} DESTINATION ${installDest}/${subdir}) - install(FILES ${build_html} DESTINATION ${installDest}/${subdir}) - endif() -endfunction() - ########### install files ############### if(BUILD_KF5) file(READ "index.docbook" index_file) @@ -79,18 +11,8 @@ if(BUILD_KF5) string(REPLACE "kdex.dtd" "kdedbx45.dtd" index_file "${index_file}") file(WRITE "index-kf5.docbook" "${index_file}") kdoctools_create_handbook(index-kf5.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR umbrello) - - file(READ "welcome.docbook" index_file) - string(REPLACE "4.2" "4.5" index_file "${index_file}") - string(REPLACE "kdex.dtd" "kdedbx45.dtd" index_file "${index_file}") - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/welcome.docbook "${index_file}") - if(WITH_WELCOME_PAGE) - kdoctools_create_article(${CMAKE_CURRENT_BINARY_DIR}/welcome.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR umbrello) - endif() else() kde4_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR umbrello) - if(WITH_WELCOME_PAGE) - kdoctools_create_article(welcome.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR umbrello) - endif() endif() +add_subdirectory(apphelp) diff --git a/doc/apphelp/CMakeLists.txt b/doc/apphelp/CMakeLists.txt new file mode 100644 index 000000000..c389ca919 --- /dev/null +++ b/doc/apphelp/CMakeLists.txt @@ -0,0 +1,14 @@ +########### install files ############### +if(BUILD_KF5) + file(READ "index.docbook" index_file) + string(REPLACE "4.2" "4.5" index_file "${index_file}") + string(REPLACE "kdex.dtd" "kdedbx45.dtd" index_file "${index_file}") + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/index.docbook "${index_file}") + if(WITH_WELCOME_PAGE) + kdoctools_create_handbook(${CMAKE_CURRENT_BINARY_DIR}/index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR umbrello/apphelp) + endif() +else() + if(WITH_WELCOME_PAGE) + kde4_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR umbrello/apphelp) + endif() +endif() diff --git a/doc/welcome.docbook b/doc/apphelp/index.docbook similarity index 100% rename from doc/welcome.docbook rename to doc/apphelp/index.docbook diff --git a/umbrello/umlappprivate.cpp b/umbrello/umlappprivate.cpp index cf8a9b5b9..64f051e4c 100644 --- a/umbrello/umlappprivate.cpp +++ b/umbrello/umlappprivate.cpp @@ -12,6 +12,8 @@ #include "debug_utils.h" +#include <KFilterDev> + /** * Find welcome.html file for displaying in the welcome window. * @@ -21,7 +23,7 @@ QString UMLAppPrivate::findWelcomeFile() { QStringList dirList; // from build dir - dirList.append(QCoreApplication::applicationDirPath() + QLatin1String("/../doc")); + dirList.append(QCoreApplication::applicationDirPath() + QLatin1String("/../doc/apphelp")); // determine path from installation #if QT_VERSION > 0x050000 @@ -34,30 +36,30 @@ QString UMLAppPrivate::findWelcomeFile() // from custom install foreach(const QString &lang, langList) { - dirList.append(QCoreApplication::applicationDirPath() + QString(QLatin1String("/../share/doc/HTML/%1/umbrello")).arg(lang)); + dirList.append(QCoreApplication::applicationDirPath() + QString(QLatin1String("/../share/doc/HTML/%1/umbrello/apphelp")).arg(lang)); } - dirList.append(QCoreApplication::applicationDirPath() + QLatin1String("/../share/doc/HTML/en/umbrello")); + dirList.append(QCoreApplication::applicationDirPath() + QLatin1String("/../share/doc/HTML/en/umbrello/apphelp")); QStringList locations = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); // from real installation foreach(const QString &location, locations) { foreach(const QString &lang, langList) { - dirList.append(QString(QLatin1String("%1/doc/HTML/%2/umbrello")).arg(location).arg(lang)); + dirList.append(QString(QLatin1String("%1/doc/HTML/%2/umbrello/apphelp")).arg(location).arg(lang)); } - dirList.append(QString(QLatin1String("%1/doc/HTML/en/umbrello")).arg(location)); + dirList.append(QString(QLatin1String("%1/doc/HTML/en/umbrello/apphelp")).arg(location)); } #else KLocale *local = KGlobal::locale(); QString lang = local->language(); // from custom install - dirList.append(QCoreApplication::applicationDirPath() + QString(QLatin1String("/../share/doc/HTML/%1/umbrello")).arg(lang)); - dirList.append(QCoreApplication::applicationDirPath() + QLatin1String("/../share/doc/HTML/en/umbrello")); + dirList.append(QCoreApplication::applicationDirPath() + QString(QLatin1String("/../share/doc/HTML/%1/umbrello/apphelp")).arg(lang)); + dirList.append(QCoreApplication::applicationDirPath() + QLatin1String("/../share/doc/HTML/en/umbrello/apphelp")); // /usr/share/doc/kde - dirList.append(KStandardDirs::installPath("html") + lang + QLatin1String("/umbrello")); + dirList.append(KStandardDirs::installPath("html") + lang + QLatin1String("/umbrello/apphelp")); #endif foreach(const QString &dir, dirList) { - QString filePath = dir + QLatin1String("/welcome.html"); + QString filePath = dir + QLatin1String("/index.cache.bz2"); QFileInfo fi(filePath); if (fi.exists()) { uDebug() << "searching for" << filePath << "found"; @@ -78,11 +80,28 @@ QString UMLAppPrivate::findWelcomeFile() */ QString UMLAppPrivate::readWelcomeFile(const QString &file) { - QFile f(file); - if (!f.open(QIODevice::ReadOnly)) + QString html; + if (file.endsWith(QLatin1String(".cache.bz2"))) { + QIODevice *d = KFilterDev::deviceForFile(file); + if (!d->open(QIODevice::ReadOnly)) { + uError() << "could not open archive " << file; + return QString(); + } + QByteArray data = d->readAll(); + html = QString::fromUtf8(data); + d->close(); + } else { + QFile f(file); + if (!f.open(QIODevice::ReadOnly)) + return QString(); + QTextStream in(&f); + html = in.readAll(); + } + + if (html.isEmpty()) { + uError() << "Empty welcome page loaded" << file; return QString(); - QTextStream in(&f); - QString html = in.readAll(); + } html.replace(QLatin1String("<FILENAME filename=\"index.html\">"),QLatin1String("")); html.replace(QLatin1String("</FILENAME>"),QLatin1String("")); diff --git a/umbrello/umlappprivate.h b/umbrello/umlappprivate.h index ed265b64f..9a9c8b61f 100644 --- a/umbrello/umlappprivate.h +++ b/umbrello/umlappprivate.h @@ -167,6 +167,8 @@ public slots: if (file.isEmpty()) return; QString html = readWelcomeFile(file); + if (html.isEmpty()) + return; // qDebug() << html; welcomeWindow = new QDockWidget(i18n("Welcome"), parent); welcomeWindow->setObjectName(QLatin1String("WelcomeDock"));
