summaryrefslogtreecommitdiffstats
path: root/src/tools/qdoc/ditaxmlgenerator.h
Commit message (Collapse)AuthorAgeFilesLines
* qdoc: Give documenter more control of linkingMartin Smith2014-06-261-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This update enables using the module name as the parameter in square brackets for the \l command. You will use this when your link goes to the wrong page. e.g. Suppose this link command went to a page in QtGui instead of the page where it is meant to go in QtQuick: \l { mytarget } { the text for my link } When a link goes to a page in the wrong module, it means the target exists in more than one module and because qdoc searches the modules in sequence and stops when it finds a match, it might match the wrong target. This would be a collision in the single tree version of qdoc, but now qdoc builds a separate tree for each module. Since you know which module you want your link to go to, put the module name in square brackets as the first parameter, like this: \l [QtQuick] { mytarget } { the text for my link } Now qdoc will only search for mytarget in the tree for the QtQuick module. The \target command can now be used anywhere. It has not been tested in all possible locations, but it works in the places where people have asked why it doesn't work there. There will be a further update to complete this task for implementing the other types of parameters that can be in the square brackets. Task-number: QTBUG-39221 Change-Id: I2db4fdd0319ff272ec1d2fa9dc396f14599d80f9 Reviewed-by: Martin Smith <martin.smith@digia.com>
* qdoc: Give documenter more control of linkingMartin Smith2014-06-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | 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: fix inheritance information for some QML typesMartin Smith2014-03-311-1/+1
| | | | | | | | | | | | | | | This update fixes a bug introduced by the extensive changes for QTBUG-35377. For a QML base type loaded from an index file, its QML base type was not being resolved. This resulted in the "All members" page for some QML types to be incomplete because the pointer to the base type was 0 when it should have been set. This change also introduces the concept of "just in time" resolution for base type pointers, which appears to speed up qdoc a little. Task-number: QTBUG-37326 Change-Id: I5f09336ec70ba84029b44b245c56f7f8fe349757 Reviewed-by: Martin Smith <martin.smith@digia.com>
* qdoc: Teach qdoc to use multiple trees (part 3)Martin Smith2014-03-311-4/+3
| | | | | | | | | | | | | | | | | | 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: Remove algorithm to find common prefixMartin Smith2013-10-041-1/+1
| | | | | | | | | | | | | HtmlGenerator::generateCompactList() no longer uses an algorithm to find out a common prefix for classes/qml types when generating the alphabetical lists. The common prefix argument is no longer optional. To indicate there is no common prefix, pass an empty string as the common prefix argument. Task-number: QTBUG-33750 Change-Id: I4b44bbcff909fcea5c7bfd58c6796e303086bc68 Reviewed-by: Topi Reiniƶ <topi.reinio@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Changed digia contact details to */legal, updated licensesTeemu Kaukoranta2013-07-201-1/+1
| | | | | | | | Scripts are available in internal mkdist repo. Added license tags, updated licenses and copyrights/contacts Change-Id: Ibc734275f3000987eaa4f5c57f19d4e1fda2c479 Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* qdoc: Config class keeps track of current pathMartin Smith2013-04-301-2/+2
| | | | | | | | | | | | | | | The Config class is modified to build a single multimap containing a record for each variable found in each .qdocconf file. Each reacord contains not only the name and value of the variable, but also its location in the qdocconf file it was read from and the path to that file. This single multimap replaces 3 maps in the Config class. Task-number: QTBUG-30725 Change-Id: I049a69790f943b24c014a24b55b2b39725a1b56f Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Add index of obsolete members to obsolete pageMartin Smith2013-04-171-10/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qdoc has been modified to emit a compact list of the classes that have one or more obsolete members. The command is: \generatelist obsoletecppmembers This generates an index of all such classes, where each class name is a link to the class's subpage of obsolete members. A class's subpage of obsolete members is also accessible from the class's reference page, but now it is also accessible from this index. Also, The command shown has been added to the page obsoleteclasses.html in the generated output. This page already contains the index of obsolete classes. Currently, no such output is generated for QML types and QML types with obsolete members. But qdoc does accept commands for those: \generatelist obsoleteqmltypes and \generatelist obsoleteqmlmembers ...but qdoc doesn't know what to do with those commands yet. Task-number: QTBUG-30270 Change-Id: If19a3b977f64c948e4bd6f14a9e0a287419baa8a Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Fix translation contexts.Friedemann Kleint2013-02-071-0/+2
| | | | | | | | | | | Put all translations into the namespace QDoc and fix warnings about invalid tr()-usage by removing the free tr()-function from tr.h. Provide QCoreApplication::translate() for bootstrap builds. Change-Id: I2b6931188346f290e80e14b84adff8892d8a860f Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@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>
* qdoc: Listing group members across modulesMartin Smith2012-11-271-4/+3
| | | | | | | | | | | | | | This is a first attempt at fixing the problem, but it probably is not the entire solution. The problem requires adding attributes to the index files and then reusing them when the index files are read. The same problem will be affecting the module lists themselves, but that is not fixed in this update. Task-number: QTBUG-28036 Change-Id: I8593d5b9446e51a5204b6c71f8c4f2b63f445972 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Change license header from Nokia to DigiaSergio Ahumada2012-11-261-1/+1
| | | | | Change-Id: I2be215284d7670f60f8b5838fce1e6832dde2270 Reviewed-by: Martin Smith <martin.smith@digia.com>
* qdoc: better copying of .css filesMartin Smith2012-11-161-1/+1
| | | | | | | | | | | This change ignores templatedir for css files. It assumes that the paths in the stylesheets variable are relative to the qdocconf file that contains the stylesheets variable. Task-number: QTBUG-27878 Change-Id: I2155e58f352e17d710c93ad4e92679beb169d823 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Simplification of target ref constructionMartin Smith2012-10-081-1/+0
| | | | | | | | | | | | This change is being done to simplify qdoc, but the motivation was to fix a segfault in qdoc when running the release version of qdoc on linux. The change improves qdoc by simplifying the code whether it fixes the segfault or not. Change-Id: I2c865f7f1e2a44763aa7349d1bd739ad562f4029 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: retrying More refactoring of qdoc data structuresMartin Smith2012-09-261-3/+0
| | | | | | | | | | | This commit is the second phase of a significant overhaul of qdoc. Two new classes, QDocIndexFiles, and QDocTagFiles, are added to encapsulate the creation and use of the qdoc index files, and the creation of the qdoc tag file. Change-Id: I94651b10628e535ea7b26bd8256037cd819ccea7 Reviewed-by: Martin Smith <martin.smith@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-22/+22
| | | | | | | | 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-1/+1
| | | | | | | | 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-62/+13
| | | | | | | | | | | | | | | | | | 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>
* doc: Replaced FakeNode with DocNodeMartin Smith2012-08-211-2/+2
| | | | | | | | | | | | | | | | | | 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: Fixed incorrect href attribute values in qdocMartin Smith2012-07-251-0/+1
| | | | | | | | | | | | 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>
* QDoc: Use the module page as link in qt.ditamap.Casper van Donderen2012-06-211-1/+1
| | | | | | | If the number of [QML]module pages in a single qdoc run is 1: Use it as the link for the nested group of documentation pages in the automatically generated ditamap. Change-Id: Idbc3e2e5d65a1e7f0201638102ffab62475a66ec Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* QDoc: Use the correct DITAiXML for table col/rowspan.Casper van Donderen2012-06-051-0/+2
| | | | | Change-Id: Id5443b4428a5f0b6b9fee92efcf2fd1ae19c0d19 Reviewed-by: Martin Smith <martin.smith@nokia.com>
* qdoc: Removed some obsolete ifdefsMartin Smith2012-05-101-3/+1
| | | | | | | Also removed a few useless comments. Change-Id: I62a52bb826c1299ea9da3f0f3c23f267703c6509 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* QDoc: Remove generateQmlDesc and use generateApiDesc instead.Casper van Donderen2012-05-091-1/+0
| | | | | | | | | generateQmlDesc was basically a copy of generateApiDesc. Just using generateApiDesc also fixes a bug with the generation of a <shortDesc> inside an <apiDesc> Change-Id: I129a24ab0244283cc394c2afacc0f8227e4e5a88 Reviewed-by: Martin Smith <martin.smith@nokia.com>
* qdoc: Further changes to the QML specializationMartin Smith2012-05-011-0/+1
| | | | | | | | | Re-adding <qmlInherits>, <qmlInheritedBy>, <qmlInstantiates>, and <qmlSince>. Also adding <qmlAttached>. Change-Id: Iebd70a37b083bc404ce621d0bb9d3090dbc1109e Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* qdoc: Further changes to the QML specializationMartin Smith2012-04-241-5/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Body elements to include type, property, method, signal, enum info, so: qmlDetail to - qmlTypeDetail - qmlPropertyDetail - qmlEnumerationDetail - qmlMethodDetail - qmlSignalDetail 2. Same thing for a section that contains elements specialized for QML, so qmlDef to - qmlTypeDef - qmlPropertyDef - qmlEnumerationDef - qmlMethodDef - qmlSignalDef Rationale for both items above is that otherwise the body and section content models would have to be exactly the same for a type, property, method, etc. 3. For the import statement use: <qmlImportModule> <apiItemName>QtGraphicalEffects</apiItemName> <apiData>1.0</apiData> </qmlImportModule> So we have an element indicating that this is for the import statement, not an outputclass. And no need to specialize the elements inside it as we know from the ancestor (qmlImportModule) what they're for. <qmlImportModule> to be specialized from apiDef. 4. The 'description' section name doesn't need to be specialized further from the API ref. DTDs so <qmlDesc> should be <apiDesc> The content model for the 'description' section would be similar to that of a normal DITA section, specialized into apiDesc in the API ref. DTDs, so we don't need to rename it for QML. 5. We need a separate element for the since information. <qmlSince> <apiItemName>QtGraphicalEffects</apiItemName> <apiData>1.0</apiData> </qmlSince> 6. Public identifier should be like this for a type: -//NOKIA//DTD DITA QML Type//EN Not like this: -//NOKIA//DTD DITA QML API Type Reference v0.1.0//EN Change-Id: Ie9047965bf32a2e3e9339eb743f2019cb38c88e4 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* qdoc: Update qdoc to use QML spec for DITAMartin Smith2012-04-231-1/+33
| | | | | | | | qdoc now generates DITA XML from QML docs according to the QML specialization. Change-Id: I51d93c2ab3b1deefab9bbedcd2e752f49648809f Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* QDoc: Generate index file for DITAXML.Casper van Donderen2012-04-191-1/+1
| | | | | | | | | | | 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: Fixed bugs causing invalid DITA XMLMartin Smith2012-04-141-0/+1
| | | | | | | | | | | Fixed a bug in qdoc that caused too many end elements to be generated. Also fixed some doc errors that caused invalid DITA to be generated. Task nr: QTBUG-25302 Change-Id: Ifbbf457d28c51c2691a252888447739da7713bc9 Reviewed-by: Martin Smith <martin.smith@nokia.com> Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* qdoc: Allow documenting a C++ class as a QML type.Martin Smith2012-04-021-11/+9
| | | | | | | | | | | | | | | | | | | 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: Implement \uicontrol command.Casper van Donderen2012-03-281-0/+1
| | | | | Change-Id: I10381cd69d32352c590ec5a7d4041465af57b88b Reviewed-by: Martin Smith <martin.smith@nokia.com>
* qdoc: Enable XSLTs to produce correct #include info.Martin Smith2012-03-201-1/+0
| | | | | | | | | qdoc no longer writes the expected "include" statment in a codeblock in the detailed description. It writes it as an <othermeta> element in the <prolog> instead. Change-Id: I303477dbba7f2383fb374a398c890760a15744de Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* qdoc: Merge PageGenerator into Generator class.Casper van Donderen2012-03-201-3/+2
| | | | | | | | | | | This change also sorts all functions in Generator by alphabet and moves the implementation of the GenerateQmlInheritedBy function to the Generator class, since the implementation in both the DITA and HTML generators was the same. Task-number: QTBUG-24833 Change-Id: I44588079159e03b7ff7549e5478babb1aabdaf1b Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* qdoc: Structure the DITA map with a root node.Martin Smith2012-03-151-1/+1
| | | | | | | | | | | The root topicref is now always index.dita, unless there is no index.dita. But there is always a root topicref that has the project name as its navtitle, even if there is no index.dita file to map it to. Task-number: Mzilla bug - 7229 Change-Id: I0c9fdf1a2e3ba847fe8975a0745667189a77a755 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* qdoc3: qdoc now handles overloaded methods for QMLMartin Smith2012-03-131-1/+1
| | | | | | | | | | | | When a C++ class is documented as a QML type, it can have overloaded QML methods. These are now handled correctly by qdoc. The method list for QML types is now output with the full method signature. For signals and handlers too. Task-number: QTBUG-24670 Change-Id: If529d4136f5b480373b6ac25d2dceef15e6ea3db Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* Move qdoc into qtbase and bootstrap itLars Knoll2012-03-081-0/+543
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>