diff --git a/cmake/QtCreatorDocumentation.cmake b/cmake/QtCreatorDocumentation.cmake index 9587a77e0b1..bf679d2188f 100644 --- a/cmake/QtCreatorDocumentation.cmake +++ b/cmake/QtCreatorDocumentation.cmake @@ -5,6 +5,18 @@ add_feature_info("Build documentation" WITH_DOCS "") option(WITH_ONLINE_DOCS "Build online documentation" OFF) add_feature_info("Build online documentation" WITH_ONLINE_DOCS "") +option(BUILD_DOCS_BY_DEFAULT "Build documentation by default" OFF) +add_feature_info("Build documentation by default" BUILD_DOCS_BY_DEFAULT "") + + +if (BUILD_DOCS_BY_DEFAULT) +set(EXCLUDE_DOCS_FROM_ALL "") +set(INCLUDE_DOCS_INTO_ALL "ALL") +else() +set(EXCLUDE_DOCS_FROM_ALL "EXCLUDE_FROM_ALL") +set(INCLUDE_DOCS_INTO_ALL "") +endif() + # Get information on directories from qmake # as this is not yet exported by cmake. # Used for QT_INSTALL_DOCS @@ -46,13 +58,13 @@ endfunction() function(_setup_doc_targets) # Set up important targets: if (NOT TARGET html_docs) - add_custom_target(html_docs COMMENT "Build HTML documentation") + add_custom_target(html_docs ${INCLUDE_DOCS_INTO_ALL} COMMENT "Build HTML documentation") endif() if (NOT TARGET qch_docs) - add_custom_target(qch_docs COMMENT "Build QCH documentation") + add_custom_target(qch_docs ${INCLUDE_DOCS_INTO_ALL} COMMENT "Build QCH documentation") endif() if (NOT TARGET docs) - add_custom_target(docs COMMENT "Build documentation") + add_custom_target(docs ${INCLUDE_DOCS_INTO_ALL} COMMENT "Build documentation") add_dependencies(docs html_docs qch_docs) endif() endfunction() @@ -114,6 +126,7 @@ function(_setup_qdoc_targets _qdocconf_file _retval) set(_html_target "html_docs_${_target}") add_custom_target("${_html_target}" + ${INCLUDE_DOCS_INTO_ALL} ${_full_qdoc_command} -outputdir "${_html_outputdir}" "${_qdocconf_file}" ${_qdoc_index_args} ${_qdoc_include_args} COMMENT "Build HTML documentation from ${_qdocconf_file}" @@ -126,7 +139,7 @@ function(_setup_qdoc_targets _qdocconf_file _retval) # Install HTML files as a special component install(DIRECTORY "${_html_outputdir}" DESTINATION "${_arg_INSTALL_DIR}" - COMPONENT html_docs EXCLUDE_FROM_ALL) + COMPONENT html_docs ${EXCLUDE_DOCS_FROM_ALL}) set("${_retval}" "${_html_outputdir}" PARENT_SCOPE) endfunction() @@ -154,6 +167,7 @@ function(_setup_qhelpgenerator_targets _qdocconf_file _html_outputdir) set(_qch_target "qch_docs_${_target}") set(_html_target "html_docs_${_target}") add_custom_target("${_qch_target}" + ${INCLUDE_DOCS_INTO_ALL} Qt::qhelpgenerator "${_html_outputdir}/${_target}.qhp" -o "${_qch_outputdir}/${_target}.qch" COMMENT "Build QCH documentation from ${_qdocconf_file}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" @@ -163,7 +177,7 @@ function(_setup_qhelpgenerator_targets _qdocconf_file _html_outputdir) add_dependencies(qch_docs "${_qch_target}") install(FILES "${_qch_outputdir}/${_target}.qch" DESTINATION "${_arg_INSTALL_DIR}" - COMPONENT qch_docs EXCLUDE_FROM_ALL) + COMPONENT qch_docs ${EXCLUDE_DOCS_FROM_ALL}) endfunction() # Helper functions: @@ -283,6 +297,7 @@ function(add_qtc_doc_attribution target attribution_file output_file qdocconf_fi file(MAKE_DIRECTORY ${output_dir}) # add target add_custom_target(${target} + ${INCLUDE_DOCS_INTO_ALL} Qt6::qtattributionsscanner -o "${output_file}" --basedir "${PROJECT_SOURCE_DIR}" ${attribution_file} COMMENT "Create attributions ${output_file} from ${attribution_file}" DEPENDS "${attribution_file}" diff --git a/dist/changelog/changes-14.0.0.md b/dist/changelog/changes-14.0.0.md index e5dc688e599..31a3e5daa04 100644 --- a/dist/changelog/changes-14.0.0.md +++ b/dist/changelog/changes-14.0.0.md @@ -99,7 +99,7 @@ Editing ### Python * Added options for updating Python Language Server - ([Documentation] (https://doc-snapshots.qt.io/qtcreator-14.0/creator-language-servers.html)) + ([Documentation](https://doc-snapshots.qt.io/qtcreator-14.0/creator-language-servers.html)) ### Language Server Protocol @@ -110,18 +110,23 @@ Editing ### Compiler Explorer -* Added a wizard template for code that uses Qt +* Added a wizard template for code that uses Qt to `File`> `New File`> + `Compiler Explorer` + [Documentation](https://doc.qt.io/qtcreator/creator-how-to-create-compiler-explorer-sessions.html) ### Models * Added more visual attributes for relations -* Added support for linked files -* Added support for custom images +* Added support for linked files in model element properties +* Added support for custom images in model element properties + +([Documentation](https://doc-snapshots.qt.io/qtcreator-14.0/creator-how-to-create-models.html)) ### SCXML -* Added visualization of conditions on transitions +* Added visualization of conditions on transitions by using square brackets: `[]` ([QTCREATORBUG-21946](https://bugreports.qt.io/browse/QTCREATORBUG-21946)) + ([Documentation](https://doc-snapshots.qt.io/qtcreator-14.0/creator-scxml.html)) Projects -------- diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index f78240e4fb0..dc887877646 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -67,8 +67,14 @@ if(WITH_ONLINE_DOCS) _add_doc(${IDE_DOC_FILE_ONLINE} "qtcreatordev/qtcreator-dev-online.qdocconf") endif() +if (BUILD_DOCS_BY_DEFAULT) +set(EXCLUDE_DOCS_FROM_ALL "") +else() +set(EXCLUDE_DOCS_FROM_ALL "EXCLUDE_FROM_ALL") +endif() + install(DIRECTORY config DESTINATION ${IDE_HEADER_INSTALL_PATH}/doc COMPONENT Devel - EXCLUDE_FROM_ALL + ${EXCLUDE_DOCS_FROM_ALL} ) diff --git a/doc/qtcreator/examples/textfinder/CMakeLists.txt b/doc/qtcreator/examples/textfinder/CMakeLists.txt index a00ccd856b4..d0e3130d2f7 100644 --- a/doc/qtcreator/examples/textfinder/CMakeLists.txt +++ b/doc/qtcreator/examples/textfinder/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(TextFinder VERSION 0.1 LANGUAGES CXX) diff --git a/doc/qtcreator/images/qtcreator-model-editor-component-diagram.webp b/doc/qtcreator/images/qtcreator-model-editor-component-diagram.webp index e28a94e0a2a..ecd5a013df1 100644 Binary files a/doc/qtcreator/images/qtcreator-model-editor-component-diagram.webp and b/doc/qtcreator/images/qtcreator-model-editor-component-diagram.webp differ diff --git a/doc/qtcreator/images/qtcreator-modeleditor-classes.png b/doc/qtcreator/images/qtcreator-modeleditor-classes.png deleted file mode 100644 index c5747416db2..00000000000 Binary files a/doc/qtcreator/images/qtcreator-modeleditor-classes.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-modeleditor-classes.webp b/doc/qtcreator/images/qtcreator-modeleditor-classes.webp new file mode 100644 index 00000000000..fcdec4f6452 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-modeleditor-classes.webp differ diff --git a/doc/qtcreator/images/qtcreator-modeleditor-packages.png b/doc/qtcreator/images/qtcreator-modeleditor-packages.png deleted file mode 100644 index 3884886e19f..00000000000 Binary files a/doc/qtcreator/images/qtcreator-modeleditor-packages.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-modeleditor-packages.webp b/doc/qtcreator/images/qtcreator-modeleditor-packages.webp new file mode 100644 index 00000000000..c9e676207ed Binary files /dev/null and b/doc/qtcreator/images/qtcreator-modeleditor-packages.webp differ diff --git a/doc/qtcreator/images/qtcreator-modeleditor.png b/doc/qtcreator/images/qtcreator-modeleditor.png deleted file mode 100644 index 9f46b26ac62..00000000000 Binary files a/doc/qtcreator/images/qtcreator-modeleditor.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-modeleditor.webp b/doc/qtcreator/images/qtcreator-modeleditor.webp new file mode 100644 index 00000000000..aeaccae16b6 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-modeleditor.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-compiler-explorer.webp b/doc/qtcreator/images/qtcreator-new-project-compiler-explorer.webp new file mode 100644 index 00000000000..3744f4100fa Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-compiler-explorer.webp differ diff --git a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc index 920bd6d3907..d267eaf8f60 100644 --- a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc +++ b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc @@ -519,5 +519,5 @@ The \l {Application Output} view shows some information even if the Performance Analyzer displays error messages. - \sa {Analyze}{How To: Analyze}, {Analyzers}, {Analyzing Code} + \sa {Analyze}{How To: Analyze}, {Analyzers}, {Analyzing Code}, {Kits} */ diff --git a/doc/qtcreator/src/analyze/creator-analyze.qdoc b/doc/qtcreator/src/analyze/creator-analyze.qdoc index e2333cee77c..982d4219923 100644 --- a/doc/qtcreator/src/analyze/creator-analyze.qdoc +++ b/doc/qtcreator/src/analyze/creator-analyze.qdoc @@ -151,5 +151,5 @@ is especially useful when viewing large trace files that are difficult to visualize using the built-in trace-viewer (\c{chrome://tracing}). - \sa {Analyze}{How To: Analyze}, {Analyzers} + \sa {Activate kits for a project}, {Analyze}{How To: Analyze}, {Analyzers} */ diff --git a/doc/qtcreator/src/analyze/creator-valgrind.qdoc b/doc/qtcreator/src/analyze/creator-valgrind.qdoc index d044e581199..dfc43effb49 100644 --- a/doc/qtcreator/src/analyze/creator-valgrind.qdoc +++ b/doc/qtcreator/src/analyze/creator-valgrind.qdoc @@ -392,7 +392,7 @@ \image qtcreator-valgrind-remote-settings.png {Start Remote Analysis dialog} \li Select the application to run and analyze, as well as the - \l{glossary-buildandrun-kit}{kit} to use. + \l{Kits}{kit} to use. \endlist diff --git a/doc/qtcreator/src/android/androiddev.qdoc b/doc/qtcreator/src/android/androiddev.qdoc index ab6ae2d9092..bd9e8be5073 100644 --- a/doc/qtcreator/src/android/androiddev.qdoc +++ b/doc/qtcreator/src/android/androiddev.qdoc @@ -149,8 +149,7 @@ building Qt from \c modules/Core.json and uses it instead of the version in \c sdk_definitions.json. - \sa {Android}{How To: Develop for Android}, - {Developing for Android} + \sa {Android}{How To: Develop for Android}, {Developing for Android}, {Kits} */ /*! diff --git a/doc/qtcreator/src/android/creator-projects-settings-run-android.qdoc b/doc/qtcreator/src/android/creator-projects-settings-run-android.qdoc index 8753e838649..2d264f0e57d 100644 --- a/doc/qtcreator/src/android/creator-projects-settings-run-android.qdoc +++ b/doc/qtcreator/src/android/creator-projects-settings-run-android.qdoc @@ -11,7 +11,7 @@ \brief Settings for running applications on Android devices. - Specify settings for running applications on the \l {kits-tab}{Run device} that + Specify settings for running applications on the \l {Kits}{Run device} that you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run > \uicontrol {Run Settings}. @@ -66,5 +66,5 @@ \endcode \sa {Activate kits for a project}, {Configure projects for running}, - {Android}{How To: Develop for Android} + {Android}{How To: Develop for Android}, {Kits} */ diff --git a/doc/qtcreator/src/android/deploying-android.qdoc b/doc/qtcreator/src/android/deploying-android.qdoc index e1b83d5e046..75f497cc6d7 100644 --- a/doc/qtcreator/src/android/deploying-android.qdoc +++ b/doc/qtcreator/src/android/deploying-android.qdoc @@ -499,6 +499,6 @@ To add a permission, select it from the list, and then click \uicontrol Add. \sa {Build and Run}{How To: Build and Run}, - {Android}{How To: Develop for Android}, {Android Run Settings} + {Android}{How To: Develop for Android}, {Android Run Settings}, {Kits} */ diff --git a/doc/qtcreator/src/appman/creator-appman-how-to-run.qdoc b/doc/qtcreator/src/appman/creator-appman-how-to-run.qdoc index af2ffacaaec..0df58d12e8c 100644 --- a/doc/qtcreator/src/appman/creator-appman-how-to-run.qdoc +++ b/doc/qtcreator/src/appman/creator-appman-how-to-run.qdoc @@ -153,5 +153,5 @@ {Remote Linux}{How To: Develop for remote Linux}, {Run on many platforms}, {Debugging}, {Debuggers}, {Debugger}, {Developing for \B2Q Devices}, {Developing for Remote Linux Devices}, - {Profiling QML Applications} + {Profiling QML Applications}, {Kits} */ diff --git a/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc b/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc index 70ded6fc366..67b73cf9822 100644 --- a/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc +++ b/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc @@ -71,7 +71,8 @@ The available settings depend on the debug server provider. - \sa {Enable and disable plugins}, {Bare Metal}{How To: Develop for Bare Metal} + \sa {Add kits}, {Enable and disable plugins}, + {Bare Metal}{How To: Develop for Bare Metal} */ /*! @@ -296,6 +297,7 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-bare-metal + \ingroup creator-how-to-manage-kits \title Add Bare Metal devices diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc index aac591854cd..c3b9692c5ae 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc @@ -11,15 +11,15 @@ \brief Settings for building applications with CMake. - Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in + Specify build settings for the selected \l{Kits}{kit} in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build > \uicontrol {Build Settings}. Configuring medium-sized to large CMake projects in \QC can be a challenge due to the number of variables that you need to pass to CMake to configure the project correctly. To make this easier, - \QC creates an initial configuration for you based on the kit - settings and displays it in \uicontrol {Initial Configuration} in + \QC creates an initial configuration for you based on the \l{Kits} + {kit preferences} and displays it in \uicontrol {Initial Configuration} in the \uicontrol {Build Settings} of the project. Or, you can use CMake presets to configure CMake. diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc index 1cc600123a6..ace6f693895 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc @@ -133,12 +133,13 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-build-with-cmake + \ingroup creator-how-to-manage-kits \title Add CMake tools \QC automatically detects the CMake executable that you specify in the \c PATH. You can add paths to other CMake executables and use them in - different build and run \l{glossary-buildandrun-kit}{kits}. + different build and run \l{Kits}{kits}. To see the CMake installations that \QC automatically detects: @@ -183,8 +184,8 @@ \image qtcreator-kits-cmake.png {Kits preferences} - \sa {Build with CMake}{How To: Build with CMake}, {CMake}, {Add kits}, - {kits-tab}{Kits} + \sa {Build with CMake}{How To: Build with CMake}, + {Manage Kits}{How To: Manage Kits}, {CMake}, {Kits} */ /*! diff --git a/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc b/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc index 55f71c40d05..81ecd115756 100644 --- a/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc +++ b/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc @@ -11,7 +11,7 @@ \brief Settings for building applications with the Conan package manager. - Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in + Specify build settings for the selected \l{Kits}{kit} in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build > \uicontrol {Build Settings}. @@ -30,5 +30,5 @@ Select \uicontrol {Build missing} to build packages from source if binary packages are not found. - \sa {Conan Package Manager} + \sa {Activate kits for a project}, {Conan Package Manager} */ diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc index d2836a9c5f5..c726d15e601 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc @@ -58,7 +58,7 @@ \endtable The debugger plugin automatically selects a suitable native debugger for - each \l{kits-tab}{kit} from the ones found on the computer. The automatic + each \l{Kits}{kit} from the ones found on the computer. The automatic setup fails if the native debugger is not installed on the computer or if \QC does not support the installed version. @@ -148,5 +148,5 @@ \image qtcreator-run-settings-python.webp {Run settings for a Python project} - \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger} + \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger}, {Kits} */ diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index eee91df904b..25c127aa413 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -29,7 +29,7 @@ \section1 Setting Up the Debugger The debugger plugin automatically selects a suitable native debugger for - each \l{kits-tab}{kit} from the ones found on your system. You can select + each \l{Kits}{kit} from the ones found on your system. You can select another kit. To specify the debugger and compiler to use for each kit, go to \preferences > \uicontrol Kits. @@ -212,7 +212,7 @@ \l{Debugging a Qt Quick Application}. \sa {Debugging a C++ Application}, {Debug}{How To: Debug}, {Debuggers}, - {Debugger} + {Debugger}, {Kits} */ /*! @@ -301,7 +301,7 @@ \title Start and debug an external application To debug any executable on your local or on a remote - machine without using a project, specify a build and run kit that + machine without using a project, specify a build and run \l{Kits}{kit} that identifies the device to debug the application on. While the \e{start external} debugger mode does not strictly require a @@ -342,7 +342,8 @@ configuration to use. \endlist - \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger} + \sa {Activate kits for a project}, {Debug}{How To: Debug}, {Debugging}, + {Debuggers}, {Debugger} */ /*! @@ -406,7 +407,8 @@ process to start. \endlist - \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger} + \sa {Activate kits for a project}, {Debug}{How To: Debug}, {Debugging}, + {Debuggers}, {Debugger} */ /*! diff --git a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc index 1d4f41f789e..e44a2f93fc9 100644 --- a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc +++ b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc @@ -281,6 +281,6 @@ updated in the running application, but not in the source code. \if defined(qtcreator) - \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger} + \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger}, {Kits} \endif */ diff --git a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc index b9b4b1bc735..8d82c2a52a9 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc @@ -250,8 +250,8 @@ To disable the embedded code model and use \QMLLS for everything, select \uicontrol {Use \QMLLS advanced features}. - Also, \QC tries to use \QMLLS shipped with - the Qt version in your current kit. To override that behavior and always use + Also, \QC tries to use \QMLLS shipped with the Qt version in your current + \l{Kits}{kit}. To override that behavior and always use \QMLLS of the highest registered Qt version, select \uicontrol {Use \QMLLS from latest Qt version}. @@ -262,7 +262,7 @@ > \uicontrol {Initial Configuration}. \sa {Manage Language Servers}{How To: Manage Language Servers}, - {Enabling and Disabling Messages}, {CMake Build Configuration}, + {Enabling and Disabling Messages}, {CMake Build Configuration}, {Kits} {Language Servers} */ diff --git a/doc/qtcreator/src/editors/creator-only/creator-modeling.qdoc b/doc/qtcreator/src/editors/creator-only/creator-modeling.qdoc index 426cc25d67c..0b20f36c335 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-modeling.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-modeling.qdoc @@ -30,15 +30,15 @@ You can create the following types of structural diagrams: \list - \li Package diagrams, which consist of packages and their relationships, + \li Package diagrams, which consist of packages and their relationships and visualize how the system is packaged. \li Class diagrams, which consists of classes, dependencies, inheritance, associations, aggregation, and composition, and show a system in an object-oriented way. \li Component diagrams, which represent a set of components and their - relationships, and show the implementation of a system. + relationships and show the implementation of a system. \li Deployment diagrams, which represent a set of software and hardware - components and their relationships, and visualize the deployment + components and their relationships and visualize the deployment of a system. \endlist @@ -55,19 +55,17 @@ \section1 Editing Models - You can create models that have several different structural or - behavioral diagrams. - You can add elements to the diagrams and specify properties for them. You - can either use standard model elements or add your own elements with custom - icons. + You can create models that have several different structural or behavioral + diagrams. Add elements to the diagrams and specify properties for them. Use + standard model elements or add your own elements with custom icons. - \image qtcreator-modeleditor.png {Class diagram in the model editor} + \image qtcreator-modeleditor.webp {Class diagram in the model editor} \caption A class diagram in the model editor. - You can add model elements to diagrams in the following ways: + Add elements to diagrams in the following ways: \list - \li Drag model elements from the element tool bar (1) to the + \li Drag elements from the element tool bar (1) to the editor (2). \li Select tool bar buttons (3) to add elements to the element tree (4). \li Drag elements from the element tree to the editor to add them and @@ -79,22 +77,26 @@ \section2 Grouping Elements - You can group elements by surrounding them with a boundary. When you move - the boundary, all elements within it are moved together. Similarly, drag - a swimlane to the diagram. When you move the swimlane, all elements right - to the swimlane (for vertical swimlanes) or below it (for horizontal swimlanes) - will be moved together. A vertical swimlane is created when you drop the - swimlane icon on the top border of the diagram and a horizontal swimlane - is created when you drop the icon near the left border. + To group elements, surround them with a \e boundary. When you move + the boundary, all elements within it move together. - Classes or other objects that you lay on packages are moved with the packages. - You can move individual elements and modify their properties (5) by selecting - them. You can also use \e multiselection to group elements temporarily. + Similarly, drag a \e swimlane to the diagram. When you move the swimlane, all + elements right to the swimlane (for vertical swimlanes) or below it (for + horizontal swimlanes) move together. + + To create a vertical swimlane, drop the swimlane icon on the top border of + the diagram. To create a horizontal swimlane, drop the icon near the left + border. + + Classes or other objects that you lay on packages move with the packages. + To move individual elements and modify their properties (5), select them. + + Use \e multiselection to group elements temporarily. \section2 Aligning Elements To align elements in the editor, select several elements and right-click to - open a context menu. Select actions in the \uicontrol {Align Objects} menu + open a context menu. Select actions in \uicontrol {Align Objects} menu to align elements horizontally or vertically or to adjust their width and height. @@ -111,20 +113,42 @@ then select \uicontrol {Add Related Elements} in the context menu. By default, when you select an element in a diagram, it is highlighted also - in the \uicontrol Structure view. To change this behavior so that selecting - an element in the \uicontrol Structure makes it highlighted also in the - diagram, click and hold the \inlineimage icons/linkicon.png - button, and then select \uicontrol {Synchronize Diagram with Structure}. - To keep the selections in the diagram and the \uicontrol Structure view + in \uicontrol Structure view. To change this behavior so that selecting + an element in \uicontrol Structure makes it highlighted also in the + diagram, select \inlineimage icons/linkicon.png and then select + \uicontrol {Synchronize Diagram with Structure}. + To keep the selections in the diagram and \uicontrol Structure view synchronized, select \uicontrol {Keep Synchronized}. + \section2 Linking from Element Names to Files + + To link to a file from the name of an element, select the file in + \uicontrol {Linked file}. + \section2 Zooming into Diagrams - To zoom into diagrams, select the \uicontrol {Zoom In} toolbar button, - press \key Ctrl++, or press \key Ctrl and roll the mouse wheel up. To zoom - out of diagrams, select \uicontrol {Zoom Out}, press \key Ctrl+-, or press - \key Ctrl and roll the mouse wheel down. To reset the diagram size to 100%, - select \uicontrol {Reset Zoom} or press \key Ctrl+0. + To zoom into diagrams: + + \list + \li Select \uicontrol {Zoom In} toolbar button. + \li Press \key Ctrl++. + \li Press \key Ctrl and roll the mouse wheel up. + \endlist + + To zoom out of diagrams: + + \list + \li Select \uicontrol {Zoom Out}. + \li Press \key Ctrl+-. + \li Press \key Ctrl and roll the mouse wheel down. + \endlist + + To reset the diagram size to 100%: + + \list + \li Select \uicontrol {Reset Zoom}. + \li Press \key Ctrl+0. + \endlist \section2 Printing Diagrams @@ -137,15 +161,27 @@ \section2 Exporting Diagrams as Images - To save diagrams as images, select \uicontrol File > + To save diagrams as images, go to \uicontrol File, and then select \uicontrol {Export Diagram}. To save only the selected parts of a diagram, select \uicontrol {Export Selected Elements}. \section1 Adding Custom Elements The model editor has the following built-in element types: package, - component, class, and item. For package, component, and class elements, you - can specify custom icons. The color, size, and form of the icon are + component, class, and item. + + To use custom icons for the built-in elements, select an image file in + \uicontrol {Image} in element properties. + + \image qtcreator-model-editor-component-diagram.webp {Component properties} + \caption The Image field in Component properties. + + \section2 Using Definition Files + + For package, component, and class elements, you can use definition files to + specify custom icons. + + The color, size, and form of the icon are determined by a stereotype. If you attach the stereotype to an element, the element icon is replaced by the custom icon. For example, you can attach the entity and interface stereotypes to classes and the database stereotype to @@ -185,7 +221,7 @@ and templates for existing types (such as a composition relation that can be drawn between classes). - You can add your own definition file and save it with the file extension + Add your own definition file and save it with the file extension \e .def to add custom colors and icons for stereotypes, elements, or tool bars. Either store this file in the same directory as the \e standard.def file or select the root element of a model and apply your @@ -203,47 +239,52 @@ \title Create UML-style models - You can use wizards to create UML-style models and \e {scratch models}. + Use wizards to create UML-style models and \e {scratch models}. To create models and edit them in the model editor: \list 1 - \li Select \uicontrol File > \uicontrol {New File} > \uicontrol Modeling - > \uicontrol Model > \uicontrol Choose. + \li Go to \uicontrol File > \uicontrol {New File} > \uicontrol Modeling + > \uicontrol Model, and then select \uicontrol Choose. The model file opens in the model editor. \li Drag model elements to the editor and select them to specify properties for them: - \image qtcreator-modeleditor-packages.png {Package diagram in the model editor} + \image qtcreator-modeleditor-packages.webp {Package diagram in the model editor} \caption A package diagram in the model editor. \list 1 - \li In the \uicontrol Stereotypes field, enter the stereotype to - apply to the model element or select a predefined stereotype + \li In \uicontrol Stereotypes, enter the stereotype to + apply to the element or select a predefined stereotype from the list. - \li In the \uicontrol Name field, give a name to the model element. + \li In \uicontrol Name, give a name to the element. - \li Select the \uicontrol {Auto sized} check box to reset the - element to its default size after you have changed the element + \li In \uicontrol {Linked file}, select a file to create a link to + it from the element name. + + \li In \uicontrol Image, select an image to use as a custom icon for + the element. + + \li Select \uicontrol {Auto sized} to reset the + element to its default size after you changed the element size by dragging its borders. - \li In the \uicontrol Color field, select the color of the model - element. + \li In \uicontrol Color, select the color of the element. - \li In the \uicontrol Role field, select a \e role to make the model + \li In \uicontrol Role, select a \e role to make the model element color lighter, darker, or softer. You can also remove color and draw the element outline or flatten the element by removing gradients. - \li Select the \uicontrol Emphasized check box to draw the model + \li Select \uicontrol Emphasized to draw the model element with a thicker line. - \li In the \uicontrol {Stereotype display} field, select: + \li In \uicontrol {Stereotype display}, select: \list @@ -283,12 +324,12 @@ \list 1 - \li In the \uicontrol Stereotypes field, select the + \li In \uicontrol Stereotypes, select the \e stereotype to apply to the relation. - \li In the \uicontrol Name field, give a name to the relation. + \li In \uicontrol Name, give a name to the relation. - \li In the \uicontrol Direction field, you can change the direction + \li In \uicontrol Direction, change the direction of the connection or make it bidirectional. \endlist @@ -321,11 +362,12 @@ Therefore, you can assign a \l{Keyboard Shortcuts}{keyboard shortcut} to the wizard and use it to create and open models with empty diagrams. - To create a scratch model, select \uicontrol File > \uicontrol {New File} > - \uicontrol Modeling > \uicontrol {Scratch Model} > \uicontrol Choose. + To create a scratch model, go to \uicontrol File > \uicontrol {New File} > + \uicontrol Modeling > \uicontrol {Scratch Model}, and then select + \uicontrol Choose. - \sa {Create class diagrams}, {Create component diagrams}, - {Create package diagrams}, {Model Editor} + \sa {Create Models and Diagrams}{How To: Create Models and Diagrams}, + {Model Editor} */ /*! @@ -336,27 +378,27 @@ \title Create package diagrams - You can create UML-style models that contain \e {package diagrams}. + Create UML-style models that contain \e {package diagrams}. They show packages and their relationships to visualize how the system is packaged. - You can add nested package elements to a package diagram. The depth of the + Add nested package elements to a package diagram. The depth of the elements in the diagram corresponds to the depth of the structured model. Elements stacked on other elements of the same type are automatically drawn in a darker shade of the selected color. - \image qtcreator-modeleditor-packages.png {Package diagram in the model editor} + \image qtcreator-modeleditor-packages.webp {Package diagram in the model editor} \caption A package diagram in the model editor. - Right-click a package to open a context menu, where you can select + Right-click a package to open a context menu, and select \uicontrol {Create Diagram} to create a new package diagram within the - model. You can drag items from the element tree to the diagram. + model. Drag items from the element tree to the diagram. To update the include dependencies of the package, select \uicontrol {Update Include Dependencies}. - \sa {Create class diagrams},{Create component diagrams}, - {Create UML-style models}, {Model Editor} + \sa {Create Models and Diagrams}{How To: Create Models and Diagrams}, + {Model Editor} */ /*! @@ -367,11 +409,11 @@ \title Create class diagrams - You can create UML-style models that contain \e {class diagrams}. They show + Create UML-style models that contain \e {class diagrams}. They show classes, dependencies, inheritance, associations, aggregation, and composition to visualize a system in an object-oriented way. - \image qtcreator-modeleditor-classes.png {Class diagram in the model editor} + \image qtcreator-modeleditor-classes.webp {Class diagram in the model editor} \caption A class diagram in the model editor. To create class diagrams: @@ -387,10 +429,10 @@ \list - \li In the \uicontrol Template field, specify the template to + \li In \uicontrol Template, specify the template to use. - \li In the \uicontrol {Template display} field, select the + \li In \uicontrol {Template display}, select the display format for the template: \list @@ -409,15 +451,15 @@ \endlist - \li In the \uicontrol Members field, specify members for the + \li In \uicontrol Members, specify members for the class, as described in \l {Specify members}. \li Select \uicontrol {Clean Up} to format the contents of - the \uicontrol Members field depending on their visibility + \uicontrol Members depending on their visibility (private, protected, public) and following the rules set for whitespace, line breaks, and so on. - \li Select the \uicontrol {Show members} check box to show + \li Select \uicontrol {Show members} to show the members in the diagram. \endlist @@ -431,17 +473,36 @@ \section1 Add relations Elements in class diagrams can have the following types of relations: - inheritance, association, and dependency. The end points of association - relations can have the following properties: role, cardinality, navigable, - and relationship. + + \list + \li Aggregation + \li Association + \li Composition + \li Dependency + \li Inheritance + \endlist + + The end points of association relations can have the following properties: + + \list + \li Cardinality + \li Navigable + \li Role + \li Relationship + \endlist + + \section2 Create self-relations To create self-relations, start creating a new association and press \key Shift to create a new \e {sampling point} while dragging the association. Create another sampling point and drag the association to the same class. - To add more points, press \key Shift and click a relation. To delete a - point, press \key Ctrl and click a point. + \section2 Add and delete points + + To add more points, press \key Shift and click a relation. + + To delete a point, press \key Ctrl and click a point. \section2 Specify members @@ -490,8 +551,8 @@ \endlist - \sa {Create component diagrams}, {Create package diagrams}, - {Create UML-style models}, {Model Editor} + \sa {Create Models and Diagrams}{How To: Create Models and Diagrams}, + {Model Editor} */ /*! @@ -502,14 +563,19 @@ \title Create component diagrams - You can create UML-style models that contain \e {component diagrams}. - They epresent a set of components and their relationships, and show the + Create UML-style models that contain \e {component diagrams}. + They represent a set of components and their relationships, and show the implementation of a system. - You can add source code components, such as libraries, databases, programs, - and architectural layers to a component diagram. To add components to - component diagrams, drag source code from \uicontrol Projects to - the editor, and select \uicontrol {Add Component}. + Add source code components, such as libraries, databases, programs, + and architectural layers to a component diagram. + + To add components to component diagrams: + + \list 1 + \li Drag source code from \uicontrol Projects to the editor. + \li Select \uicontrol {Add Component}. + \endlist \image qtcreator-model-editor-component-diagram.webp {Component diagram in the model editor} \caption A component diagram in the model editor. @@ -518,6 +584,6 @@ the component in the editor or select \uicontrol {Show Definition} in the context menu. - \sa {Create class diagrams}, {Create package diagrams}, - {Create UML-style models}, {Model Editor} + \sa {Create Models and Diagrams}{How To: Create Models and Diagrams}, + {Model Editor} */ diff --git a/doc/qtcreator/src/editors/creator-only/creator-scxml.qdoc b/doc/qtcreator/src/editors/creator-only/creator-scxml.qdoc index 80ffbe8ab2b..1600c557a95 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-scxml.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-scxml.qdoc @@ -233,6 +233,9 @@ The editor center-aligns transition labels, but you can drag them to other positions. + Conditions on transitions appear below the transition lines within square + brackets ([]). + To add edge points to transitions, select a transition line. You can add only two edge points for each line. The editor automatically removes unnecessary edge points. To remove the selected edge point, select diff --git a/doc/qtcreator/src/howto/creator-only/creator-how-to-install.qdoc b/doc/qtcreator/src/howto/creator-only/creator-how-to-install.qdoc index d19c3e9d8fb..6395da3c317 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-how-to-install.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-how-to-install.qdoc @@ -41,7 +41,7 @@ instructions to install \QC. To develop with Qt, you also need a Qt version. You can register Qt versions - in the stand-alone \QC to use them in \l{kits-tab}{kits}. + in the stand-alone \QC to use them in \l{Kits}{kits}. \section2 Use package managers @@ -89,5 +89,5 @@ {Compiling \QC} and \l{https://wiki.qt.io/Building_Qt_Creator_from_Git} {Building Qt Creator from Git}. - \sa {Register installed Qt versions} + \sa {Manage Kits}{How To: Manage Kits}, {Register installed Qt versions} */ diff --git a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc index 967031f69be..8685f850ce4 100644 --- a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc +++ b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc @@ -53,8 +53,8 @@ This also enables code completion of QML code and removes error messages. The following example illustrates how to specify the import path for qmake - projects so that it works when switching between build and run kits for - different target platforms: + projects so that it works when switching between build and run \l{Kits}{kits} + for different target platforms: \code TEMPNAME = $${QMAKE_QMAKE} diff --git a/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc b/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc index f872adc77e6..f3828018149 100644 --- a/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc +++ b/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc @@ -10,7 +10,7 @@ \brief Build and clean steps for Incredibuild. - Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in + Specify build settings for the selected \l{Kits}{kit} in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build > \uicontrol {Build Settings}. diff --git a/doc/qtcreator/src/ios/creator-ios-dev.qdoc b/doc/qtcreator/src/ios/creator-ios-dev.qdoc index f02397f149f..b6c8d53cde9 100644 --- a/doc/qtcreator/src/ios/creator-ios-dev.qdoc +++ b/doc/qtcreator/src/ios/creator-ios-dev.qdoc @@ -147,7 +147,8 @@ If the current device state is \uicontrol Connected, (the traffic light icon is orange), you need to configure the device using Xcode. - \sa {iOS}{How To: Develop for iOS}, {Developing for iOS} + \sa {Activate kits for a project}, {iOS}{How To: Develop for iOS}, + {Developing for iOS} */ /*! diff --git a/doc/qtcreator/src/linux-mobile/creator-projects-how-to-run-generic-linux.qdoc b/doc/qtcreator/src/linux-mobile/creator-projects-how-to-run-generic-linux.qdoc index d39f924f046..241b0ce2f34 100644 --- a/doc/qtcreator/src/linux-mobile/creator-projects-how-to-run-generic-linux.qdoc +++ b/doc/qtcreator/src/linux-mobile/creator-projects-how-to-run-generic-linux.qdoc @@ -34,6 +34,6 @@ Debugging works transparently if GDB server is installed on the device and it is compatible with the GDB on the host. - \sa {Remote Linux}{How To: Develop for remote Linux}, {Run on many platforms}, {Compilers}, - {Embedded Platforms}, {kit-preferences}{Kits} + \sa {Remote Linux}{How To: Develop for remote Linux}, + {Run on many platforms}, {Compilers}, {Embedded Platforms}, {Kits} */ diff --git a/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc b/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc index a8d3093cfb5..01eb71f171f 100644 --- a/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc +++ b/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc @@ -11,7 +11,7 @@ \brief Settings for running applications on \B2Q devices. - Specify settings for running applications on the \l {kits-tab}{Run device} that + Specify settings for running applications on the \l {Kits}{Run device} that you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run > \uicontrol {Run Settings}. @@ -25,6 +25,6 @@ host and on the device. \sa {\B2Q}{How To: Develop for \B2Q}, {Manage Kits}{How To: Manage Kits}, - {Configure projects for running}, {kits-tab}{Kits}, + {Configure projects for running}, {Kits}, {\B2Q Deploy Configuration} */ diff --git a/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-linux.qdoc b/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-linux.qdoc index adc27d6a93e..37954b8e89a 100644 --- a/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-linux.qdoc +++ b/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-linux.qdoc @@ -11,7 +11,7 @@ \brief Settings for running applications on Linux-based devices. - Specify run settings for the selected \l{glossary-buildandrun-kit}{kit} in + Specify run settings for the selected \l{Kits}{kit} in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run > \uicontrol {Run Settings}. @@ -37,6 +37,6 @@ Select the \uicontrol {Forward to local display} check box to show a remotely running X11 client on a local display. - \sa {Activate kits for a project}, {Configure projects for running}, {kits-tab}{Kits}, + \sa {Activate kits for a project}, {Configure projects for running}, {Kits}, {Remote Linux}{How To: Develop for remote Linux} */ diff --git a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc index 19ba26bdca4..f49e375f617 100644 --- a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc +++ b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc @@ -181,6 +181,7 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-mcu + \ingroup creator-how-to-manage-kits \title Manage MCU Kits @@ -209,7 +210,7 @@ software required for MCU development with the current kit. \sa {Enable and disable plugins}, {MCUs}{How To: Develop for MCUs}, - {Developing for MCUs} + {Manage Kits}{How To: Manage Kits}, {Developing for MCUs} */ /*! diff --git a/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc b/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc index d0ada5efced..5132adf9dc0 100644 --- a/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc +++ b/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc @@ -10,7 +10,7 @@ \brief Settings for building applications with Meson. - Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in + Specify build settings for the selected \l{Kits}{kit} in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build > \uicontrol {Build Settings}. diff --git a/doc/qtcreator/src/meson/creator-projects-meson.qdoc b/doc/qtcreator/src/meson/creator-projects-meson.qdoc index a6418fcc663..4c71fc7e5e8 100644 --- a/doc/qtcreator/src/meson/creator-projects-meson.qdoc +++ b/doc/qtcreator/src/meson/creator-projects-meson.qdoc @@ -21,7 +21,7 @@ \QC automatically detects the Meson and Ninja executables specified in the \c PATH. You can add paths to other Meson or Ninja executables and use them - in different build and run \l{glossary-buildandrun-kit}{kits}. + in different build and run \l{Kits}{kits}. \note Enable the Meson plugin to use it. @@ -54,7 +54,7 @@ \image qtcreator-kits-meson.png "Setting Meson executable in Kit preferences" - For more information, see \l {kits-tab}{Kits}. + For more information, see \l {Kits}. \section1 Editing Meson Build Descriptions diff --git a/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc b/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc index b2ea02c1280..3e7f74ae75e 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc @@ -20,7 +20,7 @@ However, if you install the stand-alone \QC package, build \QC from sources, or install several Qt versions, you may need to tell \QC where to find the Qt versions and compilers by adding the paths to them and by creating - \l{glossary-buildandrun-kit}{kits} that use them. + \l{Kits}{kits} that use them. To make \QC behave more like your favorite code editor or IDE, change the preferences for keyboard shortcuts, color schemes, generic diff --git a/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc b/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc index e735c95adf0..3504fd1c33d 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc @@ -50,7 +50,7 @@ \li \b {\l{Building and Running an Example}} To check that \l{https://www.qt.io/download-qt-installer} - {\QOI} created \l{glossary-buildandrun-kit} + {\QOI} created \l{Kits} {build and run kits}, open an example application and run it. If you have not done so before, go to \l{Building and Running an Example}. diff --git a/doc/qtcreator/src/overview/creator-only/creator-keyboard-shortcuts.qdoc b/doc/qtcreator/src/overview/creator-only/creator-keyboard-shortcuts.qdoc index 1dc1fb0d6b1..16d45c42278 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-keyboard-shortcuts.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-keyboard-shortcuts.qdoc @@ -570,7 +570,7 @@ \li Open project \li Ctrl+Shift+O \row - \li Select the \l{glossary-buildandrun-kit}{kit} to build and run your project with + \li Select the \l{Kits}{kit} to build and run your project with \li Ctrl+T \row \li Run diff --git a/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc b/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc index 127a59cf0d1..d7afb4ee549 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc @@ -181,7 +181,7 @@ Run and deploy Qt applications that you build for different target platforms or with different compilers, debuggers, or Qt versions. - \l{glossary-buildandrun-kit}{Kits} define the tools, \l{glossary-device} + \l{Kits} define the tools, \l{glossary-device} {device} type and other settings to use when building and running your project. diff --git a/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc b/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc index 78eb3ecf689..814189ee7b6 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc @@ -11,7 +11,7 @@ \brief Settings for building applications with qmake. - Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} + Specify build settings for the selected \l{Kits}{kit} in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build > \uicontrol {Build Settings}. diff --git a/doc/qtcreator/src/projects/creator-only/creator-how-to-create-compiler-explorer-setup.qdoc b/doc/qtcreator/src/projects/creator-only/creator-how-to-create-compiler-explorer-setup.qdoc index b35df2e6707..a8bc0f11d4b 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-how-to-create-compiler-explorer-setup.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-how-to-create-compiler-explorer-setup.qdoc @@ -9,19 +9,27 @@ \title Create compiler explorer sessions - To create a compiler explorer session for a C++ or Python project: + \note Enable the Compiler Explorer plugin to use it. + + To create a compiler explorer session for a Qt and C++, C++, or Python + project: \list 1 \li Go to \uicontrol File > \uicontrol {New File}. - \li Select \uicontrol {Compiler Explorer} > \uicontrol C++ or - \uicontrol Python > \uicontrol Choose. + \li Select \uicontrol {Compiler Explorer}, and then select one of the + following: + \list + \li \uicontrol {Compiler Explorer C++ Source} + \li \uicontrol {Compiler Explorer Python Source} + \li \uicontrol {Compiler Explorer Qt & C++ Source} + \endlist + \image qtcreator-new-project-compiler-explorer.webp {New File dialog} + \li Select \uicontrol Choose. \li Follow the instructions of the wizard to create an example compiler explorer session as a JSON-based \c .qtce file and to open it. \endlist - \note Enable the Compiler Explorer plugin to use it. - \sa {Create files}, {Enable and disable plugins}, {Explore compiler code} */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc b/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc index 60f0d3bb0b1..a5037be5b91 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc @@ -39,5 +39,5 @@ To remove the selected property, select \uicontrol Remove. - \sa {Activate kits for a project}, {Add kits}, {kits-tab}{Kits} + \sa {Activate kits for a project}, {Add kits}, {Kits} */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc index 600b8f30791..eb8e2a14ee1 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc @@ -51,7 +51,7 @@ (4) to list examples that you can run on \B2Q devices. \li In \uicontrol {Configure Project}, select - \l{glossary-buildandrun-kit}{kits} for building the example for the + \l{Kits}{kits} for building the example for the target platforms. \image qtcreator-configure-project.webp {Configure Project view} diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc index 7cfb8f86e0f..a0189b216ab 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc @@ -16,7 +16,7 @@ \title Build for many platforms You can build applications for many target platforms, or using different - compilers, debuggers or Qt versions. \l{glossary-buildandrun-kit}{Kits} + compilers, debuggers or Qt versions. \l{Kits} define the tools, \l{glossary-device}{device} type, and other settings to use. By default, when you run the application, you @@ -34,9 +34,8 @@ \list 1 \li Select the \uicontrol {Build and Run Kit Selector} icon or go to - \uicontrol Build > \uicontrol {Open Build and Run Kit Selector} to select the - build and run \l{glossary-buildandrun-kit}{kit} or an - \l{Manage AVDs}{Android device}. + \uicontrol Build > \uicontrol {Open Build and Run Kit Selector} to + select the build and run kit or an \l{Manage AVDs}{Android device}. \image qtcreator-kit-selector.webp {Kit selector} diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc index 42cc51bef98..e068ec86d4f 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc @@ -18,7 +18,7 @@ You can develop Qt applications on several 32-bit and 64-bit platforms. Usually, you can build Qt applications on each platform with GCC, a vendor-supplied compiler, or a third party compiler. In \QC, a - \l{glossary-buildandrun-kit}{kit} specifies the compiler and other + \l{Kits}{kit} specifies the compiler and other necessary tools for building an application for and running it on a particular platform. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc index 5388f7c6e5d..92858ff6078 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc @@ -63,7 +63,7 @@ To test applications on \l{glossary-device}{devices}, you can install toolchains for mobile and embedded development as part of Qt distributions. - The installers create \l{glossary-buildandrun-kit}{kits} and specify build + The installers create \l{Kits}{kits} and specify build and run settings for the installed device types. However, you might need to install and configure some additional software on the devices to be able to \l{Develop for Devices}{connect} to them from the computer. @@ -81,7 +81,7 @@ To create a new project, select \uicontrol File > \uicontrol{New Project} and select the type of your project. The contents of the wizard dialogs depend - on the project type and the \l{glossary-buildandrun-kit}{kits} that you + on the project type and the \l{Kits}{kits} that you select in the \uicontrol {Kit Selection} dialog. Follow the instructions of the wizard. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc index 59db5927051..a99de7c59ab 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc @@ -21,7 +21,7 @@ debugger of the low level virtual machine (LLVM) project, LLDB. The debugger plugin automatically selects a suitable native debugger for - each \l{glossary-buildandrun-kit}{kit} from the ones found on your system. + each \l{Kits}{kit} from the ones found on your system. To override this choice, select \preferences > \uicontrol Kits. To add debuggers: diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc index 1e2b8ed818a..1237c748443 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc @@ -45,7 +45,7 @@ \li Select \uicontrol Add to start from an empty kit or \uicontrol Clone to clone the selected kit and edit its preferences. \image qtcreator-kits.png - \li Set \l{kits-tab}{kit preferences} according to the build system and + \li Set \l{Kits}{kit preferences} according to the build system and device type. \li Select \uicontrol OK to create the kit. @@ -58,8 +58,7 @@ choose the kit to use. To set the selected kit as the default kit, select \uicontrol {Make Default}. - \sa {Activate kits for a project}, {Add debuggers}, {Add Qt versions}, - {Open projects}, {Compilers}, {kits-tab}{Kits} + \sa {Manage Kits}{How To: Manage Kits}, {Compilers}, {Kits} */ /*! @@ -214,7 +213,6 @@ \uicontrol Manage to add installed Ninja tools to the list. \endtable - \sa {Activate kits for a project}, {Open projects}, {Add CMake Tools}, - {Add compilers}, {Add debuggers}, {Add kits}, {Add Qt versions}, + \sa {Manage Kits}{How To: Manage Kits}, {Add CMake Tools}, {Edit Qbs profiles} */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc index c85da814661..a01c06b6559 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc @@ -20,7 +20,7 @@ \note Enable the Nim plugin to use Nimble and Nim. In addition, you have to download and install Nim and set up a - \l {glossary-buildandrun-kit}{kit} that contains the Nim compiler. + \l {Kits}{kit} that contains the Nim compiler. You can use wizards to create Nim and Nimble projects. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc index 66b69a573fe..67fc416ee7a 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc @@ -13,6 +13,7 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-projects-configure + \ingroup creator-how-to-manage-kits \title Open projects @@ -64,7 +65,7 @@ \list 1 \li In \uicontrol {Configure Project}, select - \l{glossary-buildandrun-kit}{kits} for building + \l{Kits}{kits} for building and running your project. \image qtcreator-configure-project.webp {Configure Project view} \li Select \uicontrol {Configure Project}. @@ -112,5 +113,5 @@ later. Select the \inlineimage icons/pin.png (\uicontrol Pin) button to pin the progress bar back to the toggle button. - \sa {Activate kits for a project}, {Add kits}, {kits-tab}{Kits}, + \sa {Manage Kits}{How To: Manage Kits}, {Kits}, */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc index b177af0b8d5..0c33472862d 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc @@ -11,7 +11,7 @@ \brief Settings for building applications with Qbs. - Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in + Specify build settings for the selected \l{Kits}{kit} in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build > \uicontrol {Build Settings}. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc index b3ababb5fbf..644b30ac3b1 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc @@ -16,7 +16,7 @@ \title Configure projects for building - Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in + Specify build settings for the selected \l{Kits}{kit} in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build > \uicontrol {Build Settings}. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc index 3f8e93f1421..75544e47e80 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc @@ -16,7 +16,7 @@ When you install Qt for a development or target platform, such as Linux, \macos, Windows, Android or QNX, \l{https://www.qt.io/download-qt-installer} - {\QOI} creates \l{glossary-buildandrun-kit}{kits} for the development targets. + {\QOI} creates \l{Kits}{kits} for the development targets. Select the kits to use for a project in the \uicontrol {Configure Projects} view when you open the project for the first time. At least one kit must be @@ -65,7 +65,7 @@ \section1 Specifying Run Settings The run settings to specify depend on the type of the project and on the - \l{kits-tab}{Run device} that you select for the kit. + \l{Kits}{Run device} that you select for the kit. \QC automatically creates deploy and run configurations for your project. @@ -112,6 +112,7 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-projects-configure + \ingroup creator-how-to-manage-kits \title Activate kits for a project @@ -175,5 +176,5 @@ might still see them listed for existing projects. You can copy the build, deploy, and run steps from them to other kits. - \sa {Add kits}, {Configuring Projects}, {kits-tab}{Kits} + \sa {Manage Kits}{How To: Manage Kits}, {Configuring Projects}, {Kits} */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdoc index 99802a720b6..9c1463f2d9b 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdoc @@ -9,7 +9,7 @@ \title Specify Valgrind settings for a project - Specify settings for running applications on the \l {kits-tab}{Run device} that + Specify settings for running applications on the \l {Kits}{Run device} that you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run > \uicontrol {Run Settings}. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdoc index b0609ab7716..486b8b8c4c5 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdoc @@ -10,7 +10,7 @@ \title Enable debugging - Specify settings for running applications on the \l {kits-tab}{Run device} that + Specify settings for running applications on the \l {Kits}{Run device} that you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run > \uicontrol {Run Settings}. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc index 72085701e16..35188f5ce94 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc @@ -11,7 +11,7 @@ \brief Settings for running applications on desktop device types. - Specify settings for running applications on the \l {kits-tab}{Run device} that + Specify settings for running applications on the \l {Kits}{Run device} that you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run > \uicontrol {Run Settings}. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc index bf816f43511..f989924d560 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc @@ -16,7 +16,7 @@ \title Configure projects for running - Specify settings for running applications on the \l {kits-tab}{Run device} that + Specify settings for running applications on the \l {Kits}{Run device} that you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run > \uicontrol {Run Settings}. diff --git a/doc/qtcreator/src/projects/creator-projects-running.qdoc b/doc/qtcreator/src/projects/creator-projects-running.qdoc index 1dd25de23a0..f83a9c00ba7 100644 --- a/doc/qtcreator/src/projects/creator-projects-running.qdoc +++ b/doc/qtcreator/src/projects/creator-projects-running.qdoc @@ -28,7 +28,7 @@ \li Select the \uicontrol {Build and Run Kit Selector} icon or go to \uicontrol Build > \uicontrol {Open Build and Run Kit Selector} to select the - build and run \l{glossary-buildandrun-kit}{kit}. + build and run \l{Kits}{kit}. \image qtcreator-kit-selector.webp {Kit selector} diff --git a/doc/qtcreator/src/python/creator-python-development.qdoc b/doc/qtcreator/src/python/creator-python-development.qdoc index 8978c09d609..ba8053c3d3d 100644 --- a/doc/qtcreator/src/python/creator-python-development.qdoc +++ b/doc/qtcreator/src/python/creator-python-development.qdoc @@ -74,7 +74,7 @@ \section1 Select the Python version - The \l{kits-tab}{kits} you select for the project in \uicontrol Projects > + The \l{Kits}{kits} you select for the project in \uicontrol Projects > \uicontrol {Build & Run} set the Python version to use. The \l {Edit Mode}{Edit mode} toolbar shows the current Python version. diff --git a/doc/qtcreator/src/python/creator-python-run-settings.qdoc b/doc/qtcreator/src/python/creator-python-run-settings.qdoc index 6c6c3b4fe2b..07cf625450d 100644 --- a/doc/qtcreator/src/python/creator-python-run-settings.qdoc +++ b/doc/qtcreator/src/python/creator-python-run-settings.qdoc @@ -31,7 +31,7 @@ \brief Settings for running Qt for Python applications. - Specify settings for running applications on the \l {kits-tab}{Run device} that + Specify settings for running applications on the \l {Kits}{Run device} that you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run > \uicontrol {Run Settings}. diff --git a/doc/qtcreator/src/qnx/creator-projects-settings-run-qnx.qdoc b/doc/qtcreator/src/qnx/creator-projects-settings-run-qnx.qdoc index 4e39314d8f5..edd78c0a193 100644 --- a/doc/qtcreator/src/qnx/creator-projects-settings-run-qnx.qdoc +++ b/doc/qtcreator/src/qnx/creator-projects-settings-run-qnx.qdoc @@ -11,7 +11,7 @@ \brief Settings for running applications on Linux-based devices. - Specify settings for running applications on the \l {kits-tab}{Run device} that + Specify settings for running applications on the \l {Kits}{Run device} that you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run > \uicontrol {Run Settings}. diff --git a/doc/qtcreator/src/qtquick/creator-only/creator-projects-settings-run-qtquick.qdoc b/doc/qtcreator/src/qtquick/creator-only/creator-projects-settings-run-qtquick.qdoc index 3f2ee989012..1d7be468c7b 100644 --- a/doc/qtcreator/src/qtquick/creator-only/creator-projects-settings-run-qtquick.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/creator-projects-settings-run-qtquick.qdoc @@ -11,11 +11,11 @@ \brief Settings for running Qt Quick UI Prototype projects (.qmlproject). - Specify settings for running applications on the \l {kits-tab}{Run device} that + Specify settings for running applications on the \l {Kits}{Run device} that you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run > \uicontrol {Run Settings}. - \note Select the \uicontrol Desktop device type for the \l{kits-tab}{Run device} + \note Select the \uicontrol Desktop device type for the \l{Kits}{Run device} in the kit. \image qtquick-ui-prototype-run-settings.webp {Run Settings for a Qt Quick UI Prototype project} @@ -42,5 +42,5 @@ \endtable \sa {Create Qt Quick UI Prototypes}, {Activate kits for a project}, - {Configure projects for running}, {kits-tab}{Kits} + {Configure projects for running}, {Kits} */ diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc index 0fbb4fdea07..f7181c59cf1 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc @@ -76,12 +76,12 @@ \li Select \uicontrol Next to open the \uicontrol {Kit Selection} dialog. - \li Select \l{glossary-buildandrun-kit}{kits} for the platforms that + \li Select \l{Kits}{kits} for the platforms that you want to build the application for. \note Kits are listed if they have been specified in \preferences > \uicontrol Kits. - For more information, see \l {Add kits} and \l {kits-tab}{Kits}. + For more information, see \l {Add kits} and \l {Kits}. \li Select \uicontrol Next to open the \uicontrol {Project Management} dialog. @@ -161,12 +161,11 @@ \li Select \uicontrol Next to open the \uicontrol {Kit Selection} dialog. - \li Select \l{glossary-buildandrun-kit}{kits} for the platforms that + \li Select \l{Kits}{kits} for the platforms that you want to build the application for. \note Kits are listed if they have been specified in \preferences > \uicontrol Kits. - For more information, see \l {Add kits} and \l {kits-tab}{Kits}. \li Select \uicontrol Next to open the \uicontrol {Project Management} dialog. @@ -197,5 +196,6 @@ To use JavaScript and image files in the application, copy them to the project folder. - \sa {Create Qt Quick Applications}, {Creating Projects} + \sa {Create Qt Quick Applications}, {Manage Kits}{How To: Manage Kits}, + {Creating Projects} */ diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc b/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc index be0c55516a9..22d887c161c 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc @@ -37,14 +37,14 @@ \li Select \uicontrol Next to open the \uicontrol {Kit Selection} dialog. - \li Select Qt 6.4 or later \l{glossary-buildandrun-kit}{kits} for the + \li Select Qt 6.4 or later \l{Kits}{kits} for the platforms that you want to build the application for. To build applications for mobile devices, select kits also for Android and iOS. \note The list shows kits that you specify in \preferences > \uicontrol Kits. - For more information, see \l {Add kits} and \l {kits-tab}{Kits}. + For more information, see \l {Add kits} and \l {Kits}. \li Select \uicontrol Next to open the \uicontrol {Project Management} dialog. diff --git a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc index b22bd5be5e7..eb74c5b547d 100644 --- a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc @@ -37,7 +37,7 @@ \li Set up QML debugging for the project. For more information, see \l{Setting Up QML Debugging}. \if defined(qtcreator) - \li In the \uicontrol Projects mode, select a \l{glossary-buildandrun-kit} + \li In the \uicontrol Projects mode, select a \l{Kits} {kit} with Qt version 4.7.4 or later. \endif \note To profile applications on \l{glossary-device}{devices}, you diff --git a/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc b/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc index 0381320085f..5116000256c 100644 --- a/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc +++ b/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc @@ -294,6 +294,6 @@ \sa {View output} \if defined(qtcreator) - \sa {Add custom output parsers} + \sa {Add custom output parsers}, {Kits} \endif */ diff --git a/doc/qtcreator/src/user-interface/creator-ui.qdoc b/doc/qtcreator/src/user-interface/creator-ui.qdoc index 9794667f5b3..b6a4686f473 100644 --- a/doc/qtcreator/src/user-interface/creator-ui.qdoc +++ b/doc/qtcreator/src/user-interface/creator-ui.qdoc @@ -33,7 +33,7 @@ \row \li \inlineimage numbers/02.png \li Kit selector - \li Select the appropriate \l{glossary-buildandrun-kit}{kit} for building + \li Select the appropriate \l{Kits}{kit} for building the project and running it on particular hardware. \li \l{Activate kits for a project} \row diff --git a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc index 8f744bced05..4596d46da2e 100644 --- a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc +++ b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc @@ -76,7 +76,7 @@ \image qtcreator-new-project-qt-versions-qt-gui.png {Kit Selection dialog} - \li Select build and run \l{glossary-buildandrun-kit}{kits} for your + \li Select build and run \l{Kits}{kits} for your project. \li Select \uicontrol Next or \uicontrol Continue to open the diff --git a/doc/qtcreatordev/examples/exampleplugin/CMakeLists.txt b/doc/qtcreatordev/examples/exampleplugin/CMakeLists.txt index 65fba000893..d2c47e4dd8c 100644 --- a/doc/qtcreatordev/examples/exampleplugin/CMakeLists.txt +++ b/doc/qtcreatordev/examples/exampleplugin/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) #! [1] # Remove when sharing with others. diff --git a/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein b/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein index 32d10990aaa..c7f4c18cf63 100644 --- a/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein +++ b/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein @@ -3,7 +3,10 @@ org.qt-project.qtcreator.desktop Qt Creator - Provides a cross-platform, complete integrated development environment (IDE) for application developers to create applications for multiple platforms and devices + + Qt Project + + Cross-platform integrated development environment (IDE) CC0-1.0 GPL-3.0 @@ -23,16 +26,27 @@ newcomers to Qt.

