summaryrefslogtreecommitdiffstats
path: root/src/tools/qdoc/htmlgenerator.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
| * qdoc: Prepare QDoc for the new style on qt.ioTopi Reinio2014-11-111-45/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new template and CSS have some requirements that need changes in the generated .html: - Generate a new div 'sidebar' and place the TOC (if one exists) inside it, allowing the template to extend the sidebar contents dynamically. Do this for all pages except index.html. - Change the DOCTYPE declaration to be html5-compliant - Replace <tt> tags with <code> to be html5-compliant - Add a new config variable HTML.prologue - this allows the template to insert custom html into beginning of the page, before the page title but after any navigation or table-of-contents items. - Wrap tables inside <div> elements. This allows for better-working CSS design for small-screen devices. - Write out extra parameters first when outputting function synopsis to have better styling. - Inject zero-width-space characters into function names to allow the browser break up long function signatures in a nice manner. - Edit the CSS for the offline style to adapt to above changes. Task-number: QTBUG-42086 Change-Id: I3075cdc11bcb07a66150388519263fd721c8002b Reviewed-by: Martin Smith <martin.smith@digia.com>
| * qdoc: Delayed the examples manifest file creationVenu2014-11-041-3/+1
| | | | | | | | | | | | | | | | | | This avoids the creation of demos-manifest.xml if there are no demos in the repo. Change-Id: I4d3bbe4540f4b1532c0d51f62b8d1494864a7b1c Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | qdoc: Include source file and line number of linksMartin Smith2014-11-121-18/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Each entry in the link-to-link tables and in the broken-links table now includes the source file path of the file where the link or broken link appears and the line number in that file. The line number often refers to where the comment that contains the link begins, so sometimes the link or broken link appears further down in that comment. Change-Id: I692bfc173c8711bf26c9c59ad9771930c27e24a8 Task-number: QTBUG-41850 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | qdoc: Generate the links-to-broken-links pageMartin Smith2014-11-121-2/+62
| | | | | | | | | | | | | | | | | | | | | | The cross-module link report now contains an entry for the links to broken links subpage. It is the last entry in the links-to-links table on the QA page. Change-Id: I9e0b3ba5f2efe76055902467348db878dbed9991 Task-number: QTBUG-41850 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | qdoc: Generate \keyword anchors at the top of the pageMartin Smith2014-11-121-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, qdoc processes \keyword and \target the same way. The negative effect of this is that when either command appears at the top of a qdoc comment, the anchor it generates in the html file is just above the details section on the html page. This is usually wrong, especially for \keyword commands, where the anchor generated should always be at the top of the page/text where the \keyword appears. This update implements that. \target anchors are meant to be used when the anchor should appear somewhere in the middle of the page/text, exactly where the \target command appears. Change-Id: Ibbbf1087562a977ff74ccd98febfe9310ecba8f0 Task-number: QTBUG-42290 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | qdoc: Generate cross-module links-to-links pagesMartin Smith2014-11-111-51/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The cross-module link report is modified so that each module listed in the table is a link to a subpage on which all the links from the current module to that module are listed. To check that these links go to the correct place, click on one to be taken to the actual link. The actual link is marked with red asterisks. Click on that link to check that the link goes to the correct page. Repeat this process for all the links in the table. Change-Id: Ifddf7108ed7ef090c4063909fdbd10dac1f2566b Task-number: QTBUG-41850 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | qdoc: Fixed a link generation regressionMartin Smith2014-11-111-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This update fixes a bug introduced in the original update for this task. The bug caused some links to be generated incorrectly. If the name of the file containing the target began with the module name, then a test that asks if the link already begins with the module name fails, and the link is generated incorrectly. The test now checks for the module name followed by a slash, which it should have done in the first place. Change-Id: Iebac228ac969cef875678b15a248a2a1198ace05 Task-number: QTBUG-41705 Reviewed-by: Martin Smith <martin.smith@digia.com>
* | qdoc: Generate QA pagesMartin Smith2014-10-171-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qdoc has a new command line option, -write-qa-pages. Using this flag on the command line will tell qdoc to generate a QA html page in each module's output directory. The QA page contains information that is useful for Quality Assurance checking of the module's docs. The QA file name begins with "aaa" so it will always be listed at the top of the output directory. The file name for the QA file for QtCore, for example, is aaa-qtcore-qa-page.html. Currently, the QA page only contains a report listing the intermodule link count for each module that is the target of links from the documented module. The link report can be used to optimize the search order qdoc uses when resolving inter-module links. By default, the search order is the same as the ordering of the modules in the depends list in the .qdocconf file. Using the report, the user can reorder that list according to the number of links found in each module. i.e. in descending order of link count. The modules are listed in descending order of link count. Additionally, an actual depends variable is printed. It can be cut and pasted into the module's qdocconf file. Change-Id: I442596aeb54dcdd5db4a0821096a5273c15627e6 Task-number: QTBUG-41850 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | qdoc: qdoc was too slowMartin Smith2014-10-171-11/+29
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The hard-coded search order is now removed. The search order is now constructed from the depends variable in the qdocconf file. The basic idea is that qdoc is run once. It gets a list of all the qdocconf files for the modules in Qt5. First, qdoc runs in -prepare mode for each qdocconf file in the list. It generates the index file for each module, but these index files are never used. At the end of the -prepare phase for each module, qdoc keeps the tree structure for the module in a collection of trees. Second, qdoc runs in -generate mode for each qdocconf file in the list. But now it uses the existing tree for that module, so it doesn't have to read the sources files again, and it doesn't have to read any index files. Now it generates the docs for each module. The runtime for qdoc has been reduced by 90% when running qdoc for all of Qt5 on a not so new iMac. Before this update, qdoc took about 10 minutes to generate docs for Qt5. Now it takes a little over 1 minute. The new way to run qdoc is described in the Qt bug report referenced here. Note that running qdoc this new (old) way also generates fewer qdoc errors than when running qdoc the old way. This indicates that the index files qdoc uses when running the old way are incomplete. Note also that the old way of running qdoc is not affected by this update. The old way is still required for running qdoc in the current qmake/make system. That process must be changed to be able to use the faster qdoc. The details are provided in the Qt bug report. Change-Id: Ibec41d6fbaa9fc8cd070a05d04357bd02c4478f0 Task-number: QTBUG-41705 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* Don't use QStringLiteral in comparisonsMarc Mutz2014-10-091-1/+1
| | | | | | | | | | | | | | For QLatin1String, operator== is overloaded, so comparing to a latin-1 (C) string literal is efficient, since strlen() is comparatively fast. OTOH, QStringLiteral, when not using RVO, litters the code with QString dtor calls, which are not inline. Worse, absent lambdas, it even allocates memory. So, just compare using QLatin1String instead. Change-Id: I7af3bf3a67c55dae33ffaf9922d004fa168a3f9c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* qdoc: Restore navigation bar titles for QML, QML basic typesTopi Reinio2014-09-301-10/+4
| | | | | | | | | Re-add the name of a QML type/QML basic type to the navigation bar. Change-Id: Ia0ced775099f1ed4071ae9a922d808b9114c10ea 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-18/+10
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* qdoc: Highlight selected section / entry in the documentationTopi Reinio2014-09-051-36/+54
| | | | | | | | | | | | | | | | This commit adds id tags with the anchor reference as the value to html entities for documentation section titles and function signatures, properties etc. for both C++ and QML documentation pages. Together with new CSS rules, we can dynamically highlight the title that the user clicked on. This helps to locate the item of interest on a crowded page or when the page cannot be scrolled down enough to place the selected item on top. Change-Id: I7d1db2ed4e12779e1a9e571996ee65c3befa4e7a Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
* qdoc: Restore navigation bar title for module pages and groupsTopi Reinio2014-08-261-5/+4
| | | | | | | | | | | | | Adapt the code that generates the navigation bar to the recent changes in node hierarchy - Module pages, QML module pages and groups are no longer DocNodes. This change will ensure that if a page has a title, it will be visible in the navigation bar regardless of the the page (node) type. Change-Id: I697a12d5904d88f91771764ab7ed607b79e4eab1 Reviewed-by: Martin Smith <martin.smith@digia.com>
* qdoc: Remove all collision node stuff from qdocMartin Smith2014-08-221-118/+2
| | | | | | | | | | | | 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: Generate obsolete members page for QML typesMartin Smith2014-08-201-3/+88
| | | | | | | | | | | | | Generation of the obsolete members page, for QML types that have obsolete members, had not been implemented. This update implements that missing feature. The link to the page appears right below the link to the "All Members" page. Change-Id: I3e4bb2a68d5c8ef2bbe2e0c431eccf94ecb1fd3c Task-number: QTBUG-40214 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* qdoc: Allow choice of linking to QML or CPPMartin Smith2014-08-201-54/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This update enables using QML or CPP as the parameter in square brackets for the \l command. You will use this when, for example, there exist both a C++ class named QWidget and a QML type named QWidget and your \l {QWidget} links to the wrong one. Suppose you write \l {QWidget} expecting it to link to the QML type named QWidget, but it links to the C++ class named QWidget. Then write this instead: \l [QML] {QWidget} Or if you wrote \l {QWidget} expecting it to link to the C++ class, but it links to the QML type, write this instead: \l [CPP] {QWidget} A qdoc warning is printed if qdoc can not recognize the parameter in square brackets. There will be a further update to complete this task for implementing the other type of parameter that can be in the square brackets. Task-number: QTBUG-39221 Change-Id: I5dd85478f968025ecbe337a8aabcc31d8b12a86d Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* qdoc: Stop outputting duplicate \brief for QML type and module pagesTopi Reinio2014-08-141-2/+3
| | | | | | | | | | | | | | | | | | | | | | When generating the body of a documentation page, QDoc omits the brief description for nodes of type DocNode. Since Qt 5.4, a number of nodes are promoted from subnode types of DocNode to top-level nodes -specifically, - QML types - Modules - QML modules - Groups As a result we now see a duplicate or unintentional brief description on pages of the above type. This change instructs qdoc to skip generation of the brief for also above node types, as it was on 5.3. Task-number: QTBUG-40741 Change-Id: Id92dce27b13c68be0958225e04ed61813fdc91ee Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Distinguish between QML property and attached propertyTopi Reinio2014-08-121-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | A recent change in qtdeclarative (60ed6a43) added an attached property 'Window' to Item type, with property names identical to the ones already available in Window. This caused QDoc to report warnings for duplicate documentation for QML properties, because there was no distiction between a QML property and an attached property. This change fixes the issue by: - Allowing identical names for \qmlproperty and \qmlattachedproperty - Using distinct URLs/UUIDs/anchor references for them - Marking attached properties with '[attached]' qualifier in 'All Members' page. This doesn't solve the issue of disambiguating between a similarly named QML property and attached property when linking from an external location. However, these can be solved with the help of the \target command. Task-number: QTBUG-40674 Change-Id: Icc74de237366e9897334689fe354ab83e4af0356 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Micro-optimize qdocJędrzej Nowacki2014-07-311-3/+3
| | | | | | | Avoid redundant QStringRef to QString conversions. Change-Id: I535e7ba02b4ac5abef6036f631e228205e63f32a Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QDoc: Fixed section title offset in QML basic type pages.Jerome Pasion2014-07-231-0/+1
| | | | | | | | | | -QML basic type page layout is now separate from the other doc page layouts, but the section offset was incorrect. -the offset is the same as the QML type pages. Change-Id: I422e97eebe58a87c11607f2c8c5aedb10abbda7e Task-number: QTBUG-40335 Reviewed-by: Martin Smith <martin.smith@digia.com>
* QDoc: Restored QML basic type pages' table of contents.Jerome Pasion2014-07-231-0/+2
| | | | | | | | | -QDoc in 5.4 processed QML basic types as separate pages but the ToC wasn't added. Change-Id: I5a887158bacef923e765accac7ee5ca7c2c7a12b Task-number: QTBUG-40335 Reviewed-by: Martin Smith <martin.smith@digia.com>
* qdoc: Support use of \value command outside \enum topic.Topi Reinio2014-07-181-15/+17
| | | | | | | | | | | | | | | | | | | Even though qdoc accepts the \value command(s) anywhere in the documentation and generates tables for them, the produced output was invalid for documentation topics other than \enum. This change fixes the issue by not trying to resolve the enumeration values and removing the 'Value' column for generated tables when the \value command is used outside c++ enum documentation topic. This enables, for example, the use of the \value command for documenting acceptable values for QML enumeration properties, without having to use custom lists or tables. Task-number: QTBUG-35019 Change-Id: I597b2f9d7d03d4ab72f276752ddf53e1c405313c Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
* QDoc: Allow the listing of uppercase- and lowercase-named items in list.Jerome Pasion2014-07-171-1/+1
| | | | | | | | | | -QML basic types are lowercase-named while object types are uppercased. -reference page for QML types should list both. -caveat: simple implementation means the uppercase items are listed first. Change-Id: I9092ad0cd9e79c4d3f8b794ac5d68879ce6338a5 Reviewed-by: Martin Smith <martin.smith@digia.com>
* QDoc: Allow QDoc to collect all QML basic types in a map.Jerome Pasion2014-07-151-0/+3
| | | | | | | | | | | -needed if a list of just QML basic types is needed. -adding QML basic types to map of QML types. -generating the list of "qmlbasictypes" also now supported. -part of the fix for QTBUG-32871 Change-Id: Id291982a5684645b2b5e75256be673c1701e60b1 Task-number: QTBUG-32871 Reviewed-by: Martin Smith <martin.smith@digia.com>
* QDoc: Prevent QDoc from outputting the brief for example pages.Jerome Pasion2014-07-141-1/+2
| | | | | | | | | | Example pages' \brief do not form a complete sentence. The example pages have proper introductions and descriptions, unlike API pages which do use the brief information to summarize. Change-Id: I11f1362cd05e3cf90ae8e1c3a07d2584737fd89c Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* QDoc: Edited title generation for QML and C++ API pagesJerome Pasion2014-07-101-8/+5
| | | | | | | | | | | | | | | -added "QML Type" for QML types -reworded basic type pages by adding "QML Basic Type" at the end -streamlined variables in QDoc related to the HTML and page titles. These two changes were implemented in 5.3 branch, but got lost during the merge into dev: 1243940f83a5c04cc0eb64a0d1679dab3b7164f1 8e5e9d7987d0251fa61e24acbf6171879df3ae16 This commit restores the changes while ammending similar fixes Change-Id: I996b18f020b392aceeb40da7797838aca4a0626f Reviewed-by: Martin Smith <martin.smith@digia.com>
* Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-011-24/+31
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/qnx-x86-qcc/qplatformdefs.h src/corelib/global/qglobal.h src/network/socket/qnativesocketengine_winrt.cpp src/plugins/platforms/android/androidjniaccessibility.cpp src/plugins/platforms/windows/qwindowswindow.cpp Manually adjusted: mkspecs/qnx-armle-v7-qcc/qplatformdefs.h to include 9ce697f2d54be6d94381c72af28dda79cbc027d4 Thanks goes to Sergio for the qnx mkspecs adjustments. Change-Id: I53b1fd6bc5bc884e5ee2c2b84975f58171a1cb8e
| * qdoc: Revised logic for which example file to open in Qt CreatorTopi Reinio2014-06-101-25/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qdoc stores the 'files to open' into the example manifest. These files are opened in Qt Creator's editor when an example is selected from the Welcome / Examples list. This change uses the following criteria (case insensitive), in order of preference: - .qml file matching the project name - .cpp file matching the project name - .h file matching the project name - main.qml - main.cpp A 'mainFile = "true"' argument is written for the file that is preferred to be the top-most file. Having a main.qml file take precedence over main.cpp ensures that most Qt Quick examples open into the relevant QML code instead of the boilerplate C++ used for launching the application. Task-number: QTBUG-37203 Change-Id: I2ea58a31b1284f4f7d424dd35d49a84a23a88c23 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
* | qdoc: Give documenter more control of linkingMartin Smith2014-06-261-131/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: Improve <title> element contents in HTML pages.Jerome Pasion2014-06-251-4/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -applied logic to projects that set (or not set): -landing page -home page -version -change would remove duplicate information and proper module names instead of "Title | QtModule 5.4", it would be "Title | Qt Module 5.4" -tested on various projects: -Digia projects -Qt 5 -Qt Creator Change-Id: Ica7d5203d293910c98306f947bfee8454b9225d0 Reviewed-by: Martin Smith <martin.smith@digia.com>
* | QDoc: Introduce a variable to set table of contents depth.Jerome Pasion2014-06-111-13/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -"HTML.tocdepth" variable controls depth value. -setting to "0" disables table of contents. -sections 3 and 4 usually don't have descriptive titles to warrant their listing in the table of contents. -table width and CSS (online and offline) don't support wide entries. -Config class' getInt() function now returns -1 if a variable is not set. -for Qt 5 and projects which use html-config.qdocconf, tocdepth is set to "2". -added variable documentation. Task-number: QTBUG-38967 Change-Id: Ibd612f5b846ecb9c4b575e7ac11605c6efd2b77c Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com> Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | qdoc: Give documenter more control of linkingMartin Smith2014-06-011-207/+263
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Merge remote-tracking branch 'origin/stable' into devSimon Hausmann2014-05-221-5/+5
|\| | | | | | | Change-Id: Ia36e93771066d8abcf8123dbe2362c5c9d9260fc
| * QDoc: Stop copying title string unnecessarilySze Howe Koh2014-05-201-6/+2
| | | | | | | | | | | | | | | | "htmlTitle" never diverges from "fullTitle". Change-Id: Id1ce9005311bd86aa9803836168a2bebae6db65d Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| * QDoc: Added "QML Type" to HTML titles of QML type pages.Jerome Pasion2014-05-141-0/+4
| | | | | | | | | | | | | | | | -makes it more consistent with the C++ pages. -easier to read for the search engines. Change-Id: I172bdff04e0aa80ee58a903d112585992234d7d7 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | qdoc: Added 2nd argument to \generate list classes commandMartin Smith2014-05-021-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The qdoc command \generatelist has an argument that tells qdoc which list to generate. When the argument is "classes" qdoc generates the "All C++ Classes" list. qdoc looks for a common prefix for all the members of the list and sorts the members of the list using the character that follows the common prefix. The problem was that the common prefix "Q" was hardcoded in qdoc. This update allows the \generate list command to have a second argument, which is the common prefix. If the common prefix is not provided, qdoc sorts the members of the list on the first character. There is only one use of the \generatelist command with the classes argument in Qt5. It is changed to be \generatelist classes Q, and the qdoc user manual is updated to reflect this change. Task-number: QTBUG-38226 Change-Id: Ie1011d728819a1e5598bbdf73b7444009377d231 Reviewed-by: Martin Smith <martin.smith@digia.com>
* | qdoc: attaching type of attached properties was missingMartin Smith2014-05-021-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | This bug was probably intoroduced when the QmlPropertyGroup became a first class Node type. Otherwise, there is no way to explain how it worked at all. But now qdoc includes the attaching type. Some debugging code was also cleaned up. Task-number: QTBUG-35559 Change-Id: I478efb7f4356d51015af9f33c893958d4b4ae301 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | qdoc: \l{Qt::Window} links to the wrong pageMartin Smith2014-03-311-40/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kThis update fixes a bug introduced by the extensive changes for QTBUG-35377. The name Qt represents two namespaces, one in C++ and one in QML. The name "Window" is used in both of them, so the link \l{Qt::Window} would cause a collision in the single tree qdoc. In the multiple tree qdoc, there is no collision, but in this case the link should have gone to the C++ page and it went to the QML page instead. The fix involved correcting the way qdoc searches for link targets. Task-number: QTBUG-37633 Change-Id: Ib9b209eced937a0be0d3299f300ebf22b2776012 Reviewed-by: Martin Smith <martin.smith@digia.com>
* | qdoc: fix inheritance information for some QML typesMartin Smith2014-03-311-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | doc: Remove "current child" codeMartin Smith2014-03-311-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current child concept was added to the Name Collision Node to heuristically provide better linking when a link operation reached a collision node. It is doubtful that this improved linking much, but now that qdoc uses multiple trees, it is much less likely that collision nodes will occur. In fact, there are none in in the current Qt5. Therefore, the current child code is hereby removed from qdoc. Task-number: QTBUG-37067 Change-Id: I33aea5d550afb7ceaf941d49112e02c21d44f6dc Reviewed-by: Martin Smith <martin.smith@digia.com>
* | qdoc: Teach qdoc to use multiple trees (part 3)Martin Smith2014-03-311-175/+216
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-27/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-18/+19
|/ | | | | | | | | | | | | | | | | | | | | | | 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: Improve navigation bar for example filesTopi Reinio2014-03-091-13/+13
| | | | | | | | | | | | | | | | | | | | For example file pages, added a link to the parent example page into the navigation bar. Also, - Removed protectEnc() calls for strings added as Text atoms, this is done automatically when generating the navigation bar output, and doing it twice results in malformed output. - Removed the subtitle from being appended to example file title. The subtitle contains the full path of the file and it's already displayed on the page body, so removing it from the html title + navigation bar makes for a cleaner look without losing any information. Task-number: QTBUG-33022 Change-Id: I3ca942470453379e22f1a4aaec1d9b866d85bb5c Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Doc: Removed Contents listing for Qt Examples and Tutorials page.Jerome Pasion2014-02-201-1/+1
| | | | | | | | | -Qt Examples and Tutorials page does not need the table of contents. Task-number: QTBUG-36838 Change-Id: Id51ebc7cba7831a24cd9d8e8e6bde7f96bece326 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* qdoc: Replaced hard-coded href with computed hrefMartin Smith2013-12-031-1/+4
| | | | | | | | | | | | | | | For enum types that have QFlags versions, qdoc was outputting the documentation with a hard-coded link to qflags.html, which only workjed in the single directory mode. When qdoc outputs modular documentation, the href for the link should be "../qtcore/qflags.html" . Now qdoc computes this href correctly before it writes the docs. The href is no longer hard-coded. Task-number: QTBUG-35209 Change-Id: Ibdf5b11dbd063726eb77048de78f8874c65752ca Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* qdoc: Part 2 of fix for inheriting abstract QML typesMartin Smith2013-11-011-2/+3
| | | | | | | | | | | | | | | | This fix not only gets the property lists correct but also creates correct links to the property docs. A side effect is that QML properties, methods, and signals whose names begin with "__" are automatically treated as if they are marked \internal. This had been agreed earlier but had not been implemented. It is also required to fix this bug so it is included here. Task-number: QTBUG-33814 Change-Id: I57de1e49774db47cb57c042f181ccc8edec62d13 Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Nico Vertriest <nico.vertriest@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Include internal types in the index filesMartin Smith2013-11-011-1/+2
| | | | | | | | | | | | | Internal types can be inherited. Documentation is not created for internal types, but if an internal type is abstract, its properties must be listed on the documentation page of each subtype that inherits the internal type. This fix includes internal types in the index file. Task-number: QTBUG-33814 Change-Id: Ib6ef7cbd92804b3c605009802ddb15d35b32692c Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Nico Vertriest <nico.vertriest@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Remove algorithm to find common prefixMartin Smith2013-10-041-45/+13
| | | | | | | | | | | | | 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>