diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index e1be45d67c6..d695061f95d 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -7,7 +7,7 @@ on: - 'doc/**' env: - QT_VERSION: 6.4.1 + QT_VERSION: 6.4.0 CLANG_VERSION: 15.0.0 ELFUTILS_VERSION: 0.175 CMAKE_VERSION: 3.21.1 diff --git a/cmake/CreatePythonXY.cmake b/cmake/CreatePythonXY.cmake index 8aeeb156cb2..0475b259f68 100644 --- a/cmake/CreatePythonXY.cmake +++ b/cmake/CreatePythonXY.cmake @@ -64,6 +64,7 @@ function(create_python_xy PythonExe PythonZipFilePath) set(ENV{PYTHONOPTIMIZE} "2") execute_process( COMMAND "${PythonExe}" -OO -m compileall "${CMAKE_CURRENT_BINARY_DIR}/python-lib" -b + ${QTC_COMMAND_ERROR_IS_FATAL} ) file(GLOB_RECURSE python_lib_files "${CMAKE_CURRENT_BINARY_DIR}/python-lib/*.py") @@ -75,5 +76,6 @@ function(create_python_xy PythonExe PythonZipFilePath) execute_process( COMMAND ${CMAKE_COMMAND} -E tar cf "${PythonZipFilePath}" . --format=zip WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python-lib/" + ${QTC_COMMAND_ERROR_IS_FATAL} ) endfunction() diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index 52ba2f44026..68461f8bcd6 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -778,14 +778,14 @@ function(add_qtc_executable name) set(_code "${_code} execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\" -delete_rpath \"${_rpath}\" - \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\")" + \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\" ${QTC_COMMAND_ERROR_IS_FATAL})" ) endforeach() foreach(_rpath ${install_rpath}) set(_code "${_code} execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\" -add_rpath \"${_rpath}\" - \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\")" + \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\" ${QTC_COMMAND_ERROR_IS_FATAL})" ) endforeach() install(CODE "${_code}") diff --git a/cmake/QtCreatorAPIInternal.cmake b/cmake/QtCreatorAPIInternal.cmake index 4efb59c988d..ace1f3c8d1c 100644 --- a/cmake/QtCreatorAPIInternal.cmake +++ b/cmake/QtCreatorAPIInternal.cmake @@ -1,3 +1,7 @@ +if (CMAKE_VERSION GREATER_EQUAL 3.19) + set(QTC_COMMAND_ERROR_IS_FATAL COMMAND_ERROR_IS_FATAL ANY) +endif() + if (CMAKE_VERSION VERSION_LESS 3.18) if (CMAKE_CXX_COMPILER_ID STREQUAL GNU) set(BUILD_WITH_PCH OFF CACHE BOOL "" FORCE) diff --git a/cmake/QtCreatorDocumentation.cmake b/cmake/QtCreatorDocumentation.cmake index 49bf3d2d02d..a652d625176 100644 --- a/cmake/QtCreatorDocumentation.cmake +++ b/cmake/QtCreatorDocumentation.cmake @@ -22,7 +22,8 @@ function(qt5_query_qmake) TIMEOUT 10 RESULT_VARIABLE _qmake_result OUTPUT_VARIABLE _qmake_stdout - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_STRIP_TRAILING_WHITESPACE + ${QTC_COMMAND_ERROR_IS_FATAL}) if (NOT "${_qmake_result}" STREQUAL "0") message(FATAL_ERROR "Qmake did not execute successfully: ${_qmake_result}.") diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake index e43674e4a35..602781ca391 100644 --- a/cmake/Utils.cmake +++ b/cmake/Utils.cmake @@ -47,6 +47,7 @@ function(setup_dependencies_component) \"\${_ide_app_target}\" \"${_qmake_binary}\" COMMAND_ECHO STDOUT + \${QTC_COMMAND_ERROR_IS_FATAL} ) " COMPONENT Dependencies diff --git a/coin/instructions/common_environment.yaml b/coin/instructions/common_environment.yaml index 7c6bcfe14c0..5843ca790b0 100644 --- a/coin/instructions/common_environment.yaml +++ b/coin/instructions/common_environment.yaml @@ -10,7 +10,7 @@ instructions: variableValue: http://master.qt.io/development_releases/prebuilt/libclang/libclang-release_15.0.0-based - type: EnvironmentVariable variableName: QTC_QT_BASE_URL - variableValue: "http://ci-files02-hki.intra.qt.io/packages/jenkins/archive/qt/6.4/6.4.1-released/Qt" + variableValue: "http://ci-files02-hki.intra.qt.io/packages/jenkins/archive/qt/6.4/6.4.0-released/Qt" - type: EnvironmentVariable variableName: QTC_QT_MODULES variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine" diff --git a/dist/changelog/changes-9.0.0.md b/dist/changelog/changes-9.0.0.md index 3997f62bab0..e968e526c10 100644 --- a/dist/changelog/changes-9.0.0.md +++ b/dist/changelog/changes-9.0.0.md @@ -120,7 +120,8 @@ Projects * Turned `Package manager auto setup` off by default * Added support for CMake configure and build presets, including conditions and toolchain files (QTCREATORBUG-24555) - ([CMake Documentation](https://cmake.org/cmake/help/v3.21/manual/cmake-presets.7.html)) + ([Documentation](https://doc.qt.io/qtcreator/creator-build-settings-cmake.html#cmake-presets), + [CMake Documentation](https://cmake.org/cmake/help/v3.21/manual/cmake-presets.7.html)) * Added option for changing environment for configure step * Added option for hiding subfolders in source groups (QTCREATORBUG-27432) * Added support for `Build File` also from header files (QTCREATORBUG-26164) @@ -187,7 +188,7 @@ Test Integration ---------------- * Added support for Squish - ([Documentation](https://doc-snapshots.qt.io/qtcreator-9.0/creator-squish.html)) + ([Documentation](https://doc.qt.io/qtcreator/creator-squish.html)) * Catch 2 * Fixed handling of exceptions (QTCREATORBUG-28131) * Fixed crash (QTCREATORBUG-28269) diff --git a/doc/qtcreator/src/editors/creator-code-indentation.qdoc b/doc/qtcreator/src/editors/creator-code-indentation.qdoc index 11cae3c5b3f..f00ecdc4f15 100644 --- a/doc/qtcreator/src/editors/creator-code-indentation.qdoc +++ b/doc/qtcreator/src/editors/creator-code-indentation.qdoc @@ -65,7 +65,9 @@ To visualize whitespace in the editor, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Display > \uicontrol {Visualize whitespace}. To visualize indentation, select - \uicontrol {Visualize Indent}. + \uicontrol {Visualize Indent}. To adjust the color of the visualization, + change the value of the Visual Whitespace setting of the editor color scheme + in \uicontrol {Font & Colors}. \image qtcreator-options-text-editor-display.png "Text Editor Display preferences" diff --git a/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc b/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc index 070b6072b33..a37467fc30d 100644 --- a/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc @@ -81,7 +81,7 @@ \uicontrol {File System} view is displayed in the \l{Working with Sidebars} {sidebar}. It has a toolbar with additional options. - \image qtcreator-filesystem-view.png "File System view in the sidebar" + \image qtcreator-filesystem-view.webp "File System view in the sidebar" \else The toolbar in the \uicontrol {File System} view contains additional options. diff --git a/doc/qtdesignstudio/examples/doc/webinardemo.qdoc b/doc/qtdesignstudio/examples/doc/webinardemo.qdoc index a5fa528b3da..56aedef21be 100644 --- a/doc/qtdesignstudio/examples/doc/webinardemo.qdoc +++ b/doc/qtdesignstudio/examples/doc/webinardemo.qdoc @@ -90,7 +90,8 @@ \image webinardemo-qb-fastblur.png "Settings for exporting blurEffect layer" - We want to apply the \l {FastBlur} effect to the \e smallPopup UI control. + We want to apply the \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-fastblur.html} + {Fast Blur} effect to the \e smallPopup UI control. In the artboard, we have a \e blurEffect layer that we want to export as a \e FastBlurItem component. In the \uicontrol Component field, we enter \e FastBlurItem. diff --git a/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc b/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc index e8a4d65d518..9cff12750c0 100644 --- a/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc +++ b/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc @@ -78,7 +78,7 @@ \li Description \row \li \inlineimage icons/blend-mode-16px.png - \li \l [QML] {Blend} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-blend.html}{Blend} \li \li Merges two source components by using a blend mode. @@ -88,28 +88,34 @@ is subtracted from the source and written over it. For a list of possible \uicontrol Mode values and examples of their - use, see \l{Blend::mode}{Blend.mode}. + use, see + \l{https://doc.qt.io/qt-5/qml-qtgraphicaleffects-blend.html#mode-prop} + {Blend.mode}. \row \li \inlineimage icons/brightness-contrast-16px.png - \li \l {BrightnessContrast}{Brightness Contrast} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-brightnesscontrast.html} + {Brightness Contrast} \li \inlineimage ok.png \li Adjusts \uicontrol Brightness and \uicontrol Contrast. \row \li \inlineimage icons/colourize-16px.png - \li \l {ColorOverlay}{Color Overlay} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-coloroverlay.html} + {Color Overlay} \li \inlineimage ok.png \li Alters the colors of the source component by applying an \uicontrol {Overlay color}. You can use the color picker to \l{Picking Colors}{select the color}. \row \li \inlineimage icons/colourize-16px.png - \li \l Colorize + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-colorize.html} + {Colorize} \li \inlineimage ok.png \li Sets the color in the HSL color space by specifying \uicontrol Hue, \uicontrol Lightness, and \uicontrol Saturation values. \row \li \inlineimage icons/desaturation-16px.png - \li \l {Desaturate}{Desaturation} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-desaturate.html} + {Desaturation} \li \inlineimage ok.png \li Reduces the saturation of the colors by the value set in the \uicontrol Desaturation field. The value ranges from \c 0.0 @@ -118,7 +124,8 @@ of the source component. \row \li \inlineimage icons/directional-blur-16px.png - \li \l {DirectionalBlur}{Directional Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-directionalblur.html} + {Directional Blur} \li \inlineimage ok.png \li Applies a blur effect to the specified direction. The value of the \uicontrol Angle field defines the direction of the blur. This @@ -135,7 +142,8 @@ more samples are needed to preserve high visual quality. \row \li \inlineimage icons/displace-16px.png - \li \l Displace + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-displace.html} + {Displace} \li \inlineimage ok.png \li Moves the pixels of the source component according to the displacement map specified in the \uicontrol {Displacement source} field. @@ -148,7 +156,8 @@ maximum shift. \row \li \inlineimage icons/drop-shadow-16px.png - \li \l {DropShadow}{Drop Shadow} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-dropshadow.html} + {Drop Shadow} \li \inlineimage ok.png \li Generates a soft shadow behind the source component using a gaussian blur. This effect blurs the alpha channel of the input and @@ -170,7 +179,8 @@ FPS on high-end graphics hardware. \row \li \inlineimage icons/fast-blur-16px.png - \li \l {FastBlur}{Fast Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-fastblur.html} + {Fast Blur} \li \inlineimage ok.png \li Applies a fast blur effect to one or more source components. \uicontrol {Fast Blur} offers lower blur quality than @@ -188,7 +198,8 @@ to provide good rendering performance. \row \li \inlineimage icons/gamma-adjust-16px.png - \li \l [QML] {GammaAdjust}{Gamma Adjust} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-gammaadjust.html} + {Gamma Adjust} \li \inlineimage ok.png \li Alters the luminance of the source component. This effect is applied to each pixel according to the curve that is pre-defined as a @@ -196,7 +207,8 @@ field is used as the reciprocal scaling exponent. \row \li \inlineimage icons/gaussian-blur-16px.png - \li \l [QML] {GaussianBlur}{Gaussian Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-gaussianblur.html} + {Gaussian Blur} \li \li Applies a gaussian blur effect to one or more source components. The effect softens the image by blurring it with an algorithm that @@ -218,7 +230,7 @@ the radius. \row \li \inlineimage icons/glow-16px.png - \li \l [QML] {Glow} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-glow.html}{Glow} \li \inlineimage ok.png \li Generates a halo-like glow around the source component. This effect blurs the alpha channel of the source and colorizes it with @@ -229,7 +241,8 @@ glow can be changed using the value of the \uicontrol Spread field. \row \li \inlineimage icons/hue-saturation-16px.png - \li \l {HueSaturation}{Hue Saturation} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-huesaturation.html} + {Hue Saturation} \li \inlineimage ok.png \li Alters the source component colors in the HSL color space. This effect is similar to the \uicontrol Colorize effect, but @@ -239,7 +252,8 @@ setting them. \row \li \inlineimage icons/inner-shadow-16px.png - \li \l {InnerShadow}{Inner Shadow} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-innershadow.html} + {Inner Shadow} \li \li Generates a colorized and blurred shadow inside the source using the color that you specify in the \uicontrol {Inner shadow color} @@ -261,7 +275,8 @@ check box. \row \li \inlineimage icons/levels-16px.png - \li \l {LevelAdjust}{Level Adjust} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-leveladjust.html} + {Level Adjust} \li \inlineimage ok.png \li Adjusts color levels in the RGBA color space. This effect adjusts the source component colors separately for each color channel. Source @@ -291,7 +306,8 @@ value of the \uicontrol Minimum output field. \row \li \inlineimage icons/mask-blur-16px.png - \li \l {MaskedBlur}{Masked Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-maskedblur.html} + {Masked Blur} \li \li Softens the image by blurring it. The intensity of the blur can be controlled for each pixel by specifying a \uicontrol {Mask source}, @@ -306,7 +322,8 @@ samples produce better quality, but are slower to render. \row \li \inlineimage icons/opacity-mask-16px.png - \li \l {OpacityMask}{Opacity Mask} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-opacitymask.html} + {Opacity Mask} \li \inlineimage ok.png \li Masks the source component with another component specified in the \uicontrol {Mask source} field. The mask component gets rendered into an @@ -321,7 +338,8 @@ with the mask alpha: \c {As * Am}. \row \li \inlineimage icons/radial-blur-16px.png - \li \l {RadialBlur}{Radial Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-radialblur.html} + {Radial Blur} \li \li Applies a directional blur effect in a circular direction around the component's center point. This effect makes the source component appear @@ -336,7 +354,8 @@ samples are needed to preserve high visual quality. \row \li \inlineimage icons/recursive-blur-16px.png - \li \l {RecursiveBlur}{Recursive Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-recursiveblur.html} + {Recursive Blur} \li \li Blurs repeatedly, providing a strong blur effect. This effect softens the image by blurring it with an algorithm that uses a @@ -352,7 +371,8 @@ but the result is produced asynchronously and takes more time. \row \li \inlineimage icons/threshold-16px.png - \li \l {ThresholdMask}{Threshold Mask} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-thresholdmask.html} + {Threshold Mask} \li \inlineimage ok.png \li Masks the source component with another component specified by \uicontrol {Mask source}. The value of the \uicontrol Spread @@ -363,7 +383,8 @@ opaque mask pixels by adding interpolated values between them. \row \li \inlineimage icons/zoom-blur-16px.png - \li \l {ZoomBlur}{Zoom Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-zoomblur.html} + {Zoom Blur} \li \li Applies a directional blur effect towards source component's center point. This effect makes the source component appear to be diff --git a/doc/qtdesignstudio/src/views/qtquick-properties.qdoc b/doc/qtdesignstudio/src/views/qtquick-properties.qdoc index 0f7547c1195..8f8a1da66b8 100644 --- a/doc/qtdesignstudio/src/views/qtquick-properties.qdoc +++ b/doc/qtdesignstudio/src/views/qtquick-properties.qdoc @@ -392,7 +392,8 @@ Typically, this component should be a shader effect with a source texture specified. You can use the effects in \uicontrol Components > \uicontrol {Qt Quick Studio Effects} that are based on the components in the - \l {Qt Graphical Effects} module. + \l {https://doc.qt.io/qt-5/qtgraphicaleffects-index.html} + {Qt Graphical Effects} module. To enable the component to pass the layer's offscreen surface to the effect correctly, the \uicontrol {Sampler name} field is set to the source diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 8c4a5e934e5..8bfd982e27a 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -42519,22 +42519,22 @@ Are you sure? [Source: %1] - + [Quelle: %1] ClangCodeModel Component - Komponente + Komponente Total Memory - + Gesamtspeicher Update - Aktualisieren + Aktualisieren @@ -42590,7 +42590,7 @@ Ausgabe: Documentation: - + Dokumentation: @@ -42616,11 +42616,11 @@ Ausgabe: Filter for This Diagnostic Kind - Nach dieser Art von Einträgen filtern + Nach dieser Art von Meldungen filtern Filter out This Diagnostic Kind - Diese Art von Einträgen herausfiltern + Diese Art von Meldungen herausfiltern Web Page @@ -42628,19 +42628,19 @@ Ausgabe: Suppress Selected Diagnostics - + Ausgewählte Meldungen unterdrücken Suppress This Diagnostic - Diese Art von Einträgen nicht anzeigen + Diese Art von Meldungen nicht anzeigen Disable These Checks - + Diese Checks deaktivieren Disable This Check - + Diesen Check deaktivieren @@ -43132,7 +43132,7 @@ Was soll %1 tun? ClangFormat::ClangFormatConfigWidget Clang-Format Style - + Clang-Format-Stil @@ -43150,7 +43150,7 @@ Was soll %1 tun? The ClangFormat plugin has been built against an unmodified Clang. You might experience formatting glitches in certain circumstances. See https://code.qt.io/cgit/qt-creator/qt-creator.git/tree/README.md for more information. - + Das ClangFormat-Plugin wurde gegen ein unmodifiziertes Clang gebaut. Unter Umständen werden Sie Mängel beim Formatieren feststellen. Unter https://code.qt.io/cgit/qt-creator/qt-creator.git/tree/README.md können Sie mehr erfahren. @@ -44729,11 +44729,11 @@ You might find further explanations in the Application Output view. Filters - Filter + Filter Reset Topic Filter - + Themenfilter zurücksetzen Checks @@ -44746,7 +44746,8 @@ You might find further explanations in the Application Output view. Could not query the supported checks from the clazy-standalone executable. Set a valid executable first. - + Konnte die von clazy-standalone unterstützten Überprüfungen nicht abfragen. +Setzen Sie erst eine gültige ausführbare Datei. Enable lower levels automatically @@ -44761,19 +44762,19 @@ Set a valid executable first. Select All - + Alle auswählen Select All with Fixits - + Alle mit Korrekturen auswählen Clear Selection - + Auswahl löschen Select the diagnostics to display. - + Wählen Sie die anzuzeigenden Meldungen. @@ -44784,11 +44785,11 @@ Set a valid executable first. Analyze open files - + Offene Dateien analysieren Run Options - + Ausführungseinstellungen Parallel jobs: @@ -44812,7 +44813,8 @@ Set a valid executable first. Could not query the supported checks from the clang-tidy executable. Set a valid executable first. - + Konnte die von clang-tidy unterstützten Überprüfungen nicht abfragen. +Setzen Sie erst eine gültige ausführbare Datei. @@ -45701,11 +45703,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. ClangTools::Internal::ClangTool Analyze Project... - + Projekt analysieren... Analyze Current File - + Aktuelle Datei analysieren Go to previous diagnostic. @@ -45717,7 +45719,7 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Load diagnostics from YAML files exported with "-export-fixes". - + Meldungen, die mit "-export-fixes" exportiert wurden, aus YAML-Datei laden. Clear @@ -45725,11 +45727,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Expand All - + Alle aufklappen Collapse All - + Alle einklappen Filter Diagnostics @@ -45773,119 +45775,119 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Cannot analyze current file: No files open. - + Kann aktuelle Datei nicht analysieren: Keine Dateien geöffnet. Cannot analyze current file: "%1" is not a known source file. - + Kann aktuelle Datei nicht analysieren: "%1" ist keine bekannte Quelldatei. Select YAML Files with Diagnostics - + Wählen Sie YAML-Datei mit Meldungen YAML Files (*.yml *.yaml);;All Files (*) - + YAML-Dateien (*.yml *.yaml);;Alle Dateien (*) Error Loading Diagnostics - + Fehler beim Laden der Meldungen Set a valid Clang-Tidy executable. - + Wählen Sie eine gültige ausführbare Datei für Clang-Tidy. Set a valid Clazy-Standalone executable. - + Wählen Sie eine gültige ausführbare Datei für Clazy-Standalone. Project "%1" is not a C/C++ project. - + Das Projekt "%1" ist kein C/C++-Projekt. Open a C/C++ project to start analyzing. - + Öffnen Sie ein C/C++-Projekt, um mit der Analyse zu beginnen. Failed to build the project. - + Das Projekt konnte nicht erstellt werden. Failed to start the analyzer. - + Das Analyse-Werkzeug konnte nicht gestartet werden. All Files - + Alle Dateien Opened Files - + Geöffnete Dateien Edited Files - + Bearbeitete Dateien Failed to analyze %n file(s). - - - + + Eine Datei konnte nicht analysiert werden. + %n Dateien konnten nicht analysiert werden. Analyzing... - + Analysiere... Analyzing... %1 of %n file(s) processed. - - - + + Analysiere... %1 von einer Datei verarbeitet. + Analysiere... %1 von %n Dateien verarbeitet. Analysis stopped by user. - + Analyse durch den Benutzer gestoppt. Finished processing %n file(s). - - - + + Verarbeitung einer Datei abgeschlossen. + Verarbeitung von %n Dateien abgeschlossen. Diagnostics imported. - + Meldungen importiert. %1 diagnostics. %2 fixits, %3 selected. - + %1 Meldung(en). %2 Korrektur(en), %3 ausgewählt. No diagnostics. - + Keine Meldungen. In general, the project should be built before starting the analysis to ensure that the code to analyze is valid.<br/><br/>Building the project might also run code generators that update the source files as necessary. - + Im Allgemeinen sollte das Projekt vor der Analyse gebaut werden, um sicherzustellen, dass der zu analysierende Code gültig ist.<br/><br/>Beim Erstellen des Projekts werden möglicherweise auch Code-Generatoren ausgeführt, die Quelldateien nach Bedarf aktualisieren. Info About Build the Project Before Analysis - + Information über das Erstellen des Projekts vor der Analyse ClangTools::Internal::ClangToolRunWorker Failed to build the project. - + Das Projekt konnte nicht erstellt werden. No code model data available for project. - + Für das Projekt sind keine Codemodell-Daten vorhanden. The project configuration changed since the start of the %1. Please re-run with current configuration. @@ -45893,11 +45895,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Failed to create temporary directory: %1. - + Das temporäre Verzeichnis konnte nicht erstellt werden: %1. Running %1 on %2 with configuration "%3". - + Führe %1 auf %2 mit der Konfiguration "%3" aus. Analyzing @@ -45905,11 +45907,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Analyzing "%1" [%2]. - + Analysiere "%1" [%2]. Failed to start runner "%1". - + Das Werkzeug "%1" konnte nicht gestartet werden. Failed to analyze "%1": %2 @@ -45917,14 +45919,14 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Error: Failed to analyze %n files. - - - + + Fehler: Eine Datei konnte nicht analysiert werden. + Fehler: %n Dateien konnten nicht analysiert werden. Note: You might need to build the project to generate or update source files. To build automatically, enable "Build the project before analysis". - + Hinweis: Möglicherweise müssen Sie das Projekt erstellen, um Quelldateien zu generieren oder aktualisieren. Aktivieren Sie "Projekt vor der Analyse erstellen", um das Projekt automatisch zu erstellen. %1 finished: Processed %2 files successfully, %3 failed. @@ -45973,11 +45975,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Clang-Tidy Checks - + Clang-Tidy Checks Clazy Checks - + Clazy Checks Edit Checks as String... @@ -52413,43 +52415,43 @@ in "%2" aus. ClangCodeModel::Internal::ClangdClient clangd - + clangd Indexing %1 with clangd - + Indiziere %1 mit clangd Indexing session with clangd - + Indiziere Sitzung mit clangd Memory Usage - Speicherverbrauch + Speicherverbrauch Location: %1 Parent folder for proposed #include completion - Pfad: %1 + Pfad: %1 collecting overrides ... - + Suche überschriebene Methoden ... <base declaration> - + <Basisdeklaration> ClangCodeModel::Internal::ClangdFindReferences C++ Usages: - + C++ Referenzen: Re&name %n files - + Eine Datei umbe&nennen %n Dateien umbe&nennen @@ -52457,7 +52459,7 @@ in "%2" aus. Files: %1 - Dateien: + Dateien: %1 @@ -52465,233 +52467,234 @@ in "%2" aus. ClangCodeModel::Internal::ClangModelManagerSupport The use of clangd for the C/C++ code model was disabled, because it is likely that its memory requirements would be higher than what your system can handle. - + Clangd wurde für das C/C++-Codemodell deaktiviert, da dessen Speicheranforderung wahrscheinlich die Leistungsfähigkeit Ihres Systems übersteigt. With clangd enabled, Qt Creator fully supports modern C++ when highlighting code, completing symbols and so on.<br>This comes at a higher cost in terms of CPU load and memory usage compared to the built-in code model, which therefore might be the better choice on older machines and/or with legacy code.<br>You can enable/disable and fine-tune clangd <a href="dummy">here</a>. - + Wenn Clangd aktiviert ist, unterstützt Qt Creator semantische Hervorhebung, Symbolvervollständigung und so weiter für Code, der modernes C++ nutzt.<br/>Das wirkt sich nachteilig auf CPU-Last und Speicherverbrauch im Vergleich zum eingebauten Codemodell aus, das deshalb eine bessere Wahl für ältere Maschinen und/oder für Legacy Code sein kann.<br/>Sie können Clangd <a href="dummy">hier</a> aktivieren/deaktivieren und anpassen. Enable Anyway - + Trotzdem aktivieren Cannot use clangd: Failed to generate compilation database: %1 - + Kann Clangd nicht nutzen: Erstellen der Kompilierungsdatenbank fehlgeschlagen: +%1 ClangdTextMark Code Model Error - Codemodell-Fehler + Codemodell-Fehler Code Model Warning - Codemodell-Warnung + Codemodell-Warnung Copy to Clipboard Clang Code Model Marks - In die Zwischenablage kopieren + In die Zwischenablage kopieren Disable Diagnostic in Current Project - + Meldung für aktuelles Projekt deaktivieren ClangUtils Could not retrieve build directory. - + Build-Verzeichnis konnte nicht abgefragt werden. Could not create "%1": %2 - + Konnte "%1" nicht erzeugen: %2 ClangFormat::ClangFormatGlobalConfigWidget Formatting mode: - + Formatierungsart: Format while typing - Bei der Eingabe formatieren + Bei der Eingabe formatieren Format edited code on file save - Bearbeiteten Quelltext beim Speichern der Datei formatieren + Bearbeiteten Quelltext beim Speichern der Datei formatieren Override Clang Format configuration file - Clang-Format-Konfigurationsdatei überschreiben + Clang-Format-Konfigurationsdatei überschreiben ClangFormat global setting: - + Globale Einstellungen für ClangFormat: Indenting only - + Nur Einrückung Full formatting - + Komplette Formatierung Disable - Deaktivieren + Deaktivieren The current project has its own .clang-format file which can be overridden by the settings below. - + Das aktuelle Projekt hat ihre eigene .clang-format-Datei, die in den untenstehenden Einstellungen überschrieben werden kann. Override Clang Format configuration file with the chosen configuration. - + Die Clang-Format-Konfigurationsdatei mit der gewählten Konfiguration überschreiben. ClangFormatStyleFactory ClangFormat - ClangFormat + ClangFormat ClangTools::Internal::ClangToolsProjectSettingsWidget Restore Global Settings - Globale Einstellungen wiederherstellen + Globale Einstellungen wiederherstellen Go to Analyzer - + Zum Analyzer wechseln Remove Selected - Ausgewählte entfernen + Ausgewählte entfernen Remove All - Alle entfernen + Alle entfernen Suppressed diagnostics - Unterdrückte Diagnosemeldungen + Unterdrückte Meldungen ClangToolsDiagnosticModel No Fixits - Keine Korrekturen + Keine Korrekturen Not Scheduled - nicht eingeplant + Nicht eingeplant Invalidated - Ungültig + Ungültig Scheduled - eingeplant + Eingeplant Failed to Apply - Konnte nicht angewendet werden + Konnte nicht angewendet werden Applied - Angewendet + Angewendet ClangTools::Internal::TidyOptionsDialog Options for %1 - + Einstellungen für %1 Option - + Einstellung Value - Wert + Wert Add Option - + Einstellung hinzufügen Remove Option - + Einstellung entfernen <new option> - + <Neue Einstellung> ClangTools::Internal::TidyChecksTreeModel Options - Einstellungen + Einstellungen Clang Tools Custom Configuration - + Benutzerdefinierte Konfiguration ClangTools::Internal::DiagnosticMark Copy to Clipboard - In die Zwischenablage kopieren + In die Zwischenablage kopieren Disable Diagnostic - + Meldung deaktivieren ClangTools::Internal::FilterChecksModel Check - + Check ClangTools::Internal::SettingsWidget Clang-Tidy Executable - + Ausführbare Datei für Clang-Tidy Clazy Executable - + Ausführbare Datei für Clazy Executables - + Ausführbare Dateien Clang-Tidy: - + Clang-Tidy: Clazy-Standalone: - + Clazy-Standalone: diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 6df30ffd825..dcf1ff6d07e 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -933,8 +933,9 @@ QVariant FilePath::toVariant() const bool FilePath::operator==(const FilePath &other) const { - return pathView().compare(other.pathView(), caseSensitivity()) == 0 && host() == other.host() - && scheme() == other.scheme(); + return pathView().compare(other.pathView(), caseSensitivity()) == 0 + && host() == other.host() + && scheme() == other.scheme(); } bool FilePath::operator!=(const FilePath &other) const @@ -1588,7 +1589,7 @@ static QString normalizePathSegmentHelper(const QString &name) { const int len = name.length(); - if (len == 0) + if (len == 0 || name.contains("%{")) return name; int i = len - 1; diff --git a/src/plugins/autotest/gtest/gtestconfiguration.cpp b/src/plugins/autotest/gtest/gtestconfiguration.cpp index 2ff3b5c6b1e..231dea01ff2 100644 --- a/src/plugins/autotest/gtest/gtestconfiguration.cpp +++ b/src/plugins/autotest/gtest/gtestconfiguration.cpp @@ -60,8 +60,12 @@ QStringList GTestConfiguration::argumentsForTestRunner(QStringList *omitted) con } const QStringList &testSets = testCases(); - if (!testSets.isEmpty()) - arguments << "--gtest_filter=\"" + testSets.join(':') + '"'; + if (!testSets.isEmpty()) { + if (isDebugRunMode()) // debugger does its own special quoting + arguments << "--gtest_filter=" + testSets.join(':'); + else + arguments << "--gtest_filter=\"" + testSets.join(':') + '"'; + } auto gSettings = static_cast(framework()->testSettings()); if (!gSettings) diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index 3454984714e..bbd43fa37e0 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -127,7 +127,7 @@ static void checkSystemForClangdSuitability() if (ClangdSettings::hardwareFulfillsRequirements()) return; - ClangdSettings::setUseClangd(false); + ClangdSettings::setUseClangdAndSave(false); const QString warnStr = ClangModelManagerSupport::tr("The use of clangd for the C/C++ " "code model was disabled, because it is likely that its memory requirements " "would be higher than what your system can handle."); @@ -148,7 +148,7 @@ static void checkSystemForClangdSuitability() return label; }); info.addCustomButton(ClangModelManagerSupport::tr("Enable Anyway"), [clangdWarningSetting] { - ClangdSettings::setUseClangd(true); + ClangdSettings::setUseClangdAndSave(true); Core::ICore::infoBar()->removeInfo(clangdWarningSetting); }); Core::ICore::infoBar()->addInfo(info); @@ -533,12 +533,14 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr && currentClient->project() == docProject) { continue; } - if (!docProject || docProject == project) { - if (currentClient) - currentClient->closeDocument(doc); - LanguageClientManager::openDocumentWithClient(doc, client); - hasDocuments = true; + if (docProject != project + && (docProject || !ProjectFile::isHeader(doc->filePath()))) { + continue; } + if (currentClient) + currentClient->closeDocument(doc); + LanguageClientManager::openDocumentWithClient(doc, client); + hasDocuments = true; } for (auto it = m_queuedShadowDocuments.begin(); it != m_queuedShadowDocuments.end();) { @@ -641,11 +643,13 @@ void ClangModelManagerSupport::claimNonProjectSources(ClangdClient *client) } if (!ClangdSettings::instance().sizeIsOkay(doc->filePath())) continue; - if (!ProjectExplorer::SessionManager::projectForFile(doc->filePath())) { - if (currentClient) - currentClient->closeDocument(doc); - LanguageClientManager::openDocumentWithClient(doc, client); - } + if (ProjectExplorer::SessionManager::projectForFile(doc->filePath())) + continue; + if (client->project() && !ProjectFile::isHeader(doc->filePath())) + continue; + if (currentClient) + currentClient->closeDocument(doc); + LanguageClientManager::openDocumentWithClient(doc, client); } } @@ -733,7 +737,7 @@ void ClangModelManagerSupport::onEditorOpened(Core::IEditor *editor) return; if (sessionModeEnabled()) project = nullptr; - else if (!project) + else if (!project && ProjectFile::isHeader(document->filePath())) project = fallbackProject(); if (ClangdClient * const client = clientForProject(project)) LanguageClientManager::openDocumentWithClient(textDocument, client); diff --git a/src/plugins/clearcase/settingspage.cpp b/src/plugins/clearcase/settingspage.cpp index e9d5dd92a34..5d8cd603fd5 100644 --- a/src/plugins/clearcase/settingspage.cpp +++ b/src/plugins/clearcase/settingspage.cpp @@ -108,9 +108,8 @@ SettingsPageWidget::SettingsPageWidget() using namespace Layouting; - Row { - Tr::tr("Arg&uments:"), - diffArgsEdit + Form { + Tr::tr("Arg&uments:"), diffArgsEdit }.attachTo(diffWidget, WithoutMargins); Column { diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index fb241498c89..576490f8ec6 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -11,6 +11,7 @@ #include "externaltoolmanager.h" #include "fancytabwidget.h" #include "generalsettings.h" +#include "helpmanager.h" #include "icore.h" #include "idocumentfactory.h" #include "jsexpander.h" @@ -1510,8 +1511,17 @@ void MainWindow::changeLog() return; const FilePath file = versionedFiles.at(index).second; QString contents = QString::fromUtf8(file.fileContents().value_or(QByteArray())); - contents.replace(QRegularExpression("(QT(CREATOR)?BUG-[0-9]+)"), - "[\\1](https://bugreports.qt.io/browse/\\1)"); + static const QRegularExpression bugexpr("(QT(CREATOR)?BUG-[0-9]+)"); + contents.replace(bugexpr, "[\\1](https://bugreports.qt.io/browse/\\1)"); + static const QRegularExpression docexpr("https://doc[.]qt[.]io/qtcreator/([.a-zA-Z/_-]*)"); + QList matches; + for (const QRegularExpressionMatch &m : docexpr.globalMatch(contents)) + matches.append(m); + Utils::reverseForeach(matches, [&contents](const QRegularExpressionMatch &match) { + const QString qthelpUrl = "qthelp://org.qt-project.qtcreator/doc/" + match.captured(1); + if (!HelpManager::fileData(qthelpUrl).isEmpty()) + contents.replace(match.capturedStart(), match.capturedLength(), qthelpUrl); + }); textEdit->setMarkdown(contents); }; connect(versionCombo, &QComboBox::currentIndexChanged, textEdit, showLog); diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp index 4bb98af0c3b..3103a655a59 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.cpp +++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp @@ -253,6 +253,12 @@ bool ClangdSettings::useClangd() const void ClangdSettings::setUseClangd(bool use) { instance().m_data.useClangd = use; } +void ClangdSettings::setUseClangdAndSave(bool use) +{ + setUseClangd(use); + instance().saveSettings(); +} + bool ClangdSettings::hardwareFulfillsRequirements() { instance().m_data.haveCheckedHardwareReqirements = true; diff --git a/src/plugins/cppeditor/cppcodemodelsettings.h b/src/plugins/cppeditor/cppcodemodelsettings.h index 02d480d68e3..58b8f3005f3 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.h +++ b/src/plugins/cppeditor/cppcodemodelsettings.h @@ -133,6 +133,7 @@ public: static ClangdSettings &instance(); bool useClangd() const; static void setUseClangd(bool use); + static void setUseClangdAndSave(bool use); static bool hardwareFulfillsRequirements(); static bool haveCheckedHardwareRequirements(); diff --git a/src/plugins/cppeditor/cppprojectfile.cpp b/src/plugins/cppeditor/cppprojectfile.cpp index d649e70121d..ae3116a29dc 100644 --- a/src/plugins/cppeditor/cppprojectfile.cpp +++ b/src/plugins/cppeditor/cppprojectfile.cpp @@ -6,6 +6,7 @@ #include "cppeditorconstants.h" #include +#include #include #include @@ -129,6 +130,11 @@ bool ProjectFile::isHeader(ProjectFile::Kind kind) } } +bool ProjectFile::isHeader(const Utils::FilePath &fp) +{ + return isHeader(classify(fp.toString())); +} + bool ProjectFile::isSource(ProjectFile::Kind kind) { switch (kind) { diff --git a/src/plugins/cppeditor/cppprojectfile.h b/src/plugins/cppeditor/cppprojectfile.h index 8b16236c01a..eb045812a9e 100644 --- a/src/plugins/cppeditor/cppprojectfile.h +++ b/src/plugins/cppeditor/cppprojectfile.h @@ -7,6 +7,8 @@ #include +namespace Utils { class FilePath; } + namespace CppEditor { class CPPEDITOR_EXPORT ProjectFile @@ -39,6 +41,7 @@ public: static bool isSource(Kind kind); static bool isHeader(Kind kind); + static bool isHeader(const Utils::FilePath &fp); static bool isC(Kind kind); static bool isCxx(Kind kind); static bool isAmbiguousHeader(const QString &filePath); diff --git a/src/plugins/debugger/threadshandler.cpp b/src/plugins/debugger/threadshandler.cpp index cc0920fb121..286b58258f1 100644 --- a/src/plugins/debugger/threadshandler.cpp +++ b/src/plugins/debugger/threadshandler.cpp @@ -268,6 +268,7 @@ void ThreadsHandler::setCurrentThread(const Thread &thread) m_currentThread = thread; thread->update(); + threadSwitcher()->setCurrentIndex(thread->index().row()); } void ThreadsHandler::notifyGroupCreated(const QString &groupId, const QString &pid) diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp index 673e3bea0ae..2a471734906 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp @@ -480,7 +480,8 @@ JsonWizardFactory *JsonWizardFactory::createWizardFactory(const QVariantMap &dat if (!factory->initialize(data, baseDir, errorMessage)) { delete factory; factory = nullptr; - Core::MessageManager::writeDisrupting(*errorMessage); + if (verbose()) + Core::MessageManager::writeDisrupting(*errorMessage); } return factory; } @@ -513,6 +514,9 @@ FilePaths &JsonWizardFactory::searchPaths() Core::ICore::resourcePath(WIZARD_PATH)}; for (const QString &environmentTemplateDirName : environmentTemplatesPaths()) m_searchPaths << FilePath::fromString(environmentTemplateDirName); + m_searchPaths << Utils::transform( + Core::ICore::settings()->value("Wizards/SearchPaths").toStringList(), + [](const QString &s) { return FilePath::fromUserInput(s); }); } return m_searchPaths; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index eaf2947a4c7..dc31ba12fa2 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -4178,6 +4178,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu() auto *ag = new QActionGroup(m_sessionMenu); connect(ag, &QActionGroup::triggered, this, &ProjectExplorerPluginPrivate::setSession); const QString activeSession = SessionManager::activeSession(); + const bool isDefaultVirgin = SessionManager::isDefaultVirgin(); QStringList sessions = SessionManager::sessions(); std::sort(std::next(sessions.begin()), sessions.end(), [](const QString &s1, const QString &s2) { @@ -4192,7 +4193,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu() QAction *act = ag->addAction(actionText); act->setData(session); act->setCheckable(true); - if (session == activeSession) + if (session == activeSession && !isDefaultVirgin) act->setChecked(true); } m_sessionMenu->addActions(ag->actions()); @@ -4201,9 +4202,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu() void ProjectExplorerPluginPrivate::setSession(QAction *action) { - QString session = action->data().toString(); - if (session != SessionManager::activeSession()) - SessionManager::loadSession(session); + SessionManager::loadSession(action->data().toString()); } void ProjectExplorerPlugin::setProjectExplorerSettings(const ProjectExplorerSettings &pes) diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 4ef26740a80..5c7c6509eef 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -478,10 +478,10 @@ function(get_and_add_as_subdirectory name repository git_tag build_dir source_di ) execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" "${build_dir}/${name}" WORKING_DIRECTORY "${build_dir}/${name}" - COMMAND_ERROR_IS_FATAL ANY + ${QTC_COMMAND_ERROR_IS_FATAL} ) execute_process(COMMAND "${CMAKE_COMMAND}" --build "${build_dir}/${name}" - COMMAND_ERROR_IS_FATAL ANY + ${QTC_COMMAND_ERROR_IS_FATAL} ) add_subdirectory(${source_dir}/${name}/${source_subdir} ${name}) endfunction() diff --git a/src/tools/cplusplus-ast2png/cplusplus-ast2png.cpp b/src/tools/cplusplus-ast2png/cplusplus-ast2png.cpp index d87b61bdad0..caa00072b8d 100644 --- a/src/tools/cplusplus-ast2png/cplusplus-ast2png.cpp +++ b/src/tools/cplusplus-ast2png/cplusplus-ast2png.cpp @@ -280,9 +280,9 @@ protected: virtual bool visit(Declaration *symbol) { out << _id[symbol].constData() << " [label=\""; out << "Declaration\\n"; - out << qPrintable(o(symbol->name())); + out << qPrintable(o.prettyName(symbol->name())); out << ": "; - out << qPrintable(o(symbol->type())); + out << qPrintable(o.prettyType(symbol->type())); if (symbol->isDeprecated()) out << "\\n(deprecated)"; if (Function *funTy = symbol->type()->asFunctionType()) { @@ -308,7 +308,7 @@ protected: virtual bool visit(BaseClass *symbol) { out << _id[symbol].constData() << " [label=\"BaseClass\\n"; - out << qPrintable(o(symbol->name())); + out << qPrintable(o.prettyName(symbol->name())); if (symbol->isDeprecated()) out << "\\n(deprecated)"; out << "\"];" << std::endl; diff --git a/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp b/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp index bf0629ca605..149d345b463 100644 --- a/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp +++ b/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp @@ -44,7 +44,7 @@ class MkVisitor: protected SymbolVisitor bool isMiscNode(ClassOrNamespace *b) const { for (const ClassOrNamespace *u : b->usings()) { - if (oo(u->symbols().first()->name()) == QLatin1String("AST")) + if (oo.prettyName(u->symbols().first()->name()) == QLatin1String("AST")) return true; } @@ -58,7 +58,7 @@ class MkVisitor: protected SymbolVisitor retType->clear(); if (interfaces.contains(b) || isMiscNode(b)) { - QString className = oo(b->symbols().first()->name()); + QString className = oo.prettyName(b->symbols().first()->name()); if (className.endsWith(QLatin1String("AST"))) { className.chop(3); @@ -114,7 +114,7 @@ public: Q_ASSERT(klass != 0); - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); if (className == QLatin1String("AST")) continue; @@ -162,7 +162,7 @@ public: Q_ASSERT(klass != 0); QString retTy ; - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); std::cout << " void " << qPrintable(getAcceptFunctionName(b, &retTy)) << "(" << qPrintable(className) << " *ast);" << std::endl; } } @@ -170,7 +170,8 @@ public: std::cout << std::endl; for (ClassOrNamespace *iface : std::as_const(interfaces)) { - std::cout << " // " << qPrintable(oo(iface->symbols().first()->name())) << std::endl; + std::cout << " // " << qPrintable(oo.prettyName(iface->symbols().first()->name())) + << std::endl; const QList values = implements.value(iface); for (ClassOrNamespace *b : values) { Class *klass = 0; @@ -180,7 +181,7 @@ public: Q_ASSERT(klass != 0); - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); std::cout << " virtual bool visit(" << qPrintable(className) << " *ast);" << std::endl; } std::cout << std::endl; @@ -197,7 +198,7 @@ public: Q_ASSERT(klass != 0); - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); if (className == QLatin1String("AST")) continue; @@ -230,7 +231,7 @@ public: Q_ASSERT(klass != 0); - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); if (className == QLatin1String("AST")) continue; @@ -256,7 +257,7 @@ public: } for (ClassOrNamespace *iface : std::as_const(interfaces)) { - std::cout << "// " << qPrintable(oo(iface->symbols().first()->name())) << std::endl; + std::cout << "// " << qPrintable(oo.prettyName(iface->symbols().first()->name())) << std::endl; const QList values = implements.value(iface); for (ClassOrNamespace *b : values) { Class *klass = 0; @@ -266,7 +267,7 @@ public: Q_ASSERT(klass != 0); - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); std::cout << "bool Semantic::visit(" << qPrintable(className) << " *ast)" << std::endl << "{" << std::endl; @@ -293,12 +294,12 @@ public: Declaration *decl = klass->memberAt(i)->asDeclaration(); if (! decl) continue; - if (decl->type()->isFunctionType()) + if (decl->type()->asFunctionType()) continue; - const QString declName = oo(decl->name()); + const QString declName = oo.prettyName(decl->name()); if (PointerType *ptrTy = decl->type()->asPointerType()) { if (NamedType *namedTy = ptrTy->elementType()->asNamedType()) { - const QString eltTyName = oo(namedTy->name()); + const QString eltTyName = oo.prettyName(namedTy->name()); if (eltTyName.endsWith(QLatin1String("ListAST"))) { QString name = eltTyName; name.chop(7); @@ -327,7 +328,7 @@ public: } if (ClassOrNamespace *ty = context.lookupType(namedTy->name(), klass)) { - QString className = oo(ty->symbols().first()->name()); + QString className = oo.prettyName(ty->symbols().first()->name()); QString baseClassName = className; if (baseClassName.endsWith(QLatin1String("AST"))) { baseClassName.chop(3); @@ -370,7 +371,7 @@ protected: } virtual bool visit(Class *klass) { - const QString className = oo(klass->name()); + const QString className = oo.prettyName(klass->name()); if (! className.endsWith(QLatin1String("AST"))) return false; diff --git a/src/tools/cplusplus-update-frontend/cplusplus-update-frontend.cpp b/src/tools/cplusplus-update-frontend/cplusplus-update-frontend.cpp index f9f9358b83c..82339a4b828 100644 --- a/src/tools/cplusplus-update-frontend/cplusplus-update-frontend.cpp +++ b/src/tools/cplusplus-update-frontend/cplusplus-update-frontend.cpp @@ -171,7 +171,7 @@ protected: Class *klass = ast->symbol; Q_ASSERT(klass != nullptr); - const QString className = oo(klass->name()); + const QString className = oo.prettyName(klass->name()); if (className.endsWith(QLatin1String("AST"))) { if (className == QLatin1String("AST")) @@ -271,7 +271,7 @@ protected: continue; const QByteArray memberName = QByteArray::fromRawData(id->chars(), id->size()); - if (member->type()->isIntegerType() && memberName.endsWith("_token")) { + if (member->type()->asIntegerType() && memberName.endsWith("_token")) { // nothing to do. The member is a token. } else if (PointerType *ptrTy = member->type()->asPointerType()) { @@ -394,7 +394,7 @@ protected: void visitMembers(Class *klass) { Overview oo; - const QString className = oo(klass->name()); + const QString className = oo.prettyName(klass->name()); *out << " if (" << className << " *_other = pattern->as" << className.left(className.length() - 3) << "())" << Qt::endl; @@ -518,7 +518,7 @@ protected: continue; const QByteArray memberName = QByteArray::fromRawData(id->chars(), id->size()); - if (member->type()->isIntegerType() && memberName.endsWith("_token")) { + if (member->type()->asIntegerType() && memberName.endsWith("_token")) { *out << " pattern->" << memberName << " = node->" << memberName << ";" << Qt::endl << Qt::endl; @@ -657,7 +657,7 @@ protected: continue; const QByteArray memberName = QByteArray::fromRawData(id->chars(), id->size()); - if (member->type()->isIntegerType() && memberName.endsWith("_token")) { + if (member->type()->asIntegerType() && memberName.endsWith("_token")) { *out << " ast->" << memberName << " = " << memberName << ";" << Qt::endl; } else if (PointerType *ptrTy = member->type()->asPointerType()) { if (NamedType *namedTy = ptrTy->elementType()->asNamedType()) { @@ -789,7 +789,7 @@ protected: continue; const QByteArray memberName = QByteArray::fromRawData(id->chars(), id->size()); - if (member->type()->isIntegerType() && memberName.endsWith("_token")) { + if (member->type()->asIntegerType() && memberName.endsWith("_token")) { out << " if (ast->" << memberName << ")" << Qt::endl; out << " terminal(ast->" << memberName << ", ast);" << Qt::endl; } else if (PointerType *ptrTy = member->type()->asPointerType()) { @@ -881,7 +881,7 @@ protected: virtual bool visit(FunctionDefinitionAST *ast) { Function *fun = ast->symbol; - const QString functionName = oo(fun->name()); + const QString functionName = oo.prettyName(fun->name()); if (functionName.length() > 3 && functionName.startsWith(QLatin1String("as")) && functionName.at(2).isUpper()) { @@ -909,18 +909,18 @@ static QStringList collectFieldNames(ClassSpecifierAST *classAST, bool onlyToken for (int i = 0; i < clazz->memberCount(); ++i) { Symbol *s = clazz->memberAt(i); if (Declaration *decl = s->asDeclaration()) { - const QString declName = oo(decl->name()); + const QString declName = oo.prettyName(decl->name()); const FullySpecifiedType ty = decl->type(); if (const PointerType *ptrTy = ty->asPointerType()) { if (onlyTokensAndASTNodes) { if (const NamedType *namedTy = ptrTy->elementType()->asNamedType()) { - if (oo(namedTy->name()).endsWith(QLatin1String("AST"))) + if (oo.prettyName(namedTy->name()).endsWith(QLatin1String("AST"))) fields.append(declName); } } else { fields.append(declName); } - } else if (ty->isIntegerType()) { + } else if (ty->asIntegerType()) { fields.append(declName); } } @@ -1021,7 +1021,7 @@ void generateAST_cpp(const Snapshot &snapshot, const QDir &cplusplusDir) // find all classes with method declarations for firstToken/lastToken for (ClassSpecifierAST *classAST : std::as_const(astNodes.deriveds)) { - const QString className = oo(classAST->symbol->name()); + const QString className = oo.prettyName(classAST->symbol->name()); if (className.isEmpty()) continue; @@ -1032,7 +1032,7 @@ void generateAST_cpp(const Snapshot &snapshot, const QDir &cplusplusDir) std::cerr << "Found simple declaration with multiple symbols in " << className.toLatin1().data() << std::endl; Symbol *s = decl->symbols->value; - const QString funName = oo(s->name()); + const QString funName = oo.prettyName(s->name()); if (funName == QLatin1String("firstToken")) { // found it: classesNeedingFirstToken.insert(className, classAST); @@ -1052,8 +1052,8 @@ void generateAST_cpp(const Snapshot &snapshot, const QDir &cplusplusDir) if (FunctionDefinitionAST *funDef = iter->value->asFunctionDefinition()) { if (const Name *name = funDef->symbol->name()) { if (const QualifiedNameId *qName = name->asQualifiedNameId()) { - const QString className = oo(qName->base()); - const QString methodName = oo(qName->name()); + const QString className = oo.prettyName(qName->base()); + const QString methodName = oo.prettyName(qName->name()); QTextCursor cursor(&cpp_document); @@ -1121,7 +1121,7 @@ void generateAST_cpp(const Snapshot &snapshot, const QDir &cplusplusDir) Overview oo; - const QString className = oo(info.classAST->symbol->name()); + const QString className = oo.prettyName(info.classAST->symbol->name()); QString method; QTextStream os(&method); @@ -1320,7 +1320,7 @@ QStringList generateAST_H(const Snapshot &snapshot, const QDir &cplusplusDir, co QStringList castMethods; for (ClassSpecifierAST *classAST : std::as_const(astNodes.deriveds)) { cursors[classAST] = removeCastMethods(classAST); - const QString className = oo(classAST->symbol->name()); + const QString className = oo.prettyName(classAST->symbol->name()); const QString methodName = QLatin1String("as") + className.mid(0, className.length() - 3); replacementCastMethods[classAST] = QString::fromLatin1(" virtual %1 *%2() { return this; }\n") @@ -1401,7 +1401,7 @@ protected: if (ElaboratedTypeSpecifierAST *e = ast->decl_specifier_list->value->asElaboratedTypeSpecifier()) { if (tokenKind(e->classkey_token) == T_CLASS && !ast->declarator_list) { - QString className = oo(e->name->name); + QString className = oo.prettyName(e->name->name); if (className.length() > 3 && className.endsWith(QLatin1String("AST"))) { QTextCursor tc = createCursor(translationUnit(), ast, document); @@ -1499,7 +1499,7 @@ void generateASTPatternBuilder_h(const QDir &cplusplusDir) if (! match0Method) continue; - const QString className = oo(klass->name()); + const QString className = oo.prettyName(klass->name()); if (! className.endsWith(QLatin1String("AST"))) continue; @@ -1521,14 +1521,14 @@ void generateASTPatternBuilder_h(const QDir &cplusplusDir) if (! ptrTy) continue; - const QString tyName = oo(ptrTy->elementType()); + const QString tyName = oo.prettyType(ptrTy->elementType()); if (tyName.endsWith(QLatin1String("ListAST"))) classesSet.insert(tyName); if (tyName.endsWith(QLatin1String("AST"))) { if (! first) out << ", "; - const QString memberName = oo(member->name()); + const QString memberName = oo.prettyName(member->name()); out << tyName << " *" << memberName << " = nullptr"; args.append(qMakePair(tyName, memberName)); diff --git a/tests/manual/android/setup/setup_android.cmake b/tests/manual/android/setup/setup_android.cmake index c6a4f8ae298..c4dfb275b35 100644 --- a/tests/manual/android/setup/setup_android.cmake +++ b/tests/manual/android/setup/setup_android.cmake @@ -43,7 +43,7 @@ function(download_jdk) message("Downloading: ${jdk_url}") file(DOWNLOAD ${jdk_url} ./jdk.zip SHOW_PROGRESS) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ./jdk.zip) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ./jdk.zip COMMAND_ERROR_IS_FATAL ANY) endfunction() function(download_android_commandline) @@ -61,7 +61,7 @@ function(download_android_commandline) file(DOWNLOAD ${android_cmdtools_url} ./android_commandline_tools.zip SHOW_PROGRESS) file(MAKE_DIRECTORY android-sdk) file(MAKE_DIRECTORY android-cmdlinetools) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ../android_commandline_tools.zip WORKING_DIRECTORY android-cmdlinetools) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ../android_commandline_tools.zip WORKING_DIRECTORY android-cmdlinetools COMMAND_ERROR_IS_FATAL ANY) endfunction() function(setup_android) @@ -78,9 +78,11 @@ function(setup_android) file(WRITE ${CMAKE_CURRENT_LIST_DIR}/accept_license.txt "y\ny\ny\ny\ny\ny\ny\ny\ny\ny\n") execute_process( INPUT_FILE ${CMAKE_CURRENT_LIST_DIR}/accept_license.txt - COMMAND ${sdkmanager} --licenses --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + COMMAND ${sdkmanager} --licenses --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) execute_process( - COMMAND ${sdkmanager} --update --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + COMMAND ${sdkmanager} --update --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) execute_process( COMMAND ${sdkmanager} "platforms;${ANDROID_PLATFORM}" @@ -90,13 +92,15 @@ function(setup_android) "cmdline-tools;latest" "tools" "emulator" - "ndk-bundle" --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + "ndk-bundle" --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) if (WIN32) execute_process( COMMAND ${sdkmanager} "extras;google;usb_driver" - --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) endif() endfunction()