+ org.qt-project.qtcreator.desktop https://www.qt.io/ide/ Qt + + Application development life-cycle + https://doc.qt.io/qtcreator/images/qt-app-dev-flow.webp + + Overview https://doc.qt.io/qtcreator/images/qtcreator-breakdown.png - https://doc.qt.io/qtcreator/images/qtcreator-gs-build-example-open.png + Examples + https://doc.qt.io/qtcreator/images/qtcreator-examples-open.webp + + + Code editor + https://doc.qt.io/qtcreator/images/qtcreator-spliteditorview.png @@ -40,6 +54,7 @@

Qt Creator v${IDE_VERSION_DISPLAY}

+ https://github.com/qt-creator/qt-creator/releases/tag/v${IDE_VERSION_DISPLAY}
diff --git a/share/qtcreator/cplusplus/examples/CMakeLists.txt b/share/qtcreator/cplusplus/examples/CMakeLists.txt index 7d14eba5b98..5eafcab4e0b 100644 --- a/share/qtcreator/cplusplus/examples/CMakeLists.txt +++ b/share/qtcreator/cplusplus/examples/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(examples LANGUAGES CXX) diff --git a/share/qtcreator/debugger/cdbbridge.py b/share/qtcreator/debugger/cdbbridge.py index 7674a37b710..0b53baf1661 100644 --- a/share/qtcreator/debugger/cdbbridge.py +++ b/share/qtcreator/debugger/cdbbridge.py @@ -124,7 +124,7 @@ class Dumper(DumperBase): pass if nativeValue.type().code() == TypeCode.Enum: val.ldisplay = self.enumValue(nativeValue) - elif not nativeValue.type().resolved and nativeValue.type().code() == TypeCode.Struct and not nativeValue.hasChildren(): + elif not nativeValue.type().resolved() and nativeValue.type().code() == TypeCode.Struct and not nativeValue.hasChildren(): val.ldisplay = self.enumValue(nativeValue) val.isBaseClass = val.name == nativeValue.type().name() val.typeid = self.from_native_type(nativeValue.type()) @@ -172,15 +172,17 @@ class Dumper(DumperBase): self.type_name_cache[typeid] = nativeType.name() self.type_code_cache[typeid] = code self.type_target_cache[typeid] = self.typeid_for_string(targetName) - self.type_size_cache[typeid] = nativeType.bitsize() // 8 + if nativeType.resolved(): + self.type_size_cache[typeid] = nativeType.bitsize() // 8 return typeid code = TypeCode.Struct self.type_name_cache[typeid] = nativeType.name() - self.type_size_cache[typeid] = nativeType.bitsize() // 8 + if nativeType.resolved(): + self.type_size_cache[typeid] = nativeType.bitsize() // 8 + self.type_modulename_cache[typeid] = nativeType.module() self.type_code_cache[typeid] = code - self.type_modulename_cache[typeid] = nativeType.module() self.type_enum_display_cache[typeid] = lambda intval, addr, form: \ self.nativeTypeEnumDisplay(nativeType, intval, form) return typeid @@ -312,25 +314,6 @@ class Dumper(DumperBase): self.qtDeclarativeHookDataSymbolName = lambda: hookSymbolName return hookSymbolName - def qtNamespace(self): - namespace = '' - qstrdupSymbolName = '*qstrdup' - coreModuleName = self.qtCoreModuleName() - if coreModuleName is not None: - qstrdupSymbolName = '%s!%s' % (coreModuleName, qstrdupSymbolName) - resolved = cdbext.resolveSymbol(qstrdupSymbolName) - if resolved: - name = resolved[0].split('!')[1] - namespaceIndex = name.find('::') - if namespaceIndex > 0: - namespace = name[:namespaceIndex + 2] - self.qtNamespace = lambda: namespace - self.qtCustomEventFunc = self.parseAndEvaluate( - '%s!%sQObject::customEvent' % - (self.qtCoreModuleName(), namespace)).address() - self.qtNamespace = lambda: namespace - return namespace - def extractQtVersion(self): try: qtVersion = self.parseAndEvaluate( @@ -549,7 +532,6 @@ class Dumper(DumperBase): return self.putAddress(value.address()) - self.putField('size', self.type_size(value.typeid)) if typeobj.code == TypeCode.Function: #DumperBase.warn('FUNCTION VALUE: %s' % value) @@ -923,3 +905,12 @@ class Dumper(DumperBase): if self.useDynamicType: val.typeid = self.dynamic_typeid_at_address(val.typeid, address) return val + + def fetchInternalFunctions(self): + coreModuleName = self.qtCoreModuleName() + ns = self.qtNamespace() + if coreModuleName is not None: + self.qtCustomEventFunc = self.parseAndEvaluate( + '%s!%sQObject::customEvent' % + (self.qtCoreModuleName(), ns)).address() + self.fetchInternalFunctions = lambda: None diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 6a232124cbe..33c7eb1a846 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -717,7 +717,7 @@ class DumperBase(): c = ord(item[0]) if c in (45, 46) or (c >= 48 and c < 58): # '-', '.' or digit. if '.' in item: - res.append(float(item)) + self.type_template_arguments_cache[(typeid, idx)] = float(item) else: if item.endswith('l'): item = item[:-1] @@ -2446,7 +2446,7 @@ typename)) self.checkIntType(base) self.checkIntType(n) inner_typeid = self.typeid_for_typish(inner_typish) - inner_size = self.type_size_cache.get(inner_typeid, None) + inner_size = self.type_size(inner_typeid) self.putNumChild(n) #self.warn('ADDRESS: 0x%x INNERSIZE: %s INNERTYPE: %s' % (base, inner_size, inner_typeid)) enc = self.type_encoding_cache.get(inner_typeid, None) @@ -3565,7 +3565,9 @@ typename)) return target_typeid self.type_code_cache[typeid] = TypeCode.Typedef self.type_target_cache[typeid] = target_typeid - self.type_size_cache[typeid] = self.type_size_cache.get(target_typeid, None) + size = self.type_size_cache.get(target_typeid, None) + if size is not None: + self.type_size_cache[typeid] = size return typeid def createType(self, typish, size=None): @@ -3711,7 +3713,7 @@ typename)) typeid = self.cheap_typeid_from_name_nons(typename) if typeid: - size = self.type_size_cache.get(typeid, None) + size = self.type_size(typeid) if size is not None: return size, typeid @@ -3719,7 +3721,7 @@ typename)) self.warn("LOOKUP FIELD TYPE: %s TYPEOBJ: %s" % (typename, typeobj)) if typeobj is not None: typeid = typeobj.typeid - size = self.type_size_cache.get(typeid, None) + size = self.type_size(typeid) if size is not None: return size, typeid @@ -3950,8 +3952,10 @@ typename)) if size is not None: return size - if size is None: - nativeType = self.type_nativetype(typeid) + nativeType = self.type_nativetype(typeid) + if self.isCdb: + size = nativeType.bitsize() // 8 + else: if not self.type_size_cache.get(typeid): self.from_native_type(nativeType) size = self.type_size_cache.get(typeid, None) @@ -4202,7 +4206,7 @@ typename)) res = self.readRawMemory(address, size) if len(res) > 0: return res - raise RuntimeError('CANNOT READ %d BYTES FROM ADDRESS: %s %s' % (size, address)) + raise RuntimeError('CANNOT READ %d BYTES FROM ADDRESS: %s' % (size, address)) def value_display(self, value): type_code = self.type_code(value.typeid) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 1b38223c2e1..004779e06a2 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -235,8 +235,23 @@ def qdump__QStandardItem(d, value): vtable, dptr = value.split('pp') if d.qtVersionAtLeast(0x060000): - model, parent, values, children, rows, cols, item = \ - d.split('pp{@QList<@QStandardItemData>}{@QList<@QStandardItem *>}IIp', dptr) + if d.isCdb: + if d.isDebugBuild is None: + try: + value["d_ptr"] + d.isDebugBuild = True + except Exception: + d.isDebugBuild = False + if d.isDebugBuild: + model = value["d_ptr"]["d"]["model"] + values = value["d_ptr"]["d"]["values"] + children = value["d_ptr"]["d"]["children"] + else: + model, parent, values, children, rows, cols, item = \ + d.split('pp{@QList<@QStandardItemData>}{@QList<@QStandardItem *>}IIp', dptr) + else: + model, parent, values, children, rows, cols, item = \ + d.split('pp{@QList<@QStandardItemData>}{@QList<@QStandardItem *>}IIp', dptr) else: # There used to be a virtual destructor that got removed in # 88b6abcebf29b455438 on Apr 18 17:01:22 2017 @@ -249,7 +264,9 @@ def qdump__QStandardItem(d, value): d.putExpandable() if d.isExpanded(): with Children(d): - d.putSubItem('[model]', d.createValue(model, '@QStandardItemModel')) + if isinstance(model, int): # Used as address. + model = d.createValue(model, '@QStandardItemModel') + d.putSubItem('[model]', model) d.putSubItem('[values]', values) d.putSubItem('[children]', children) @@ -385,9 +402,9 @@ def qdump__QDateTime(d, value): # - [QTime time;] # - - uint mds; # - Spec spec; - dateSize = 8 if qtVersionAtLeast(0x050000) else 4 # Qt5: qint64, Qt4 uint + dateSize = 8 if d.qtVersionAtLeast(0x050000) else 4 # Qt5: qint64, Qt4 uint # 4 byte padding after 4 byte QAtomicInt if we are on 64 bit and QDate is 64 bit - refPlusPadding = 8 if qtVersionAtLeast(0x050000) and d.ptrSize() == 8 else 4 + refPlusPadding = 8 if d.qtVersionAtLeast(0x050000) and d.ptrSize() == 8 else 4 dateBase = base + refPlusPadding timeBase = dateBase + dateSize mds = d.extractInt(timeBase) @@ -1031,14 +1048,14 @@ def qdump__QHostAddress(d, value): else: (ipString, scopeId, a4, pad, a6, protocol, isParsed) \ = d.split('{@QString}{@QString}{@quint32}I16sI{bool}', dd) - elif qtVersionAtLeast(0x050600): # 5.6.0 at f3aabb42 + elif d.qtVersionAtLeast(0x050600): # 5.6.0 at f3aabb42 if d.ptrSize() == 8 or d.isWindowsTarget(): (ipString, scopeId, a4, pad, a6, protocol, isParsed) \ = d.split('{@QString}{@QString}{@quint32}I16sI{bool}', dd) else: (ipString, scopeId, a4, a6, protocol, isParsed) \ = d.split('{@QString}{@QString}{@quint32}16sI{bool}', dd) - elif qtVersionAtLeast(0x050000): # 5.2.0 at 62feb088 + elif d.qtVersionAtLeast(0x050000): # 5.2.0 at 62feb088 (ipString, scopeId, a4, a6, protocol, isParsed) \ = d.split('{@QString}{@QString}{@quint32}16sI{bool}', dd) else: # 4.8.7 at b05d05f diff --git a/share/qtcreator/templates/wizards/autotest/files/tst.txt b/share/qtcreator/templates/wizards/autotest/files/tst.txt index f0eeb813392..18653bdc32c 100644 --- a/share/qtcreator/templates/wizards/autotest/files/tst.txt +++ b/share/qtcreator/templates/wizards/autotest/files/tst.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(%{TestCaseName} LANGUAGES CXX) diff --git a/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt b/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt index 0e923c87945..b411048ef28 100644 --- a/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(%{ProjectName} VERSION 0.1 LANGUAGES CXX) diff --git a/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt index a6f956127dd..d548d199a3c 100644 --- a/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.14) +cmake_minimum_required(VERSION 3.16) project(%{ProjectName} LANGUAGES CXX) diff --git a/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt index 4391af9678c..ef67bd5f7ad 100644 --- a/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.14) +cmake_minimum_required(VERSION 3.16) project(%{ProjectName} LANGUAGES CXX) diff --git a/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt index 1a0a570e66f..bc89ded9d0b 100644 --- a/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(%{ProjectName} LANGUAGES C) diff --git a/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt index df5ef8a5cce..e8ba55ff43d 100644 --- a/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(%{ProjectName} LANGUAGES CXX) diff --git a/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt index b7afb831a77..de5e6850c23 100644 --- a/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.14) +cmake_minimum_required(VERSION 3.16) project(%{ProjectName} VERSION 0.1 LANGUAGES CXX) diff --git a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt index 9d854899c36..d2ca81d463b 100644 --- a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(%{ProjectName} VERSION 0.1 LANGUAGES CXX) diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt index be6f16a3fb6..13f9592fba1 100644 --- a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) # Remove when sharing with others. @if %{JS: Util.isDirectory('%{QtCreatorBuild}/Qt Creator.app/Contents/Resources')} diff --git a/src/libs/solutions/tasking/tasktree.cpp b/src/libs/solutions/tasking/tasktree.cpp index 5c1f65e503f..55ae3cfb56a 100644 --- a/src/libs/solutions/tasking/tasktree.cpp +++ b/src/libs/solutions/tasking/tasktree.cpp @@ -677,7 +677,7 @@ private: /*! \typealias CustomTask::TaskDoneHandler - Type alias for \c std::function. + Type alias for \c std::function or DoneResult. The \c TaskDoneHandler is an optional argument of a custom task element's constructor. Any function with the above signature, when passed as a task done handler, @@ -702,6 +702,9 @@ private: the DoneWith argument. When the handler returns the DoneResult value, the task's final result may be tweaked inside the done handler's body by the returned value. + For a \c TaskDoneHandler of the DoneResult type, no additional handling is executed, + and the task finishes unconditionally with the passed value of DoneResult. + \sa CustomTask(), TaskSetupHandler, GroupDoneHandler */ @@ -1056,7 +1059,7 @@ private: /*! \typealias GroupItem::GroupDoneHandler - Type alias for \c std::function. + Type alias for \c std::function or DoneResult. The \c GroupDoneHandler is an argument of the onGroupDone() element. Any function with the above signature, when passed as a group done handler, @@ -1071,6 +1074,10 @@ private: the DoneWith argument. When the handler returns the DoneResult value, the group's final result may be tweaked inside the done handler's body by the returned value. + For a \c GroupDoneHandler of the DoneResult type, no additional handling is executed, + and the group finishes unconditionally with the passed value of DoneResult, + ignoring the group's workflow policy. + \sa onGroupDone(), GroupSetupHandler, CustomTask::TaskDoneHandler */ @@ -1987,23 +1994,24 @@ SetupResult TaskTreePrivate::continueStart(RuntimeContainer *container, SetupRes { const SetupResult groupAction = startAction == SetupResult::Continue ? startChildren(container) : startAction; - if (groupAction != SetupResult::Continue) { - const bool bit = container->updateSuccessBit(groupAction == SetupResult::StopWithSuccess); - RuntimeIteration *parentIteration = container->parentIteration(); - RuntimeTask *parentTask = container->m_parentTask; - QT_CHECK(parentTask); - const bool result = invokeDoneHandler(container, bit ? DoneWith::Success : DoneWith::Error); - if (parentIteration) { - parentIteration->deleteChild(parentTask); - if (!parentIteration->m_container->isStarting()) - childDone(parentIteration, result); - } else { - QT_CHECK(m_runtimeRoot.get() == parentTask); - m_runtimeRoot.reset(); - emitDone(result ? DoneWith::Success : DoneWith::Error); - } + if (groupAction == SetupResult::Continue) + return groupAction; + + const bool bit = container->updateSuccessBit(groupAction == SetupResult::StopWithSuccess); + RuntimeIteration *parentIteration = container->parentIteration(); + RuntimeTask *parentTask = container->m_parentTask; + QT_CHECK(parentTask); + const bool result = invokeDoneHandler(container, bit ? DoneWith::Success : DoneWith::Error); + if (parentIteration) { + parentIteration->deleteChild(parentTask); + if (!parentIteration->m_container->isStarting()) + childDone(parentIteration, result); + } else { + QT_CHECK(m_runtimeRoot.get() == parentTask); + m_runtimeRoot.reset(); + emitDone(result ? DoneWith::Success : DoneWith::Error); } - return groupAction; + return toSetupResult(result); } SetupResult TaskTreePrivate::startChildren(RuntimeContainer *container) @@ -2435,7 +2443,7 @@ bool TaskTreePrivate::invokeDoneHandler(RuntimeTask *node, DoneWith doneWith) \section2 Task's Done Handler When a running task finishes, the task tree invokes an optionally provided done handler. - The handler should always take a \c const \e reference to the associated task class object: + The handler should take a \c const \e reference to the associated task class object: \code const auto onSetup = [](QProcess &process) { diff --git a/src/libs/solutions/tasking/tasktree.h b/src/libs/solutions/tasking/tasktree.h index caedb78c2c8..308069edccf 100644 --- a/src/libs/solutions/tasking/tasktree.h +++ b/src/libs/solutions/tasking/tasktree.h @@ -350,15 +350,19 @@ private: template static GroupDoneHandler wrapGroupDone(Handler &&handler) { + static constexpr bool isDoneResultType = std::is_same_v; // R, V, D stands for: Done[R]esult, [V]oid, [D]oneWith static constexpr bool isRD = isInvocable(); static constexpr bool isR = isInvocable(); static constexpr bool isVD = isInvocable(); static constexpr bool isV = isInvocable(); - static_assert(isRD || isR || isVD || isV, + static_assert(isDoneResultType || isRD || isR || isVD || isV, "Group done handler needs to take (DoneWith) or (void) as an argument and has to " - "return void or DoneResult. The passed handler doesn't fulfill these requirements."); + "return void or DoneResult. Alternatively, it may be of DoneResult type. " + "The passed handler doesn't fulfill these requirements."); return [handler](DoneWith result) { + if constexpr (isDoneResultType) + return handler; if constexpr (isRD) return std::invoke(handler, result); if constexpr (isR) @@ -496,7 +500,8 @@ private: template static InterfaceDoneHandler wrapDone(Handler &&handler) { if constexpr (std::is_same_v) - return {}; // When user passed {} for the done handler. + return {}; // User passed {} for the done handler. + static constexpr bool isDoneResultType = std::is_same_v; // R, V, T, D stands for: Done[R]esult, [V]oid, [T]ask, [D]oneWith static constexpr bool isRTD = isInvocable(); static constexpr bool isRT = isInvocable(); @@ -506,11 +511,14 @@ private: static constexpr bool isVT = isInvocable(); static constexpr bool isVD = isInvocable(); static constexpr bool isV = isInvocable(); - static_assert(isRTD || isRT || isRD || isR || isVTD || isVT || isVD || isV, + static_assert(isDoneResultType || isRTD || isRT || isRD || isR || isVTD || isVT || isVD || isV, "Task done handler needs to take (const Task &, DoneWith), (const Task &), " "(DoneWith) or (void) as arguments and has to return void or DoneResult. " + "Alternatively, it may be of DoneResult type. " "The passed handler doesn't fulfill these requirements."); return [handler](const TaskInterface &taskInterface, DoneWith result) { + if constexpr (isDoneResultType) + return handler; const Adapter &adapter = static_cast(taskInterface); if constexpr (isRTD) return std::invoke(handler, *adapter.task(), result); diff --git a/src/libs/sqlite/CMakeLists.txt b/src/libs/sqlite/CMakeLists.txt index f86f31871a4..e0cf3093142 100644 --- a/src/libs/sqlite/CMakeLists.txt +++ b/src/libs/sqlite/CMakeLists.txt @@ -80,5 +80,7 @@ extend_qtc_library(Sqlite extend_qtc_library(Sqlite CONDITION QTC_STATIC_BUILD - PROPERTIES COMPILE_OPTIONS $,/FIsqlite_static_config.h,-includesqlite_static_config.h> + PROPERTIES + COMPILE_OPTIONS $,/FIsqlite_static_config.h,-includesqlite_static_config.h> + INTERFACE_COMPILE_OPTIONS $,/FI../3rdparty/sqlite/sqlite_static_config.h,-include../3rdparty/sqlite/sqlite_static_config.h> ) diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 5e0918ed70e..05111ef8efa 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -2140,9 +2140,10 @@ void ProcessPrivate::setupDebugLog() static std::atomic_int startCounter = 0; const int currentNumber = startCounter.fetch_add(1); qCDebug(processLog).nospace().noquote() - << "Process " << currentNumber << " starting (" - << qPrintable(blockingMessage(property(QTC_PROCESS_BLOCKING_TYPE))) - << "): " << m_setup.m_commandLine.toUserOutput(); + << "Process " << currentNumber << " starting (" + << qPrintable(blockingMessage(property(QTC_PROCESS_BLOCKING_TYPE))) + << (isMainThread() ? ", main thread" : "") + << "): " << m_setup.m_commandLine.toUserOutput(); setProperty(QTC_PROCESS_NUMBER, currentNumber); }); diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index b5041917b09..9befaba742a 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -676,7 +676,7 @@ void AndroidRunnerWorker::asyncStart() stopOnSuccess, ProcessTask(onPidSetup, onPidDone, CallDoneIf::Success), TimeoutTask([](std::chrono::milliseconds &timeout) { timeout = 200ms; }, - [] { return DoneResult::Error; }) + DoneResult::Error) }.withTimeout(45s), ProcessTask(onUserSetup, onUserDone, CallDoneIf::Success), onGroupDone([pidStorage, this] { onProcessIdChanged(*pidStorage); }) diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp index 27db33e14d2..92f63ea04c7 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp @@ -330,7 +330,7 @@ void CMakeEditorWidget::findLinkAt(const QTextCursor &cursor, if (auto project = ProjectTree::currentProject()) { buffer.replace("${CMAKE_SOURCE_DIR}", project->projectDirectory().path()); - if (auto bs = ProjectTree::currentBuildSystem(); bs->buildConfiguration()) { + if (auto bs = ProjectTree::currentBuildSystem(); bs && bs->buildConfiguration()) { buffer.replace("${CMAKE_BINARY_DIR}", bs->buildConfiguration()->buildDirectory().path()); // Get the path suffix from current source dir to project source dir and apply it diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index 998ccbf7ca8..69511b0fc07 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -211,15 +211,46 @@ FilePaths CMakeProjectImporter::presetCandidates() return candidates; } +class DebuggerCMakeExpander +{ + const PresetsDetails::ConfigurePreset &preset; + const Environment &env; + const FilePath &projectDirectory; + +public: + DebuggerCMakeExpander( + const PresetsDetails::ConfigurePreset &p, const Environment &e, const FilePath &projectDir) + : preset(p) + , env(e) + , projectDirectory(projectDir) + {} + + QString expand(const QString &value) const + { + QString result{value}; + CMakePresets::Macros::expand(preset, env, projectDirectory, result); + return result; + } + + QVariantMap expand(const QVariantMap &map) const + { + QVariantMap result{map}; + for (auto it = result.begin(); it != result.end(); ++it) + if (it->canConvert()) + it->setValue(expand(it->toString())); + return result; + } +}; + static QVariant findOrRegisterDebugger( - Environment &env, const std::optional &vendor, const QString &presetName) + Environment &env, const PresetsDetails::ConfigurePreset &preset, const DebuggerCMakeExpander& expander) { const QString debuggerKey("debugger"); - if (!vendor || !vendor.value().contains(debuggerKey)) + if (!preset.vendor || !preset.vendor.value().contains(debuggerKey)) return {}; - const QVariant debuggerVariant = vendor.value().value(debuggerKey); - FilePath debuggerPath = FilePath::fromUserInput(debuggerVariant.toString()); + const QVariant debuggerVariant = preset.vendor.value().value(debuggerKey); + FilePath debuggerPath = FilePath::fromUserInput(expander.expand(debuggerVariant.toString())); if (!debuggerPath.isEmpty()) { if (debuggerPath.isRelativePath()) debuggerPath = env.searchInPath(debuggerPath.fileName()); @@ -228,7 +259,7 @@ static QVariant findOrRegisterDebugger( DebuggerItem debugger; debugger.setCommand(debuggerPath); debugger.setUnexpandedDisplayName( - mainName.arg(presetName).arg(debuggerPath.completeBaseName())); + mainName.arg(preset.name).arg(debuggerPath.completeBaseName())); debugger.setAutoDetected(false); QString errorMessage; debugger.reinitializeFromFile(&errorMessage, &env); @@ -246,7 +277,7 @@ static QVariant findOrRegisterDebugger( if (!debuggerMap.contains("Id")) debuggerMap.insert("Id", QUuid::createUuid().toString()); - auto store = storeFromMap(debuggerMap); + auto store = storeFromMap(expander.expand(debuggerMap)); DebuggerItem debugger(store); return DebuggerItemManager::registerDebugger(debugger); @@ -883,7 +914,8 @@ QList CMakeProjectImporter::examineDirectory(const FilePath &importPath, data->hasQmlDebugging = CMakeBuildConfiguration::hasQmlDebugging(config); - data->debugger = findOrRegisterDebugger(env, configurePreset.vendor, configurePreset.name); + data->debugger = findOrRegisterDebugger( + env, configurePreset, DebuggerCMakeExpander(configurePreset, env, projectDirectory())); QByteArrayList buildConfigurationTypes = {cache.valueOf("CMAKE_BUILD_TYPE")}; if (buildConfigurationTypes.front().isEmpty()) { diff --git a/src/plugins/coreplugin/welcomepagehelper.cpp b/src/plugins/coreplugin/welcomepagehelper.cpp index 3fc432f7d01..1486ba95ea1 100644 --- a/src/plugins/coreplugin/welcomepagehelper.cpp +++ b/src/plugins/coreplugin/welcomepagehelper.cpp @@ -118,6 +118,10 @@ static const TextFormat &buttonTF(Button::Role role, WidgetState state) static const TextFormat smallLinkHoveredTF {Theme::Token_Text_Accent, smallLinkDefaultTF.uiElement, smallLinkDefaultTF.drawTextFlags}; + static const TextFormat tagDefaultTF + {Theme::Token_Text_Muted, StyleHelper::UiElement::UiElementLabelMedium}; + static const TextFormat tagHoverTF + {Theme::Token_Text_Default, tagDefaultTF.uiElement}; switch (role) { case Button::MediumPrimary: return mediumPrimaryTF; @@ -128,6 +132,8 @@ static const TextFormat &buttonTF(Button::Role role, WidgetState state) : smallListCheckedTF; case Button::SmallLink: return (state == WidgetStateDefault) ? smallLinkDefaultTF : smallLinkHoveredTF; + case Button::Tag: return (state == WidgetStateDefault) ? tagDefaultTF + : tagHoverTF; } return mediumPrimaryTF; } @@ -218,6 +224,13 @@ void Button::paintEvent(QPaintEvent *event) } case SmallLink: break; + case Tag: { + const QBrush fill(hovered ? creatorColor(Theme::Token_Foreground_Subtle) + : QBrush(Qt::NoBrush)); + const QPen outline(hovered ? QPen(Qt::NoPen) : creatorColor(Theme::Token_Stroke_Subtle)); + drawCardBackground(&p, bgR, fill, outline, brRectRounding); + break; + } } if (!m_pixmap.isNull()) { @@ -244,6 +257,10 @@ void Button::setPixmap(const QPixmap &pixmap) void Button::updateMargins() { + if (m_role == Tag) { + setContentsMargins(HPaddingXs, VPaddingXxs, HPaddingXs, VPaddingXxs); + return; + } const bool tokenSizeS = m_role == MediumPrimary || m_role == MediumSecondary || m_role == SmallList || m_role == SmallLink; const int gap = tokenSizeS ? HGapS : HGapXs; diff --git a/src/plugins/coreplugin/welcomepagehelper.h b/src/plugins/coreplugin/welcomepagehelper.h index eb3082129a1..e1c9199cfe4 100644 --- a/src/plugins/coreplugin/welcomepagehelper.h +++ b/src/plugins/coreplugin/welcomepagehelper.h @@ -80,6 +80,7 @@ public: SmallSecondary, SmallList, SmallLink, + Tag, }; explicit Button(const QString &text, Role role, QWidget *parent = nullptr); diff --git a/src/plugins/ios/iosrunner.cpp b/src/plugins/ios/iosrunner.cpp index 1d4bd33aa11..f2b59a46948 100644 --- a/src/plugins/ios/iosrunner.cpp +++ b/src/plugins/ios/iosrunner.cpp @@ -222,11 +222,7 @@ GroupItem DeviceCtlRunner::killProcess(Storage &appInfo) QString::number(appInfo->processIdentifier)}}); return SetupResult::Continue; }; - const auto onDone = [] { - // we tried our best and don't care at this point - return DoneResult::Success; - }; - return ProcessTask(onSetup, onDone); + return ProcessTask(onSetup, DoneResult::Success); // we tried our best and don't care at this point } GroupItem DeviceCtlRunner::launchTask(const QString &bundleIdentifier) diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index c12693e4808..2ec4d41dbf3 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -735,7 +735,7 @@ void Client::openDocument(TextEditor::TextDocument *document) void Client::sendMessage(const JsonRpcMessage &message, SendDocUpdates sendUpdates, Schedule semanticTokensSchedule) { - QScopeGuard guard([responseHandler = message.responseHandler()](){ + QScopeGuard guard([this, responseHandler = message.responseHandler()](){ if (responseHandler) { static ResponseError error; if (!error.isValid()) { @@ -745,7 +745,9 @@ void Client::sendMessage(const JsonRpcMessage &message, SendDocUpdates sendUpdat QJsonObject response; response[idKey] = responseHandler->id; response[errorKey] = QJsonObject(error); - responseHandler->callback(JsonRpcMessage(response)); + QMetaObject::invokeMethod(this, [callback = responseHandler->callback, response](){ + callback(JsonRpcMessage(response)); + }, Qt::QueuedConnection); } }); diff --git a/src/plugins/lua/wizards/plugin/wizard.json b/src/plugins/lua/wizards/plugin/wizard.json index b897f1eb141..a295dc27d45 100644 --- a/src/plugins/lua/wizards/plugin/wizard.json +++ b/src/plugins/lua/wizards/plugin/wizard.json @@ -1,7 +1,7 @@ { "version": 1, "supportedProjectTypes": [ - "Qt4ProjectManager.Qt4Project" + "ProjectExplorer.WorkspaceProject" ], "id": "R.QtCreatorLuaPlugin", "category": "G.Library", @@ -9,11 +9,7 @@ "trDisplayName": "Qt Creator Lua Plugin", "trDisplayCategory": "Library", "iconText": "LuaP", - "featuresRequired": [ - "QtSupport.Wizards.FeatureQt", - "QtSupport.Wizards.FeatureDesktop" - ], - "enabled": "%{JS: value('Plugins').indexOf('CMakeProjectManager') >= 0}", + "featuresRequired": [], "options": [ { "key": "ProjectFile", @@ -26,14 +22,6 @@ { "key": "SrcFileName", "value": "init.lua" - }, - { - "key": "CN", - "value": "%{JS: Cpp.className(value('PluginName') + 'Plugin')}" - }, - { - "key": "HasTranslation", - "value": "%{JS: value('TsFileName') !== ''}" } ], "pages": [ diff --git a/src/plugins/perfprofiler/perfdatareader.cpp b/src/plugins/perfprofiler/perfdatareader.cpp index f5b3c15b10a..5c690e8d276 100644 --- a/src/plugins/perfprofiler/perfdatareader.cpp +++ b/src/plugins/perfprofiler/perfdatareader.cpp @@ -287,7 +287,7 @@ void PerfDataReader::collectArguments(CommandLine *cmd, const QString &exe, cons .arg(qt->pluginPath().nativePath()) .arg(qt->hostBinPath().nativePath()) .arg(qt->qmlPath().nativePath()) - .arg(cmd->executable().osType() == OsTypeWindows ? u';' : u':')); + .arg(cmd->executable().pathListSeparator())); } if (auto toolChain = ToolchainKitAspect::cxxToolchain(kit)) { diff --git a/src/plugins/projectexplorer/projectnodeshelper.h b/src/plugins/projectexplorer/projectnodeshelper.h index 6809622af5b..24edc853165 100644 --- a/src/plugins/projectexplorer/projectnodeshelper.h +++ b/src/plugins/projectexplorer/projectnodeshelper.h @@ -26,9 +26,8 @@ struct DirectoryScanResult Utils::FilePaths subDirectories; }; -template -DirectoryScanResult scanForFiles( - QPromise &promise, +static DirectoryScanResult scanForFiles( + const QFuture &future, const Utils::FilePath &directory, const QDir::Filters &filter, const std::function factory, @@ -38,7 +37,7 @@ DirectoryScanResult scanForFiles( const Utils::FilePaths entries = directory.dirEntries(filter); for (const Utils::FilePath &entry : entries) { - if (promise.isCanceled()) + if (future.isCanceled()) return result; if (Utils::anyOf(versionControls, [entry](const Core::IVersionControl *vc) { @@ -52,7 +51,6 @@ DirectoryScanResult scanForFiles( else if (FileNode *node = factory(entry)) result.nodes.append(node); } - return result; } @@ -65,9 +63,11 @@ QList scanForFilesRecursively( const std::function factory, const QList &versionControls) { + const QFuture future(promise.future()); + QSet visited; const DirectoryScanResult result - = scanForFiles(promise, directory, filter, factory, versionControls); + = scanForFiles(future, directory, filter, factory, versionControls); QList fileNodes = result.nodes; const double progressIncrement = progressRange / static_cast( @@ -86,15 +86,12 @@ QList scanForFilesRecursively( while (!subDirectories.isEmpty()) { using namespace Tasking; - LoopList iterator(subDirectories); + const LoopList iterator(subDirectories); subDirectories.clear(); auto onSetup = [&, iterator](Utils::Async &task) { task.setConcurrentCallData( - [&filter, &factory, &promise, &versionControls, subdir = iterator->first]( - QPromise &p) { - p.addResult(scanForFiles(promise, subdir, filter, factory, versionControls)); - }); + scanForFiles, future, iterator->first, filter, factory, versionControls); }; auto onDone = [&, iterator](const Utils::Async &task) { diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 540e5559de6..11dc5cf9ae8 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -267,6 +267,8 @@ bool QmlJSEditorWidget::isOutlineCursorChangesBlocked() void QmlJSEditorWidget::jumpToOutlineElement(int /*index*/) { + if (!m_outlineCombo) + return; QModelIndex index = m_outlineCombo->view()->currentIndex(); SourceLocation location = m_qmlJsEditorDocument->outlineModel()->sourceLocation(index); @@ -285,6 +287,8 @@ void QmlJSEditorWidget::jumpToOutlineElement(int /*index*/) void QmlJSEditorWidget::updateOutlineIndexNow() { + if (!m_outlineCombo) + return; if (!m_qmlJsEditorDocument->outlineModel()->document()) return; @@ -570,8 +574,19 @@ void QmlJSEditorWidget::createToolBar() connect(this, &QmlJSEditorWidget::cursorPositionChanged, &m_updateOutlineIndexTimer, QOverload<>::of(&QTimer::start)); + connect(this, &QmlJSEditorWidget::toolbarOutlineChanged, + this, &QmlJSEditorWidget::updateOutline); - insertExtraToolBarWidget(TextEditorWidget::Left, m_outlineCombo); + setToolbarOutline(m_outlineCombo); +} + +void QmlJSEditorWidget::updateOutline(QWidget *newOutline) +{ + if (!newOutline) { + createToolBar(); + } else if (newOutline != m_outlineCombo){ + m_outlineCombo = nullptr; + } } class CodeModelInspector : public MemberProcessor diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h index d5279fe78e7..0929fa552a4 100644 --- a/src/plugins/qmljseditor/qmljseditor.h +++ b/src/plugins/qmljseditor/qmljseditor.h @@ -79,6 +79,7 @@ protected: void scrollContentsBy(int dx, int dy) override; void applyFontSettings() override; void createToolBar(); + void updateOutline(QWidget *newOutline); void findLinkAt(const QTextCursor &cursor, const Utils::LinkHandler &processLinkCallback, bool resolveTarget = true, diff --git a/src/plugins/texteditor/colorpreviewhoverhandler.cpp b/src/plugins/texteditor/colorpreviewhoverhandler.cpp index 62c7e1e5b48..fd014e0ad4a 100644 --- a/src/plugins/texteditor/colorpreviewhoverhandler.cpp +++ b/src/plugins/texteditor/colorpreviewhoverhandler.cpp @@ -33,7 +33,12 @@ static QString extractColorString(const QString &s, int pos) QChar c = s[firstPos]; if (c == QLatin1Char('#')) break; - + // color from string literal, i.e "red", 'red'; + // strip leading and trailing quotes + if (c == QLatin1Char('\"') || c == QLatin1Char('\'')) { + firstPos += 1; + break; + } if (c == QLatin1Char(':') && (firstPos > 3) && (s.mid(firstPos-3, 4) == QLatin1String("Qt::"))) { @@ -51,6 +56,8 @@ static QString extractColorString(const QString &s, int pos) return QString(); int lastPos = firstPos + 1; + if (lastPos >= s.length()) + return QString(); do { QChar c = s[lastPos]; if (!(c.isLetterOrNumber() || c == QLatin1Char(':'))) @@ -106,7 +113,7 @@ static QColor checkColorText(const QString &str) return fromEnumString(colorStr); } - return QColor(); + return QColor::fromString(str); } // looks backwards through a string for the opening brace of a function diff --git a/tests/auto/solutions/tasking/tst_tasking.cpp b/tests/auto/solutions/tasking/tst_tasking.cpp index f3d83b4806d..261f0cc5c73 100644 --- a/tests/auto/solutions/tasking/tst_tasking.cpp +++ b/tests/auto/solutions/tasking/tst_tasking.cpp @@ -712,6 +712,60 @@ void tst_Tasking::testTree_data() QTest::newRow("ErrorAndFinishAllAndError") << errorData(WorkflowPolicy::FinishAllAndError); } + { + // These tests ensure that tweaking the done result in group's done handler takes priority + // over the group's workflow policy. In this case the group's workflow policy is ignored. + const auto setupGroup = [=](DoneResult doneResult, WorkflowPolicy policy) { + return Group { + storage, + Group { + workflowPolicy(policy), + onGroupDone([doneResult] { return doneResult; }) + }, + groupDone(0) + }; + }; + + const auto doneData = [storage, setupGroup](WorkflowPolicy policy) { + return TestData{storage, setupGroup(DoneResult::Success, policy), + Log{{0, Handler::GroupSuccess}}, 0, DoneWith::Success, 0}; + }; + const auto errorData = [storage, setupGroup](WorkflowPolicy policy) { + return TestData{storage, setupGroup(DoneResult::Error, policy), + Log{{0, Handler::GroupError}}, 0, DoneWith::Error, 0}; + }; + + QTest::newRow("GroupDoneTweakSuccessWithStopOnError") + << doneData(WorkflowPolicy::StopOnError); + QTest::newRow("GroupDoneTweakSuccessWithContinueOnError") + << doneData(WorkflowPolicy::ContinueOnError); + QTest::newRow("GroupDoneTweakSuccessWithStopOnSuccess") + << doneData(WorkflowPolicy::StopOnSuccess); + QTest::newRow("GroupDoneTweakSuccessWithContinueOnSuccess") + << doneData(WorkflowPolicy::ContinueOnSuccess); + QTest::newRow("GroupDoneTweakSuccessWithStopOnSuccessOrError") + << doneData(WorkflowPolicy::StopOnSuccessOrError); + QTest::newRow("GroupDoneTweakSuccessWithFinishAllAndSuccess") + << doneData(WorkflowPolicy::FinishAllAndSuccess); + QTest::newRow("GroupDoneTweakSuccessWithFinishAllAndError") + << doneData(WorkflowPolicy::FinishAllAndError); + + QTest::newRow("GroupDoneTweakErrorWithStopOnError") + << errorData(WorkflowPolicy::StopOnError); + QTest::newRow("GroupDoneTweakErrorWithContinueOnError") + << errorData(WorkflowPolicy::ContinueOnError); + QTest::newRow("GroupDoneTweakErrorWithStopOnSuccess") + << errorData(WorkflowPolicy::StopOnSuccess); + QTest::newRow("GroupDoneTweakErrorWithContinueOnSuccess") + << errorData(WorkflowPolicy::ContinueOnSuccess); + QTest::newRow("GroupDoneTweakErrorWithStopOnSuccessOrError") + << errorData(WorkflowPolicy::StopOnSuccessOrError); + QTest::newRow("GroupDoneTweakErrorWithFinishAllAndSuccess") + << errorData(WorkflowPolicy::FinishAllAndSuccess); + QTest::newRow("GroupDoneTweakErrorWithFinishAllAndError") + << errorData(WorkflowPolicy::FinishAllAndError); + } + { const Group root { storage, @@ -3120,11 +3174,49 @@ void tst_Tasking::testTree_data() QTest::newRow("ParallelDisorder") << TestData{storage, root, log, 2, DoneWith::Error, 1}; } + { + // This tests ensures the task done handler or onGroupDone accepts the DoneResult as an + // argument. + + const Group groupSuccess { + storage, + Group { + onGroupDone(DoneResult::Success) + }, + groupDone(0) + }; + const Group groupError { + storage, + Group { + onGroupDone(DoneResult::Error) + }, + groupDone(0) + }; + const Group taskSuccess { + storage, + TestTask({}, DoneResult::Success), + groupDone(0) + }; + const Group taskError { + storage, + TestTask({}, DoneResult::Error), + groupDone(0) + }; + + QTest::newRow("DoneResultGroupSuccess") + << TestData{storage, groupSuccess, {{0, Handler::GroupSuccess}}, 0, DoneWith::Success, 0}; + QTest::newRow("DoneResultGroupError") + << TestData{storage, groupError, {{0, Handler::GroupError}}, 0, DoneWith::Error, 0}; + QTest::newRow("DoneResultTaskSuccess") + << TestData{storage, taskSuccess, {{0, Handler::GroupSuccess}}, 1, DoneWith::Success, 1}; + QTest::newRow("DoneResultTaskError") + << TestData{storage, taskError, {{0, Handler::GroupError}}, 1, DoneWith::Error, 1}; + } + // This test checks if storage shadowing works OK. QTest::newRow("StorageShadowing") << storageShadowingData(); } - static QtMessageHandler s_oldMessageHandler = nullptr; static QStringList s_messages; diff --git a/tests/manual/tasking/trafficlight/recipe.cpp b/tests/manual/tasking/trafficlight/recipe.cpp index 6e08874ab64..abc70715364 100644 --- a/tests/manual/tasking/trafficlight/recipe.cpp +++ b/tests/manual/tasking/trafficlight/recipe.cpp @@ -21,7 +21,7 @@ Group recipe(GlueInterface *iface) [iface](Barrier &barrier) { QObject::connect(iface, &GlueInterface::smashed, &barrier, &Barrier::advance); }, - [] { return DoneResult::Error; }), + DoneResult::Error), Forever { TimeoutTask( // "red" state [iface](milliseconds &timeout) { @@ -56,7 +56,7 @@ Group recipe(GlueInterface *iface) [iface](Barrier &barrier) { QObject::connect(iface, &GlueInterface::repaired, &barrier, &Barrier::advance); }, - [] { return DoneResult::Error; }), + DoneResult::Error), Forever { TimeoutTask( // "blinking" state [iface](milliseconds &timeout) { diff --git a/tests/system/suite_debugger/tst_debug_empty_main/test.py b/tests/system/suite_debugger/tst_debug_empty_main/test.py index d62f76cdebf..2d166d2a876 100644 --- a/tests/system/suite_debugger/tst_debug_empty_main/test.py +++ b/tests/system/suite_debugger/tst_debug_empty_main/test.py @@ -91,6 +91,9 @@ def performDebugging(projectName): invokeMenuItem("Debug", "Enable or Disable Breakpoint") clickButton(waitForObject(":*Qt Creator.Start Debugging_Core::Internal::FancyToolButton")) handleDebuggerWarnings(config, isMsvc) - clickButton(waitForObject(":*Qt Creator.Continue_Core::Internal::FancyToolButton")) + continueButtonStr = ":*Qt Creator.Continue_Core::Internal::FancyToolButton" + if test.verify(waitFor(lambda: object.exists(continueButtonStr), 20000), + "Did the debugger stop at the breakpoint as expected?"): + clickButton(waitForObject(continueButtonStr, 1000)) __handleAppOutputWaitForDebuggerFinish__() removeOldBreakpoints()