summaryrefslogtreecommitdiffstats
path: root/src/tools/qdoc/helpprojectwriter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* qdoc: Ensure .qhp file is generated for all modulesTopi Reinio2015-01-221-1/+9
| | | | | | | | | | | | | | | When run in single-exec mode, QDoc constructs only one instance of HelpProjectWriter, even though it generates documentation for multiple modules in one go. This change adds a reset() function for the help project writer, allowing new parameters to be passed to the existing writer instance, thus ensuring that all .qhp files are correctly generated. Task-number: QTBUG-43815 Change-Id: I1d1c9f713eb5f574a6f8e56616cf5f61bb3e8ff8 Reviewed-by: Martin Smith <martin.smith@digia.com>
* qdoc: Fix generation of qhp sections for unsorted pagesTopi Reinio2014-10-081-1/+7
| | | | | | | | | | | | | | | | | | | | | | If you had the following lines in .qdocconf: qhp.QtFoo.subprojects.examples.title = Examples qhp.QtFoo.subprojects.examples.indexTitle = Qt Foo Examples qhp.QtFoo.subprojects.examples.selectors = fake:example The expected outcome is to see an unsorted list of examples. This didn't work however, because QDoc assumed to find a chain of \nextpage links for the indexTitle, and these are rarely used in Qt documentation nowadays. This commit ensures that all pages matching the defined selectors will be listed under the section title, even when the sortPages flag is not set. Task-number: QTBUG-41737 Change-Id: I1e7e2a2953de949c9b52763165c406a64d1d46f7 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Update license headers and add new license filesMatti Paaso2014-09-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* qdoc: Resolve .qhp table of contents sections correctlyTopi Reinio2014-09-101-5/+14
| | | | | | | | | | | | | | | | | | | | | With the recent changes in QDoc, we can no longer assume that pages listed in the TOC are of type DocNode. For example, all Qt modules want to list C++/QML type index pages in the TOC, and those are now of type CollectionNode. This change fixes the issue by using a more generic search function when generating the .qhp TOC, one that doesn't restrict the results to any specific node type. As an exception, the main index page for a project must still be a DocNode, i.e. a page declared using the \page command. However, we do want to restrict the search to the pages in this documentation module only - for that purpose, a function for setting a local search order is introduced. Task-number: QTBUG-40241 Change-Id: Ibaa5af9c5de6436f34b7ae67e56733817fc090b9 Reviewed-by: Martin Smith <martin.smith@digia.com>
* qdoc: Write all generated files to .qhpTopi Reinio2014-08-261-33/+12
| | | | | | | | | | | | | | | | | | | | | When writing the Qt Help Project XML file, QDoc traverses the documentation nodes recursively, adding html filenames for each node to the XML. The logic that QDoc uses for this process is not perfect, and needs to be kept up to date whenever the internal structure of the node tree changes. This often leads to problems where some pages are generated but not added to the .qhp, resulting in missing pages in the offline documentation. This change fixes this problem by having the generator keep track of the created filenames, and passing that to the help project writer. Task-number: QTBUG-40572 Change-Id: Ife60a30724183a2b6dcd2397ea79bfbdc2addd04 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Remove all collision node stuff from qdocMartin Smith2014-08-221-2/+1
| | | | | | | | | | | | Now that the qdoc link command has ability to tell qdoc which module contains a link target or whether to link to a QML or CPP entity, collision pages should no longer be necessary. In fact, qdoc hasn't been generating any collisions for some time. This task removes all the collision node code from qdoc. Task-number: QTBUG-40506 Change-Id: I34d1980ca1c0fe4bb5ad27dd4b00e61fa7e6e335 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* qdoc: Give documenter more control of linkingMartin Smith2014-06-011-23/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | This update is preparation for implementing the actual task described in the bug. To implement it required converting the QML type node and the QML basic type node to be first order tree nodes instead of subtypes of the documentation node. This cleans up a lot of messy logic in some places. It was also necessary to split the getLink() function in the html output generator into two functions, one still called getLink(), which handles the \l command, and one called qetAutoLink() which is called for generating auto links. This should make qdoc run faster. The basic infrastructure was also added for parsing the string in the square brackets for the \l command. There will be a further update to complete this task. Note that some autolinks might not be generated due to this change. I haven't seen any yet, but I believe there will be some. This can be fixed later, if it is a problem. Task-number: QTBUG-39221 Change-Id: I8135229984398408205ba901b9ef95ceac74683c Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* qdoc: Teach qdoc to use multiple trees (part 3)Martin Smith2014-03-311-2/+42
| | | | | | | | | | | | | | | | | | With this update, qdoc is now ready for testing with multiple trees. In making this change to using multiple trees, it has become clear that qdoc does not really need trees the way it currently uses them. Each C++ class or namespace, or QML type is naturally a tree tree structure, but above that level, what we currently call a tree in qdoc should really be called a collection of maps. This change has moved qdoc in that direction. It remains to replace the Tree class with a class that encapsulates a set of maps, one for each major node type. That can be implemented later. Task-number: QTBUG-35377 Change-Id: I39068a0cb26c01f14ec0e4621742d727efb913bf Reviewed-by: Martin Smith <martin.smith@digia.com>
* qdoc: Teach qdoc to use multiple trees (part 2)Martin Smith2014-03-311-1/+1
| | | | | | | | | | | | | | | | | | | qdoc now knows how to search the forrest of node trees in an optimal order. But there remain some problems with specific searches that cross module boundaries. These include group membership and C++ and QML module membership, as well ass C++ base class resolution. Part 3 will be concerned with fixing these remaining bugs. With this update, qdoc now takes less time to generate the docs for Qt 5. Testing indicates that qdoc run time has dropped from about 14 minutes to about 7.5 minutes on an iMac. Task-number: QTBUG-35377 Change-Id: I6bded6ef54124b4f6e5914cad4548f0b600209b0 Reviewed-by: Martin Smith <martin.smith@digia.com>
* qdoc: Teach qdoc to use multiple treesMartin Smith2014-03-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | qdoc now builds a separate Node Tree for each index file it parsed. The main Node Tree now contains only the Nodes of things being documented in the current module. This should make qdoc run a little faster. qdoc now uses these separate trees to make intra-module and inter-module linking more robust by searching the trees in an order that depends on the type of link it is searching for. The tree for the current module is always searched first. Then qdoc searches the trees for either the C++ modules or the QML modules, depending on whether it is looking for a C++ link or a QML link. In preparation for this update, qdoc was also simplified a lot. Many functions became obsolete and were removed. Others were combined. Task-number: QTBUG-35377 Change-Id: Iea4e49869ff6a6ff0f4d53090728770d40d892f3 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* qdoc: Never use a collision page as a main QCH landing pagev5.2.1Topi Reinio2014-01-291-1/+2
| | | | | | | | | | When writing the main/landing page for a documentation set to a .qhp file, check that it's not a collision page. If it is, default to 'index.html' instead. Task-number: QTCREATORBUG-11035 Change-Id: I0269834f6e50fcf5ae779c026263e69e4c3cd7b6 Reviewed-by: Martin Smith <martin.smith@digia.com>
* qdoc: Restore support for output in one directoryMartin Smith2013-08-081-16/+18
| | | | | | | | | | | | | | | | | | | | | | The basic functionality is working. Add these lines to qt-html-templates-offline.qdocconf, or add them to the online version: HTML.nosubdirs = "true" HTML.outputsubdir = "html" Before it opens a .html file for writing, it tests whether the file alread exists. If so, it writes an error message, e.g.: ...platform-notes.qdoc:140: error: HTML file already exists; overwriting .../doc/html/platform-notes-windows.html There are currently nearly 100 files being overwritten for Qt5. Task-number: QTBUG-32580 Change-Id: I02b103fd00b9d1e624665ac518d571acc791be9d Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Ensure obsolete members file is writtenMartin Smith2013-07-311-0/+7
| | | | | | | | | | | In the case where the only obsolete members of a class were actually non-members but just related functions, the help file writer didn't include a reference to the obsolete members file. This update fixes that bug. Task-number: QTBUG-31379 Change-Id: I065da649bc12e3dcc81244939be0162599d54be9 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Don't try to output from index nodesMartin Smith2013-07-251-0/+5
| | | | | | | | | | | | When qdoc traverses its internal node tree to generate either the html docs or the help file, it no longer traverses nodes that were added to the tree as the result of reading an index file. Task-number: QTBUG-32622 Change-Id: Iac63ac2ce177b15b85a2aa73850c45891cbbc624 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* qdoc: Implement better handling of QML property groupsMartin Smith2013-07-111-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The \qmlpropertygroup command is added, and qdoc is taught to generate better output for it. The format is, e.g.: \qmlpropertygroup QtQuick2::Item::anchors \qmlproperty AnchorLine QtQuick2::Item::anchors.top \qmlproperty AnchorLine QtQuick2::Item::anchors.bottom \qmlproperty AnchorLine QtQuick2::Item::anchors.left \qmlproperty AnchorLine QtQuick2::Item::anchors.right \qmlproperty AnchorLine QtQuick2::Item::anchors.horizontalCenter \qmlproperty AnchorLine QtQuick2::Item::anchors.verticalCenter \qmlproperty AnchorLine QtQuick2::Item::anchors.baseline \qmlproperty Item QtQuick2::Item::anchors.fill \qmlproperty Item QtQuick2::Item::anchors.centerIn \qmlproperty real QtQuick2::Item::anchors.margins \qmlproperty real QtQuick2::Item::anchors.topMargin \qmlproperty real QtQuick2::Item::anchors.bottomMargin \qmlproperty real QtQuick2::Item::anchors.leftMargin \qmlproperty real QtQuick2::Item::anchors.rightMargin \qmlproperty real QtQuick2::Item::anchors.horizontalCenterOffset \qmlproperty real QtQuick2::Item::anchors.verticalCenterOffset \qmlproperty real QtQuick2::Item::anchors.baselineOffset \qmlproperty bool QtQuick2::Item::anchors.alignWhenCentered Task-number: QTBUG-32341 Change-Id: I4b06a3a061b23680e663e8d4e82ac9863ffd4ecb Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Don't try to add html files for images in .qhpTopi Reinio2013-05-101-0/+1
| | | | | | | | | | | | | | | QDoc adds document nodes as files into the .qhp, including nodes with image subtype. This will generate a lot of unnecessary warnings for missing '<image>.png.html' files from qhelpgenerator when running 'make docs'. This change makes qdoc skip the above step for image nodes to remove the warnings. The images are still always added to .qch in a separate step. Change-Id: Ib07fc8a3ce65f5d4dd700daf00f5f6a36f74a696 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Doc: Make QDoc/HelpProjectWriter always add member pages to .qch filesTopi Reinio2013-02-081-68/+72
| | | | | | | | | | | | | | | | | This change refactors the code for inserting compatibility and obsolete member pages into a qhp file, detaching it as a new function and calling it when processing each node. This ensures that members page, compatibility and obsolete pages (html files) are added to .QCH files for all processed nodes that have children or related nodes. Also renames a variable ('node'->'nodeChildren') to prevent shadowing. Task-number: QTBUG-29314 Change-Id: Iccee70ba8768d48b24e68b08651043d0ce4a62a5 Reviewed-by: Martin Smith <martin.smith@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Help generator: Add a global config for "extraFiles".Jerome Pasion2012-11-071-0/+1
| | | | | | | | There should be a way to include files across projects regardless of their project configuration. Change-Id: I61797fad594c425a30a54b73539ae670e9545cb9 Reviewed-by: Martin Smith <martin.smith@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* make src/tools/ compile without CamelCase headersOswald Buddenhagen2012-09-191-4/+4
| | | | | | | | so the build works with syncqt -minimal Change-Id: Ief5e8eb9a504dd6c84cff76cc3e5257450386a0f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* qdoc: Refactoring of qdoc data structuresMartin Smith2012-09-141-12/+19
| | | | | | | | | | | | | | | | | | This commit is the beginning of a significant overhaul of qdoc. A new class, QDocDatabase, is added, which will eventually encapsulate all the data structures used by qdoc. In this commit, the Tree class is made private and only accessible from QDocDatabase. Several maps structures are also moved into QDocDatabase from other classes. Much dead code and unused parameters were removed. Further simplification will follow. Change-Id: I237411c50f3ced0d2fc8d3b0fbfdf4e55880f8e9 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Jerome Pasion <jerome.pasion@nokia.com>
* QDoc: Write SHA1 of .qhp to file.Casper van Donderen2012-08-311-1/+16
| | | | | | | | | QDoc should generate a SHA1 hash of the .qhp file to be able to use that file as a search index. The idea is that we can use the hash as an identifier to check if the search index was updated. Change-Id: Ifd19571bcebf7d735ef452dca6c046a14fedc0e2 Reviewed-by: Martin Smith <martin.smith@nokia.com>
* doc: Replaced FakeNode with DocNodeMartin Smith2012-08-211-37/+37
| | | | | | | | | | | | | | | | | | The name FakeNode was a bad choice. It was used to represent something that wasn't derived from a C++ declaration in a .h file. Any generic page or QML item or any special kind of qdoc construct was stored in a FakeNode. The name was unfortunate because the constructs stored in FakeNodes were just as real as C++ constructs. So FakeNode has been renamed to DocNode, which just refers to a documentation node. The node type Fake has been replaced with node type Document. Change-Id: Ida9de8288b7b8915bf9273fd890ca84aaf05e182 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* QDoc: Introduce a setting to include index nodes in QHP.Casper van Donderen2012-07-251-1/+2
| | | | | Change-Id: I5d35961241300f509b8a9d8e3cf980fabc10cfab Reviewed-by: Martin Smith <martin.smith@nokia.com>
* qdoc: Fixed incorrect href attribute values in qdocMartin Smith2012-07-251-35/+21
| | | | | | | | | | | | There were two fileBase() functions, but only one was correct. The wrong one was being called in some cases. Now there is only one fileBase() function, which is always called. Task nr: QTBUG-26591 Change-Id: I2c40e2152a8c7ad1bb9db256ecf1367148f0e7f6 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* Make qdoc compile with QT_STRICT_ITERATORSThiago Macieira2012-05-291-1/+1
| | | | | Change-Id: I2923315678d1aef516b35a8c83fe734367723a28 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* qdoc: Fix some QString usage issues (Krazy warnings).Friedemann Kleint2012-05-161-2/+2
| | | | | | | | - Avoid single-character constants. - Use QString() instead of "". Change-Id: If04eff389e7b6d4a18201365b711708fdf545d00 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* qdoc: Don't include internal QML properties in outputMartin Smith2012-05-151-1/+4
| | | | | | | | | QML properties marked internal were still appearing in the the HTML output. Also, the title for QML type pages was not correct in the help project writer. Change-Id: Icaad7cefce77a4af70796bc185c99a3035fb17c8 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* QDoc: Generate index file for DITAXML.Casper van Donderen2012-04-191-15/+15
| | | | | | | | | | | This change moves the fullDocumentLocation function to the generator base-class and adds generateIndex to the DITAXML Generator. All function calls to fullDocumentLocation are now handled by the static function in the base-class which will use the file extension from the currently active generator (either DITAXML or HTML). Change-Id: I24ce09c05a63eb5980b1243c58990e7ce9d42036 Reviewed-by: Martin Smith <martin.smith@nokia.com>
* qdoc: Allow documenting a C++ class as a QML type.Martin Smith2012-04-021-5/+0
| | | | | | | | | | | | | | | | | | | Now qdoc can handle the case where a C++ class is documented as a QML type of the same name, or as both a C++ class and a QML type of the same name. And collisions pages are created for both the HTML and the DITA XML output. A collision page is created when two items have the same name. The collision pages will be augmented later to include the list of pages where ambiguous links to one of the items listed on the collision page are actually located, so the writer can go back to those links and add the appropriate qualifier. Change-Id: I5a9632b2d2209e0784392047056bed8962005624 Reviewed-by: Martin Smith <martin.smith@nokia.com> Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* qdoc: Rename qt3 support pages to Compatibility pages.Casper van Donderen2012-03-201-4/+4
| | | | | | | Task-number: QTBUG-24849 Change-Id: I9453e38372f909d75bb4fb8642dc9bd7b993aa7e Reviewed-by: Martin Smith <martin.smith@nokia.com>
* Move qdoc into qtbase and bootstrap itLars Knoll2012-03-081-0/+772
We need qdoc in qtbase to be able to properly modularize our documentation and build it when building the different Qt modules. qdoc does contain a copy of the qml parser from qmldevtools, but this is the lesser evil compared to how we are currently forced to genereate our docs (and the fact that no developer can run qdoc and check the docs for their module). Change-Id: I9f748459382a11cf5d5153d1ee611d7a5d3f4ac1 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com> Reviewed-by: Martin Smith <martin.smith@nokia.com>