Merge "Merge remote-tracking branch 'origin/12.0' into qds/dev" into qds/dev

This commit is contained in:
The Qt Project
2023-11-21 15:58:24 +00:00
37 changed files with 56612 additions and 34022 deletions

View File

@@ -37,14 +37,14 @@ Every language, compiler, and library that is supported at <https://godbolt.org>
is also supported in Qt Creator. You can save your Compiler Explorer session as is also supported in Qt Creator. You can save your Compiler Explorer session as
a `.qtce` file (JSON-based). a `.qtce` file (JSON-based).
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-explore-compiler-code.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-explore-compiler-code.html))
### CMake Debugging and the Debug Adapter Protocol ### CMake Debugging and the Debug Adapter Protocol
Set breakpoints in a CMake file and select Set breakpoints in a CMake file and select
`Debug > Start Debugging > Start CMake Debugging` to start debugging. `Debug > Start Debugging > Start CMake Debugging` to start debugging.
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-debug-cmake-files.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-debug-cmake-files.html))
### Screen Recording ### Screen Recording
@@ -56,7 +56,7 @@ To enable the ScreenRecorder plugin, select
`Help > About Plugins > Utilities > ScreenRecorder`. Then select `Help > About Plugins > Utilities > ScreenRecorder`. Then select
`Restart Now` to restart Qt Creator and load the plugin. `Restart Now` to restart Qt Creator and load the plugin.
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-record-screens.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-record-screens.html))
General General
------- -------
@@ -66,14 +66,14 @@ General
`Edit > Preferences > Environment > Locator` to keep the sorting from the tool `Edit > Preferences > Environment > Locator` to keep the sorting from the tool
used for the file system index locator filter used for the file system index locator filter
([QTCREATORBUG-27789](https://bugreports.qt.io/browse/QTCREATORBUG-27789)) ([QTCREATORBUG-27789](https://bugreports.qt.io/browse/QTCREATORBUG-27789))
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-editor-locator.html#locating-files-from-global-file-system-index)) ([Documentation](https://doc.qt.io/qtcreator/creator-editor-locator.html#locating-files-from-global-file-system-index))
* Added the `View > Show Menu Bar` option to hide the menu bar on platforms * Added the `View > Show Menu Bar` option to hide the menu bar on platforms
without a unified menu bar without a unified menu bar
([QTCREATORBUG-29498](https://bugreports.qt.io/browse/QTCREATORBUG-29498)) ([QTCREATORBUG-29498](https://bugreports.qt.io/browse/QTCREATORBUG-29498))
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-show-and-hide-main-menu.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-show-and-hide-main-menu.html))
* Changed the `Enable high DPI scaling` setting to a `DPI rounding policy` * Changed the `Enable high DPI scaling` setting to a `DPI rounding policy`
setting, which fits Qt's settings better setting, which fits Qt's settings better
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-set-high-dpi-scaling.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-set-high-dpi-scaling.html))
* Fixed an issue with growing session files * Fixed an issue with growing session files
* Fixed that the shortcuts for the navigation views could be stuck to opening a * Fixed that the shortcuts for the navigation views could be stuck to opening a
view in the right side bar view in the right side bar
@@ -87,7 +87,7 @@ Help
* Added the `Edit > Preferences > Help > General > Antialias` check box for * Added the `Edit > Preferences > Help > General > Antialias` check box for
setting the anti-aliasing of text setting the anti-aliasing of text
([QTCREATORBUG-12177](https://bugreports.qt.io/browse/QTCREATORBUG-12177)) ([QTCREATORBUG-12177](https://bugreports.qt.io/browse/QTCREATORBUG-12177))
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-get-help.html#change-the-font)) ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-get-help.html#change-the-font))
Editing Editing
------- -------
@@ -95,9 +95,9 @@ Editing
* Added the count of selected characters to line and column information * Added the count of selected characters to line and column information
on the `Edit` mode toolbar on the `Edit` mode toolbar
([QTCREATORBUG-29381](https://bugreports.qt.io/browse/QTCREATORBUG-29381)) ([QTCREATORBUG-29381](https://bugreports.qt.io/browse/QTCREATORBUG-29381))
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-coding-navigating.html#navigating-between-open-files-and-symbols)) ([Documentation](https://doc.qt.io/qtcreator/creator-coding-navigating.html#navigating-between-open-files-and-symbols))
* Added an indenter, auto-brace and auto-quote for JSON * Added an indenter, auto-brace and auto-quote for JSON
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-enclose-code-in-characters.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-enclose-code-in-characters.html))
* Improved the performance of searching in big documents * Improved the performance of searching in big documents
* Fixed that the historical order of open documents was not restored * Fixed that the historical order of open documents was not restored
* Fixed that suggestions were rendered with the wrong tab size * Fixed that suggestions were rendered with the wrong tab size
@@ -108,12 +108,12 @@ Editing
* Updated to LLVM 17.0.1 * Updated to LLVM 17.0.1
* Added `Tools > C++ > Fold All Comment Blocks` and `Unfold All Comment Blocks` * Added `Tools > C++ > Fold All Comment Blocks` and `Unfold All Comment Blocks`
([QTCREATORBUG-2449](https://bugreports.qt.io/browse/QTCREATORBUG-2449)) ([QTCREATORBUG-2449](https://bugreports.qt.io/browse/QTCREATORBUG-2449))
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-highlighting.html#folding-blocks)) ([Documentation](https://doc.qt.io/qtcreator/creator-highlighting.html#folding-blocks))
* Added the `Convert Comment to C Style` and `Convert Comment to C++ Style` * Added the `Convert Comment to C Style` and `Convert Comment to C++ Style`
refactoring actions for converting comments between C++-style and refactoring actions for converting comments between C++-style and
C-style C-style
([QTCREATORBUG-27501](https://bugreports.qt.io/browse/QTCREATORBUG-27501)) ([QTCREATORBUG-27501](https://bugreports.qt.io/browse/QTCREATORBUG-27501))
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-editor-quick-fixes.html#refactoring-c-code)) ([Documentation](https://doc.qt.io/qtcreator/creator-editor-quick-fixes.html#refactoring-c-code))
* Added the `Move Function Documentation to Declaration` and * Added the `Move Function Documentation to Declaration` and
`Move Function Documentation to Definition` refactoring actions for moving `Move Function Documentation to Definition` refactoring actions for moving
documentation between function declaration and definition documentation between function declaration and definition
@@ -177,7 +177,7 @@ Editing
* Added support for proxies * Added support for proxies
([QTCREATORBUG-29485](https://bugreports.qt.io/browse/QTCREATORBUG-29485)) ([QTCREATORBUG-29485](https://bugreports.qt.io/browse/QTCREATORBUG-29485))
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-copilot.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-copilot.html))
* Fixed the auto-detection of `agent.js` * Fixed the auto-detection of `agent.js`
([QTCREATORBUG-29750](https://bugreports.qt.io/browse/QTCREATORBUG-29750)) ([QTCREATORBUG-29750](https://bugreports.qt.io/browse/QTCREATORBUG-29750))
@@ -188,7 +188,7 @@ Editing
### Markdown ### Markdown
* Added buttons and configurable shortcuts for text styles * Added buttons and configurable shortcuts for text styles
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-markdown-editor.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-markdown-editor.html))
### Images ### Images
@@ -203,9 +203,9 @@ Projects
* Project specific settings * Project specific settings
* Added C++ file naming settings * Added C++ file naming settings
([QTCREATORBUG-22033](https://bugreports.qt.io/browse/QTCREATORBUG-22033)) ([QTCREATORBUG-22033](https://bugreports.qt.io/browse/QTCREATORBUG-22033))
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-set-cpp-file-naming.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-set-cpp-file-naming.html))
* Added documentation comment settings * Added documentation comment settings
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-document-code.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-document-code.html))
* Added an option for the Doxygen command prefix * Added an option for the Doxygen command prefix
([QTCREATORBUG-8096](https://bugreports.qt.io/browse/QTCREATORBUG-8096)) ([QTCREATORBUG-8096](https://bugreports.qt.io/browse/QTCREATORBUG-8096))
* Improved performance of filtering the target setup page * Improved performance of filtering the target setup page
@@ -250,15 +250,15 @@ Projects
([QTCREATORBUG-29643](https://bugreports.qt.io/browse/QTCREATORBUG-29643)) ([QTCREATORBUG-29643](https://bugreports.qt.io/browse/QTCREATORBUG-29643))
* Fixed unnecessary restrictions on the preset name * Fixed unnecessary restrictions on the preset name
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-project-cmake.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-project-cmake.html))
### Python ### Python
* Added auto-detection of PySide from the installer * Added auto-detection of PySide from the installer
([PYSIDE-2153](https://bugreports.qt.io/browse/PYSIDE-2153)) ([PYSIDE-2153](https://bugreports.qt.io/browse/PYSIDE-2153))
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-python-development.html#set-up-pyside6)) ([Documentation](https://doc.qt.io/qtcreator/creator-python-development.html#set-up-pyside6))
* Added the option to forward the display for remote Linux * Added the option to forward the display for remote Linux
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-run-settings.html#specifying-run-settings-for-linux-based-devices)) ([Documentation](https://doc.qt.io/qtcreator/creator-run-settings.html#specifying-run-settings-for-linux-based-devices))
* Fixed PySide wheels installation on macOS * Fixed PySide wheels installation on macOS
### qmake ### qmake
@@ -277,7 +277,7 @@ Projects
* Added parsing the dependencies from `vcpkg.json` manifest files * Added parsing the dependencies from `vcpkg.json` manifest files
* Improved the addition of dependencies to `vcpkg.json` * Improved the addition of dependencies to `vcpkg.json`
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-edit-vcpkg-manifest-files.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-edit-vcpkg-manifest-files.html))
### Qt Safe Renderer ### Qt Safe Renderer
@@ -321,7 +321,7 @@ Terminal
* Added support for Windows Terminal schemes * Added support for Windows Terminal schemes
* Fixed `Ctrl+C/V` on Windows * Fixed `Ctrl+C/V` on Windows
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-reference-terminal-view.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-reference-terminal-view.html))
Version Control Systems Version Control Systems
----------------------- -----------------------
@@ -331,7 +331,7 @@ Version Control Systems
* Added the `Ignore whitespace changes` and `Ignore line moves` options to * Added the `Ignore whitespace changes` and `Ignore line moves` options to
`Preferences > Version Control > Git > Instant Blame` `Preferences > Version Control > Git > Instant Blame`
([QTCREATORBUG-29378](https://bugreports.qt.io/browse/QTCREATORBUG-29378)) ([QTCREATORBUG-29378](https://bugreports.qt.io/browse/QTCREATORBUG-29378))
([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-vcs-git.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-vcs-git.html))
### CVS ### CVS

View File

@@ -50,3 +50,7 @@ install(TARGETS %{ProjectName}App
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
) )
# make IDEs aware of the QML import path
set(QML_IMPORT_PATH ${PROJECT_BINARY_DIR}/qml CACHE PATH
"Path to the custom QML components defined by the project")

View File

@@ -33333,147 +33333,147 @@ Möchten Sie sie überschreiben?</translation>
<name>QtC::IncrediBuild</name> <name>QtC::IncrediBuild</name>
<message> <message>
<source>IncrediBuild for Windows</source> <source>IncrediBuild for Windows</source>
<translation type="unfinished">IncrediBuild für Windows</translation> <translation>IncrediBuild für Windows</translation>
</message> </message>
<message> <message>
<source>Target and Configuration</source> <source>Target and Configuration</source>
<translation type="unfinished"></translation> <translation>Ziel und Konfiguration</translation>
</message> </message>
<message> <message>
<source>Enter the appropriate arguments to your build command.</source> <source>Enter the appropriate arguments to your build command.</source>
<translation type="unfinished"></translation> <translation>Geben Sie die entsprechenden Argumente für das Erstellkommando ein.</translation>
</message> </message>
<message> <message>
<source>Make sure the build command&apos;s multi-job parameter value is large enough (such as -j200 for the JOM or Make build tools)</source> <source>Make sure the build command&apos;s multi-job parameter value is large enough (such as -j200 for the JOM or Make build tools)</source>
<translation type="unfinished"></translation> <translation>Stellen Sie sicher, dass der Wert für die Anzahl paralleler Jobs im Erstellkommando groß genug ist (wie zum Beispiel -j200 für JOM oder Make)</translation>
</message> </message>
<message> <message>
<source>Keep original jobs number:</source> <source>Keep original jobs number:</source>
<translation type="unfinished"></translation> <translation>Ursprüngliche Anzahl Jobs beibehalten:</translation>
</message> </message>
<message> <message>
<source>Forces IncrediBuild to not override the -j command line switch, that controls the number of parallel spawned tasks. The default IncrediBuild behavior is to set it to 200.</source> <source>Forces IncrediBuild to not override the -j command line switch, that controls the number of parallel spawned tasks. The default IncrediBuild behavior is to set it to 200.</source>
<translation type="unfinished"></translation> <translation>Zwingt IncrediBuild dazu, das -j Kommandozeilenargument, das die Anzahl der parallelen Jobs bestimmt, nicht zu überschreiben. Normalerweise setzt IncrediBuild die Anzahl der parallelen Jobs auf 200.</translation>
</message> </message>
<message> <message>
<source>IncrediBuild Distribution Control</source> <source>IncrediBuild Distribution Control</source>
<translation type="unfinished"></translation> <translation>IncrediBuild-Verteilungskontrolle</translation>
</message> </message>
<message> <message>
<source>Profile.xml:</source> <source>Profile.xml:</source>
<translation type="unfinished"></translation> <translation>Profile.xml:</translation>
</message> </message>
<message> <message>
<source>Defines how Automatic Interception Interface should handle the various processes involved in a distributed job. It is not necessary for &quot;Visual Studio&quot; or &quot;Make and Build tools&quot; builds, but can be used to provide configuration options if those builds use additional processes that are not included in those packages. It is required to configure distributable processes in &quot;Dev Tools&quot; builds.</source> <source>Defines how Automatic Interception Interface should handle the various processes involved in a distributed job. It is not necessary for &quot;Visual Studio&quot; or &quot;Make and Build tools&quot; builds, but can be used to provide configuration options if those builds use additional processes that are not included in those packages. It is required to configure distributable processes in &quot;Dev Tools&quot; builds.</source>
<translation type="unfinished"></translation> <translation>Bestimmt, wie das Automatic Interception Interface die in einem verteilten Job involvierten Prozesse behandelt. Benötigt, um verteilte Prozesse in Kompilierungen mit &quot;Dev Tools&quot; zu konfigurieren. Nicht für Kompilierungen mit &quot;Visual Studio&quot; oder &quot;Make and Build tools&quot; benötigt, kann aber zur Konfiguration zusätzlicher Prozesse benutzt werden, die nicht in diesen Paketen enthalten sind.</translation>
</message> </message>
<message> <message>
<source>Avoid local task execution:</source> <source>Avoid local task execution:</source>
<translation type="unfinished"></translation> <translation>Lokales Ausführen von Aufgaben vermeiden:</translation>
</message> </message>
<message> <message>
<source>Overrides the Agent Settings dialog Avoid task execution on local machine when possible option. This allows to free more resources on the initiator machine and could be beneficial to distribution in scenarios where the initiating machine is bottlenecking the build with High CPU usage.</source> <source>Overrides the Agent Settings dialog Avoid task execution on local machine when possible option. This allows to free more resources on the initiator machine and could be beneficial to distribution in scenarios where the initiating machine is bottlenecking the build with High CPU usage.</source>
<translation type="unfinished"></translation> <translation>Überschreibt die Option &quot;Avoid task execution on local machine when possible&quot; aus dem Agent Settings-Dialog. Die Einstellung hilft, Ressourcen auf der initiierenden Maschine freizuhalten, und kann in Situationen helfen, in denen die initiierende Maschine durch hohe CPU-Auslastung zum Flaschenhals der verteilten Kompilierung wird.</translation>
</message> </message>
<message> <message>
<source>Determines the maximum number of CPU cores that can be used in a build, regardless of the number of available Agents. It takes into account both local and remote cores, even if the Avoid Task Execution on Local Machine option is selected.</source> <source>Determines the maximum number of CPU cores that can be used in a build, regardless of the number of available Agents. It takes into account both local and remote cores, even if the Avoid Task Execution on Local Machine option is selected.</source>
<translation type="unfinished"></translation> <translation>Bestimmt unabhängig von der Anzahl verfügbarer Agents die maximale Anzahl CPU-Kerne, die beim Erstellen benutzt werden. Berücksichtigt sowohl lokale als auch entfernte Kerne, auch wenn die Option &quot;Lokales Ausführen von Aufgaben vermeiden&quot; ausgewählt ist.</translation>
</message> </message>
<message> <message>
<source>Maximum CPUs to utilize in the build:</source> <source>Maximum CPUs to utilize in the build:</source>
<translation type="unfinished"></translation> <translation>Maximale Anzahl CPUs für das Erstellen:</translation>
</message> </message>
<message> <message>
<source>Newest allowed helper machine OS:</source> <source>Newest allowed helper machine OS:</source>
<translation type="unfinished"></translation> <translation>Höchste erlaubte OS-Version für Hilfsmaschinen:</translation>
</message> </message>
<message> <message>
<source>Specifies the newest operating system installed on a helper machine to be allowed to participate as helper in the build.</source> <source>Specifies the newest operating system installed on a helper machine to be allowed to participate as helper in the build.</source>
<translation type="unfinished"></translation> <translation>Gibt die höchste OS-Version an, die auf einer Maschine installiert sein darf, um beim Erstellen zu helfen.</translation>
</message> </message>
<message> <message>
<source>Oldest allowed helper machine OS:</source> <source>Oldest allowed helper machine OS:</source>
<translation type="unfinished"></translation> <translation>Niedrigste erlaubte OS-Version für Hilfsmaschinen:</translation>
</message> </message>
<message> <message>
<source>Specifies the oldest operating system installed on a helper machine to be allowed to participate as helper in the build.</source> <source>Specifies the oldest operating system installed on a helper machine to be allowed to participate as helper in the build.</source>
<translation type="unfinished"></translation> <translation>Gibt die niedrigste OS-Version an, die auf einer Maschine installiert sein darf, um beim Erstellen zu helfen.</translation>
</message> </message>
<message> <message>
<source>Output and Logging</source> <source>Output and Logging</source>
<translation type="unfinished"></translation> <translation>Ausgabe und Protokollierung</translation>
</message> </message>
<message> <message>
<source>Build title:</source> <source>Build title:</source>
<translation type="unfinished"></translation> <translation>Kompilierungstitel:</translation>
</message> </message>
<message> <message>
<source>Specifies a custom header line which will be displayed in the beginning of the build output text. This title will also be used for the Build History and Build Monitor displays.</source> <source>Specifies a custom header line which will be displayed in the beginning of the build output text. This title will also be used for the Build History and Build Monitor displays.</source>
<translation type="unfinished"></translation> <translation>Gibt eine benutzerdefinierte Kopfzeile an, die vor der Ausgabe der Kompilierung angezeigt wird. Dieser Titel wird auch für die Anzeigen &quot;Build History&quot; und &quot;Build Monitor&quot; benutzt.</translation>
</message> </message>
<message> <message>
<source>Save IncrediBuild monitor file:</source> <source>Save IncrediBuild monitor file:</source>
<translation type="unfinished"></translation> <translation>IncrediBuild Monitor-Datei speichern:</translation>
</message> </message>
<message> <message>
<source>Writes a copy of the build progress file (.ib_mon) to the specified location. If only a folder name is given, a generated GUID will serve as the file name. The full path of the saved Build Monitor will be written to the end of the build output.</source> <source>Writes a copy of the build progress file (.ib_mon) to the specified location. If only a folder name is given, a generated GUID will serve as the file name. The full path of the saved Build Monitor will be written to the end of the build output.</source>
<translation type="unfinished"></translation> <translation>Schreibt eine Kopie der Monitor-Datei (.ib_mon) an den angegebenen Ort. Wenn nur ein Verzeichnisname angegeben ist, wird eine generierte GUID als Dateiname benutzt. Der vollständige Pfad der gespeicherten Monitor-Datei wird am Ende der Ausgabe der Kompilierung angezeigt.</translation>
</message> </message>
<message> <message>
<source>Suppress STDOUT:</source> <source>Suppress STDOUT:</source>
<translation type="unfinished"></translation> <translation>STDOUT unterdrücken:</translation>
</message> </message>
<message> <message>
<source>Does not write anything to the standard output.</source> <source>Does not write anything to the standard output.</source>
<translation type="unfinished"></translation> <translation>Schreibt nichts in die Standardausgabe.</translation>
</message> </message>
<message> <message>
<source>Output Log file:</source> <source>Output Log file:</source>
<translation type="unfinished"></translation> <translation>Ausgabe-Logdatei:</translation>
</message> </message>
<message> <message>
<source>Writes build output to a file.</source> <source>Writes build output to a file.</source>
<translation type="unfinished"></translation> <translation>Schreibt die Ausgabe der Kompilierung in eine Datei.</translation>
</message> </message>
<message> <message>
<source>Show Commands in output:</source> <source>Show Commands in output:</source>
<translation type="unfinished"></translation> <translation>Kommandos in der Ausgabe zeigen:</translation>
</message> </message>
<message> <message>
<source>Shows, for each file built, the command-line used by IncrediBuild to build the file.</source> <source>Shows, for each file built, the command-line used by IncrediBuild to build the file.</source>
<translation type="unfinished"></translation> <translation>Zeigt für jede Datei die Kommandozeile, die von IncrediBuild zum Erstellen der Datei benutzt wird.</translation>
</message> </message>
<message> <message>
<source>Show Agents in output:</source> <source>Show Agents in output:</source>
<translation type="unfinished"></translation> <translation>Agents in der Ausgabe anzeigen:</translation>
</message> </message>
<message> <message>
<source>Shows the Agent used to build each file.</source> <source>Shows the Agent used to build each file.</source>
<translation type="unfinished"></translation> <translation>Zeigt für jede Datei den Agent, der zum Erstellen der Datei benutzt wird.</translation>
</message> </message>
<message> <message>
<source>Show Time in output:</source> <source>Show Time in output:</source>
<translation type="unfinished"></translation> <translation>Zeit in der Ausgabe anzeigen:</translation>
</message> </message>
<message> <message>
<source>Shows the Start and Finish time for each file built.</source> <source>Shows the Start and Finish time for each file built.</source>
<translation type="unfinished"></translation> <translation>Zeigt für jede Datei die Zeit des Beginns und des Endes der Kompilierung.</translation>
</message> </message>
<message> <message>
<source>Hide IncrediBuild Header in output:</source> <source>Hide IncrediBuild Header in output:</source>
<translation type="unfinished"></translation> <translation>IncrediBuilds Kopfzeile in der Ausgabe verstecken:</translation>
</message> </message>
<message> <message>
<source>Suppresses IncrediBuild&apos;s header in the build output</source> <source>Suppresses IncrediBuild&apos;s header in the build output</source>
<translation type="unfinished"></translation> <translation>Unterdrückt die Kopfzeile von IncrediBuild in der Ausgabe der Kompilierung</translation>
</message> </message>
<message> <message>
<source>Internal IncrediBuild logging level:</source> <source>Internal IncrediBuild logging level:</source>
<translation type="unfinished"></translation> <translation>Stufe der internen IncrediBuild-Protokollierung:</translation>
</message> </message>
<message> <message>
<source>Overrides the internal Incredibuild logging level for this build. Does not affect output or any user accessible logging. Used mainly to troubleshoot issues with the help of IncrediBuild support</source> <source>Overrides the internal Incredibuild logging level for this build. Does not affect output or any user accessible logging. Used mainly to troubleshoot issues with the help of IncrediBuild support</source>
<translation type="unfinished"></translation> <translation>Überschreibt die Stufe der internen Protokollierung von IncrediBuild für diese Kompilierung. Beeinflusst weder die Ausgabe noch die dem Benutzer zugängliche Protokollierung. Wird hauptsächlich zur Fehlerbehebung mit Hilfe des Supports von IncrediBuild benutzt</translation>
</message> </message>
<message> <message>
<source>Miscellaneous</source> <source>Miscellaneous</source>
@@ -33481,83 +33481,83 @@ Möchten Sie sie überschreiben?</translation>
</message> </message>
<message> <message>
<source>Set an Environment Variable:</source> <source>Set an Environment Variable:</source>
<translation type="unfinished"></translation> <translation>Umgebungsvariable setzen:</translation>
</message> </message>
<message> <message>
<source>Sets or overrides environment variables for the context of the build.</source> <source>Sets or overrides environment variables for the context of the build.</source>
<translation type="unfinished"></translation> <translation>Setzt oder überschreibt Umgebungsvariablen für die Kompilierung.</translation>
</message> </message>
<message> <message>
<source>Stop on errors:</source> <source>Stop on errors:</source>
<translation type="unfinished"></translation> <translation>Bei Fehler anhalten:</translation>
</message> </message>
<message> <message>
<source>When specified, the execution will stop as soon as an error is encountered. This is the default behavior in &quot;Visual Studio&quot; builds, but not the default for &quot;Make and Build tools&quot; or &quot;Dev Tools&quot; builds</source> <source>When specified, the execution will stop as soon as an error is encountered. This is the default behavior in &quot;Visual Studio&quot; builds, but not the default for &quot;Make and Build tools&quot; or &quot;Dev Tools&quot; builds</source>
<translation type="unfinished"></translation> <translation>Wenn angegeben, wird die Ausführung angehalten sobald ein Fehler auftritt. Dies ist das voreingestellte Verhalten bei Kompilierungen mit &quot;Visual Studio&quot;, aber nicht für Kompilierungen mit &quot;Make and Build tools&quot; oder &quot;Dev Tools&quot;</translation>
</message> </message>
<message> <message>
<source>Additional Arguments:</source> <source>Additional Arguments:</source>
<translation type="unfinished"></translation> <translation>Zusätzliche Argumente:</translation>
</message> </message>
<message> <message>
<source>Add additional buildconsole arguments manually. The value of this field will be concatenated to the final buildconsole command line</source> <source>Add additional buildconsole arguments manually. The value of this field will be concatenated to the final buildconsole command line</source>
<translation type="unfinished"></translation> <translation>Fügt zusätzliche Argumente für buildconsole manuell hinzu. Der Inhalt dieses Eingabefelds wird an die finale Kommandozeile für buildconsole angefügt</translation>
</message> </message>
<message> <message>
<source>Open Build Monitor:</source> <source>Open Build Monitor:</source>
<translation type="unfinished"></translation> <translation>Build Monitor öffnen:</translation>
</message> </message>
<message> <message>
<source>Opens Build Monitor once the build starts.</source> <source>Opens Build Monitor once the build starts.</source>
<translation type="unfinished"></translation> <translation>Öffnet den Build Monitor, wenn die Kompilierung beginnt.</translation>
</message> </message>
<message> <message>
<source>IncrediBuild for Linux</source> <source>IncrediBuild for Linux</source>
<translation type="unfinished">IncrediBuild für Linux</translation> <translation>IncrediBuild für Linux</translation>
</message> </message>
<message> <message>
<source>Specify nice value. Nice Value should be numeric and between -20 and 19</source> <source>Specify nice value. Nice Value should be numeric and between -20 and 19</source>
<translation type="unfinished"></translation> <translation>Gibt den Wert für &quot;nice&quot; an. Der Wert sollte numerisch sein und zwischen -20 und 19 liegen</translation>
</message> </message>
<message> <message>
<source>Nice value:</source> <source>Nice value:</source>
<translation type="unfinished"></translation> <translation>Wert für &quot;nice&quot;:</translation>
</message> </message>
<message> <message>
<source>Force remote:</source> <source>Force remote:</source>
<translation type="unfinished"></translation> <translation>&quot;--force-remote&quot; benutzen:</translation>
</message> </message>
<message> <message>
<source>Alternate tasks preference:</source> <source>Alternate tasks preference:</source>
<translation type="unfinished"></translation> <translation>&quot;--alternate&quot; benutzen:</translation>
</message> </message>
<message> <message>
<source>CMake</source> <source>CMake</source>
<translation type="unfinished">CMake</translation> <translation>CMake</translation>
</message> </message>
<message> <message>
<source>Custom Command</source> <source>Custom Command</source>
<translation type="unfinished"></translation> <translation>Benutzerdefiniertes Kommando</translation>
</message> </message>
<message> <message>
<source>Command Helper:</source> <source>Command Helper:</source>
<translation type="unfinished"></translation> <translation>Kommando-Helfer:</translation>
</message> </message>
<message> <message>
<source>Select a helper to establish the build command.</source> <source>Select a helper to establish the build command.</source>
<translation type="unfinished"></translation> <translation>Wählen Sie einen Helfer zum Ermitteln des Erstellkommandos.</translation>
</message> </message>
<message> <message>
<source>Make command:</source> <source>Make command:</source>
<translation type="unfinished"></translation> <translation>Make-Kommando:</translation>
</message> </message>
<message> <message>
<source>Make arguments:</source> <source>Make arguments:</source>
<translation type="unfinished">Kommandozeilenargumente für make:</translation> <translation>Kommandozeilenargumente für make:</translation>
</message> </message>
<message> <message>
<source>Make</source> <source>Make</source>
<translation type="unfinished">Make</translation> <translation>Make</translation>
</message> </message>
</context> </context>
<context> <context>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,7 @@ using namespace Android::Internal;
AndroidManifestEditorFactory::AndroidManifestEditorFactory() AndroidManifestEditorFactory::AndroidManifestEditorFactory()
: m_actionHandler(Constants::ANDROID_MANIFEST_EDITOR_ID, : m_actionHandler(Constants::ANDROID_MANIFEST_EDITOR_ID,
Constants::ANDROID_MANIFEST_EDITOR_CONTEXT, Constants::ANDROID_MANIFEST_EDITOR_CONTEXT,
TextEditor::TextEditorActionHandler::None, TextEditor::TextEditorActionHandler::UnCommentSelection,
[](Core::IEditor *editor) { return static_cast<AndroidManifestEditor *>(editor)->textEditor(); }) [](Core::IEditor *editor) { return static_cast<AndroidManifestEditor *>(editor)->textEditor(); })
{ {
setId(Constants::ANDROID_MANIFEST_EDITOR_ID); setId(Constants::ANDROID_MANIFEST_EDITOR_ID);

View File

@@ -1,6 +1,8 @@
// Copyright (C) 2021 The Qt Company Ltd. // Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "androiddeviceinfo.h" #include "androiddeviceinfo.h"
namespace Android { namespace Android {

View File

@@ -333,7 +333,7 @@ void QtTestOutputReader::processPlainTextOutput(const QByteArray &outputLine)
static const QRegularExpression result("^(PASS |FAIL! |XFAIL |XPASS |SKIP |RESULT " static const QRegularExpression result("^(PASS |FAIL! |XFAIL |XPASS |SKIP |RESULT "
"|BPASS |BFAIL |BXPASS |BXFAIL " "|BPASS |BFAIL |BXPASS |BXFAIL "
"|INFO |QWARN |WARNING|QDEBUG |QSYSTEM): (.*)$"); "|INFO |QWARN |WARNING|QDEBUG |QSYSTEM|QCRITICAL): (.*)$");
static const QRegularExpression benchDetails("^\\s+([\\d,.]+ .* per iteration " static const QRegularExpression benchDetails("^\\s+([\\d,.]+ .* per iteration "
"\\(total: [\\d,.]+, iterations: \\d+\\))$"); "\\(total: [\\d,.]+, iterations: \\d+\\))$");

View File

@@ -61,7 +61,9 @@ ResultType TestResult::resultFromString(const QString &resultString)
return ResultType::MessageWarn; return ResultType::MessageWarn;
if (resultString == "qfatal") if (resultString == "qfatal")
return ResultType::MessageFatal; return ResultType::MessageFatal;
if ((resultString == "system") || (resultString == "qsystem")) if (resultString == "error" || resultString == "qcritical")
return ResultType::MessageError;
if (resultString == "system" || resultString == "qsystem")
return ResultType::MessageSystem; return ResultType::MessageSystem;
if (resultString == "bpass") if (resultString == "bpass")
return ResultType::BlacklistedPass; return ResultType::BlacklistedPass;

View File

@@ -140,6 +140,7 @@ void TestResultItem::updateResult(bool &changed, ResultType addedChildType,
break; break;
case ResultType::ExpectedFail: case ResultType::ExpectedFail:
case ResultType::MessageWarn: case ResultType::MessageWarn:
case ResultType::MessageError:
case ResultType::MessageSystem: case ResultType::MessageSystem:
case ResultType::Skip: case ResultType::Skip:
case ResultType::BlacklistedFail: case ResultType::BlacklistedFail:

View File

@@ -683,6 +683,11 @@ void ClangModelManagerSupport::watchForExternalChanges()
if (!LanguageClientManager::hasClients<ClangdClient>()) if (!LanguageClientManager::hasClients<ClangdClient>())
return; return;
for (const FilePath &file : files) { for (const FilePath &file : files) {
if (TextEditor::TextDocument::textDocumentForFilePath(file)) {
// if we have a document for that file we should receive the content
// change via the document signals
continue;
}
const ProjectFile::Kind kind = ProjectFile::classify(file.toString()); const ProjectFile::Kind kind = ProjectFile::classify(file.toString());
if (!ProjectFile::isSource(kind) && !ProjectFile::isHeader(kind)) if (!ProjectFile::isSource(kind) && !ProjectFile::isHeader(kind))
continue; continue;

View File

@@ -2052,21 +2052,15 @@ void ClangdTestExternalChanges::test()
QVERIFY(curDoc->marks().isEmpty()); QVERIFY(curDoc->marks().isEmpty());
// Now trigger an external change in an open, but not currently visible file and // Now trigger an external change in an open, but not currently visible file and
// verify that we get a new client and diagnostics in the current editor. // verify that we get diagnostics in the current editor.
TextDocument * const docToChange = document("mainwindow.cpp"); TextDocument * const docToChange = document("mainwindow.cpp");
docToChange->setSilentReload(); docToChange->setSilentReload();
QFile otherSource(filePath("mainwindow.cpp").toString()); QFile otherSource(filePath("mainwindow.cpp").toString());
QVERIFY(otherSource.open(QIODevice::WriteOnly)); QVERIFY(otherSource.open(QIODevice::WriteOnly));
otherSource.write("blubb"); otherSource.write("blubb");
otherSource.close(); otherSource.close();
QVERIFY(waitForSignalOrTimeout(LanguageClientManager::instance(),
&LanguageClientManager::clientAdded, timeOutInMs()));
ClangdClient * const newClient = ClangModelManagerSupport::clientForProject(project());
QVERIFY(newClient);
QVERIFY(newClient != oldClient);
newClient->enableTesting();
if (curDoc->marks().isEmpty()) if (curDoc->marks().isEmpty())
QVERIFY(waitForSignalOrTimeout(newClient, &ClangdClient::textMarkCreated, timeOutInMs())); QVERIFY(waitForSignalOrTimeout(client(), &ClangdClient::textMarkCreated, timeOutInMs()));
} }
ClangdTestIndirectChanges::ClangdTestIndirectChanges() ClangdTestIndirectChanges::ClangdTestIndirectChanges()

View File

@@ -281,8 +281,11 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
return target.title == targetName; return target.title == targetName;
}); });
if (target.backtrace.isEmpty()) if (target.backtrace.isEmpty()) {
qCCritical(cmakeBuildSystemLog) << "target.backtrace for" << targetName << "is empty. "
<< "The location where to add the files is unknown.";
return false; return false;
}
const FilePath targetCMakeFile = target.backtrace.last().path; const FilePath targetCMakeFile = target.backtrace.last().path;
const int targetDefinitionLine = target.backtrace.last().line; const int targetDefinitionLine = target.backtrace.last().line;
@@ -298,6 +301,9 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
if (!cmakeListFile.ParseString(fileContent->toStdString(), if (!cmakeListFile.ParseString(fileContent->toStdString(),
targetCMakeFile.fileName().toStdString(), targetCMakeFile.fileName().toStdString(),
errorString)) { errorString)) {
qCCritical(cmakeBuildSystemLog).noquote()
<< targetCMakeFile.path() << "failed to parse! Error:"
<< QString::fromStdString(errorString);
return false; return false;
} }
} }
@@ -308,8 +314,11 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
return func.Line() == targetDefinitionLine; return func.Line() == targetDefinitionLine;
}); });
if (function == cmakeListFile.Functions.end()) if (function == cmakeListFile.Functions.end()) {
qCCritical(cmakeBuildSystemLog) << "Function that defined the target" << targetName
<< "could not be found at" << targetDefinitionLine;
return false; return false;
}
// Special case: when qt_add_executable and qt_add_qml_module use the same target name // Special case: when qt_add_executable and qt_add_qml_module use the same target name
// then qt_add_qml_module function should be used // then qt_add_qml_module function should be used
@@ -383,13 +392,20 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
Core::EditorManager::openEditorAt({targetCMakeFile, line, column + extraChars}, Core::EditorManager::openEditorAt({targetCMakeFile, line, column + extraChars},
Constants::CMAKE_EDITOR_ID, Constants::CMAKE_EDITOR_ID,
Core::EditorManager::DoNotMakeVisible)); Core::EditorManager::DoNotMakeVisible));
if (!editor) if (!editor) {
qCCritical(cmakeBuildSystemLog).noquote()
<< "BaseTextEditor cannot be obtained for" << targetCMakeFile.path() << line
<< int(column + extraChars);
return false; return false;
}
editor->insert(snippet); editor->insert(snippet);
editor->editorWidget()->autoIndent(); editor->editorWidget()->autoIndent();
if (!Core::DocumentManager::saveDocument(editor->document())) if (!Core::DocumentManager::saveDocument(editor->document())) {
qCCritical(cmakeBuildSystemLog).noquote()
<< "Changes to" << targetCMakeFile.path() << "could not be saved.";
return false; return false;
}
if (notAdded) if (notAdded)
notAdded->clear(); notAdded->clear();
@@ -536,6 +552,9 @@ RemovedFilesFromProject CMakeBuildSystem::removeFiles(Node *context,
if (filePos) { if (filePos) {
if (!filePos.value().cmakeFile.exists()) { if (!filePos.value().cmakeFile.exists()) {
badFiles << file; badFiles << file;
qCCritical(cmakeBuildSystemLog).noquote()
<< "File" << filePos.value().cmakeFile.path() << "does not exist.";
continue; continue;
} }
@@ -548,6 +567,11 @@ RemovedFilesFromProject CMakeBuildSystem::removeFiles(Node *context,
Core::EditorManager::DoNotMakeVisible)); Core::EditorManager::DoNotMakeVisible));
if (!editor) { if (!editor) {
badFiles << file; badFiles << file;
qCCritical(cmakeBuildSystemLog).noquote()
<< "BaseTextEditor cannot be obtained for"
<< filePos.value().cmakeFile.path() << filePos.value().argumentPosition.Line
<< int(filePos.value().argumentPosition.Column - 1);
continue; continue;
} }
@@ -562,6 +586,10 @@ RemovedFilesFromProject CMakeBuildSystem::removeFiles(Node *context,
editor->editorWidget()->autoIndent(); editor->editorWidget()->autoIndent();
if (!Core::DocumentManager::saveDocument(editor->document())) { if (!Core::DocumentManager::saveDocument(editor->document())) {
badFiles << file; badFiles << file;
qCCritical(cmakeBuildSystemLog).noquote()
<< "Changes to" << filePos.value().cmakeFile.path()
<< "could not be saved.";
continue; continue;
} }
} else { } else {
@@ -625,8 +653,11 @@ bool CMakeBuildSystem::renameFile(Node *context,
";"); ";");
auto fileToRename = m_filesToBeRenamed.take(key); auto fileToRename = m_filesToBeRenamed.take(key);
if (!fileToRename.cmakeFile.exists()) if (!fileToRename.cmakeFile.exists()) {
qCCritical(cmakeBuildSystemLog).noquote()
<< "File" << fileToRename.cmakeFile.path() << "does not exist.";
return false; return false;
}
BaseTextEditor *editor = qobject_cast<BaseTextEditor *>( BaseTextEditor *editor = qobject_cast<BaseTextEditor *>(
Core::EditorManager::openEditorAt({fileToRename.cmakeFile, Core::EditorManager::openEditorAt({fileToRename.cmakeFile,
@@ -635,8 +666,12 @@ bool CMakeBuildSystem::renameFile(Node *context,
- 1)}, - 1)},
Constants::CMAKE_EDITOR_ID, Constants::CMAKE_EDITOR_ID,
Core::EditorManager::DoNotMakeVisible)); Core::EditorManager::DoNotMakeVisible));
if (!editor) if (!editor) {
qCCritical(cmakeBuildSystemLog).noquote()
<< "BaseTextEditor cannot be obtained for" << fileToRename.cmakeFile.path()
<< fileToRename.argumentPosition.Line << int(fileToRename.argumentPosition.Column);
return false; return false;
}
// If quotes were used for the source file, skip the starting quote // If quotes were used for the source file, skip the starting quote
if (fileToRename.argumentPosition.Delim == cmListFileArgument::Quoted) if (fileToRename.argumentPosition.Delim == cmListFileArgument::Quoted)
@@ -646,8 +681,11 @@ bool CMakeBuildSystem::renameFile(Node *context,
editor->replace(fileToRename.relativeFileName.length(), newRelPathName); editor->replace(fileToRename.relativeFileName.length(), newRelPathName);
editor->editorWidget()->autoIndent(); editor->editorWidget()->autoIndent();
if (!Core::DocumentManager::saveDocument(editor->document())) if (!Core::DocumentManager::saveDocument(editor->document())) {
qCCritical(cmakeBuildSystemLog).noquote()
<< "Changes to" << fileToRename.cmakeFile.path() << "could not be saved.";
return false; return false;
}
return true; return true;
} }

View File

@@ -664,7 +664,10 @@ static void addCompileGroups(ProjectNode *targetRoot,
sourceDirectory, sourceDirectory,
targetRoot); targetRoot);
if (showSourceFolders) { if (showSourceFolders) {
insertNode->addNestedNodes(std::move(current), sourceDirectory); FilePath baseDir = sourceDirectory.pathAppended(td.sourceGroups[i]);
if (!baseDir.exists())
baseDir = sourceDirectory;
insertNode->addNestedNodes(std::move(current), baseDir);
} else { } else {
for (auto &fileNodes : current) for (auto &fileNodes : current)
insertNode->addNode(std::move(fileNodes)); insertNode->addNode(std::move(fileNodes));

View File

@@ -1,6 +1,8 @@
// Copyright (C) 2016 The Qt Company Ltd. // Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "cmakeprojectnodes.h" #include "cmakeprojectnodes.h"
#include <utils/filepath.h> #include <utils/filepath.h>

View File

@@ -72,7 +72,7 @@ void CopilotSuggestion::reset()
int CopilotSuggestion::position() int CopilotSuggestion::position()
{ {
return m_start.position(); return m_start.selectionEnd();
} }
} // namespace Copilot::Internal } // namespace Copilot::Internal

View File

@@ -481,6 +481,7 @@ void DebuggerRunTool::start()
runControl()->setDisplayName(m_runParameters.displayName); runControl()->setDisplayName(m_runParameters.displayName);
if (!m_engine)
m_engine = createDapEngine(runControl()->runMode()); m_engine = createDapEngine(runControl()->runMode());
if (!m_engine) { if (!m_engine) {

View File

@@ -1,26 +1,5 @@
/**************************************************************************** // Copyright (C) 2022 The Qt Company Ltd.
** // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#pragma once #pragma once

View File

@@ -1,26 +1,5 @@
/**************************************************************************** // Copyright (C) 2022 The Qt Company Ltd.
** // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "emacskeysplugin.h" #include "emacskeysplugin.h"

View File

@@ -1,26 +1,5 @@
/**************************************************************************** // Copyright (C) 2022 The Qt Company Ltd.
** // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#pragma once #pragma once

View File

@@ -1,26 +1,5 @@
/**************************************************************************** // Copyright (C) 2022 The Qt Company Ltd.
** // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "emacskeysstate.h" #include "emacskeysstate.h"

View File

@@ -1,26 +1,5 @@
/**************************************************************************** // Copyright (C) 2022 The Qt Company Ltd.
** // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#pragma once #pragma once

View File

@@ -30,6 +30,7 @@
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <QCoreApplication>
#include <QMessageBox> #include <QMessageBox>
#include <QPushButton> #include <QPushButton>
#include <QRegularExpression> #include <QRegularExpression>
@@ -430,11 +431,17 @@ bool kitIsUpToDate(const Kit *kit,
QList<Kit *> existingKits(const McuTarget *mcuTarget) QList<Kit *> existingKits(const McuTarget *mcuTarget)
{ {
using namespace Constants; using namespace Constants;
// some models have compatible name changes that refere to the same supported board across versions.
// name changes are tracked here to recognize the corresponding kits as upgradable.
static QMap<QString, QStringList> upgradable_to = {
{"MIMXRT1170-EVK-FREERTOS", {"MIMXRT1170-EVKB-FREERTOS"}}};
return Utils::filtered(KitManager::kits(), [mcuTarget](Kit *kit) { return Utils::filtered(KitManager::kits(), [mcuTarget](Kit *kit) {
return kit->value(KIT_MCUTARGET_KITVERSION_KEY) == KIT_VERSION return kit->value(KIT_MCUTARGET_KITVERSION_KEY) == KIT_VERSION
&& (!mcuTarget && (!mcuTarget
|| (kit->value(KIT_MCUTARGET_VENDOR_KEY) == mcuTarget->platform().vendor || (kit->value(KIT_MCUTARGET_VENDOR_KEY) == mcuTarget->platform().vendor
&& kit->value(KIT_MCUTARGET_MODEL_KEY) == mcuTarget->platform().name && (kit->value(KIT_MCUTARGET_MODEL_KEY) == mcuTarget->platform().name
|| upgradable_to[kit->value(KIT_MCUTARGET_MODEL_KEY).toString()].contains(
mcuTarget->platform().name))
&& kit->value(KIT_MCUTARGET_COLORDEPTH_KEY) == mcuTarget->colorDepth() && kit->value(KIT_MCUTARGET_COLORDEPTH_KEY) == mcuTarget->colorDepth()
&& kit->value(KIT_MCUTARGET_OS_KEY).toInt() && kit->value(KIT_MCUTARGET_OS_KEY).toInt()
== static_cast<int>(mcuTarget->os()) == static_cast<int>(mcuTarget->os())
@@ -590,6 +597,9 @@ void upgradeKitsByCreatingNewPackage(const SettingsHandler::Ptr &settingsHandler
if (upgradeOption == UpgradeOption::Replace) { if (upgradeOption == UpgradeOption::Replace) {
for (auto existingKit : kits) for (auto existingKit : kits)
KitManager::deregisterKit(existingKit); KitManager::deregisterKit(existingKit);
// Reset cached values that are not valid after an update
// Exp: a board sdk version that was dropped in newer releases
target->resetInvalidPathsToDefault();
} }
if (target->isValid()) if (target->isValid())

View File

@@ -8,6 +8,7 @@
#include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
@@ -58,9 +59,20 @@ public:
connect(target->project(), &Project::displayNameChanged, this, &RunConfiguration::update); connect(target->project(), &Project::displayNameChanged, this, &RunConfiguration::update);
} }
bool isEnabled() const override
{
if (disabled)
return false;
return RunConfiguration::isEnabled();
}
static bool disabled;
StringAspect flashAndRunParameters{this}; StringAspect flashAndRunParameters{this};
}; };
bool FlashAndRunConfiguration::disabled = false;
class FlashAndRunWorker : public SimpleTargetRunner class FlashAndRunWorker : public SimpleTargetRunner
{ {
public: public:
@@ -74,6 +86,15 @@ public:
setWorkingDirectory(target->activeBuildConfiguration()->buildDirectory()); setWorkingDirectory(target->activeBuildConfiguration()->buildDirectory());
setEnvironment(target->activeBuildConfiguration()->environment()); setEnvironment(target->activeBuildConfiguration()->environment());
}); });
connect(runControl, &RunControl::started, []() {
FlashAndRunConfiguration::disabled = true;
ProjectExplorerPlugin::updateRunActions();
});
connect(runControl, &RunControl::stopped, []() {
FlashAndRunConfiguration::disabled = false;
ProjectExplorerPlugin::updateRunActions();
});
} }
}; };

View File

@@ -113,6 +113,19 @@ void McuTarget::handlePackageProblems(MessagesList &messages) const
} }
} }
void McuTarget::resetInvalidPathsToDefault()
{
for (McuPackagePtr package : std::as_const(m_packages)) {
if (!package)
continue;
if (package->isValidStatus())
continue;
package->setPath(package->defaultPath());
package->writeToSettings();
}
}
QVersionNumber McuTarget::qulVersion() const QVersionNumber McuTarget::qulVersion() const
{ {
return m_qulVersion; return m_qulVersion;

View File

@@ -56,6 +56,12 @@ public:
QString desktopCompilerId() const; QString desktopCompilerId() const;
void handlePackageProblems(MessagesList &messages) const; void handlePackageProblems(MessagesList &messages) const;
// Used when updating to new version of QtMCUs
// Paths that is not valid in the new version,
// and were valid in the old version. have the possibility be valid if
// reset to the default value without user intervention
void resetInvalidPathsToDefault();
private: private:
const QVersionNumber m_qulVersion; const QVersionNumber m_qulVersion;
const Platform m_platform; const Platform m_platform;

View File

@@ -11,6 +11,7 @@
#include "../projectexplorertr.h" #include "../projectexplorertr.h"
#include "../projecttree.h" #include "../projecttree.h"
#include <coreplugin/editormanager/documentmodel.h>
#include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h> #include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/messagemanager.h> #include <coreplugin/messagemanager.h>
@@ -351,6 +352,14 @@ void JsonWizard::accept()
return; return;
} }
const QList<Core::IDocument *> documentsToClose
= transform(m_files, [](const GeneratorFile &file) -> Core::IDocument * {
if ((file.file.attributes() & Core::GeneratedFile::OpenEditorAttribute) == 0)
return nullptr;
return Core::DocumentModel::documentForFilePath(file.file.filePath());
});
Core::EditorManager::closeDocuments(documentsToClose, /*askAboutModifiedEditors=*/false);
emit preWriteFiles(m_files); emit preWriteFiles(m_files);
if (!JsonWizardGenerator::writeFiles(this, &m_files, &errorMessage)) { if (!JsonWizardGenerator::writeFiles(this, &m_files, &errorMessage)) {
if (!errorMessage.isEmpty()) if (!errorMessage.isEmpty())

View File

@@ -290,7 +290,7 @@ public:
void checkState(RunControlState expectedState); void checkState(RunControlState expectedState);
void setState(RunControlState state); void setState(RunControlState state);
void debugMessage(const QString &msg); void debugMessage(const QString &msg) const;
void initiateStart(); void initiateStart();
void initiateReStart(); void initiateReStart();
@@ -1039,6 +1039,10 @@ bool RunControl::supportsReRunning() const
bool RunControlPrivate::supportsReRunning() const bool RunControlPrivate::supportsReRunning() const
{ {
for (RunWorker *worker : m_workers) { for (RunWorker *worker : m_workers) {
if (!worker) {
debugMessage("Found unknown deleted worker when checking for re-run support");
return false;
}
if (!worker->d->supportsReRunning) if (!worker->d->supportsReRunning)
return false; return false;
if (worker->d->state != RunWorkerState::Done) if (worker->d->state != RunWorkerState::Done)
@@ -1183,7 +1187,7 @@ void RunControlPrivate::setState(RunControlState newState)
} }
} }
void RunControlPrivate::debugMessage(const QString &msg) void RunControlPrivate::debugMessage(const QString &msg) const
{ {
qCDebug(statesLog()) << msg; qCDebug(statesLog()) << msg;
} }

View File

@@ -89,8 +89,8 @@ void PySideInstaller::installPyside(const FilePath &python,
const Utils::QtcSettings *settings = Core::ICore::settings(QSettings::SystemScope); const Utils::QtcSettings *settings = Core::ICore::settings(QSettings::SystemScope);
const FilePaths requirementsList const FilePaths requirementsList
= Utils::transform(settings->value("Python/PySideWheelsRequirements").toList(), = Utils::transform(settings->value("Python/PySideWheelsRequirements").toStringList(),
&FilePath::fromSettings); &FilePath::fromString);
for (const FilePath &requirements : requirementsList) { for (const FilePath &requirements : requirementsList) {
if (requirements.exists()) { if (requirements.exists()) {
auto version = QVersionNumber::fromString(requirements.parentDir().fileName()); auto version = QVersionNumber::fromString(requirements.parentDir().fileName());

View File

@@ -1,6 +1,8 @@
// Copyright (C) 2022 The Qt Company Ltd. // Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <projectexplorer/jsonwizard/jsonwizard.h> #include <projectexplorer/jsonwizard/jsonwizard.h>
#include <projectexplorer/jsonwizard/jsonwizardpagefactory.h> #include <projectexplorer/jsonwizard/jsonwizardpagefactory.h>
#include <projectexplorer/runconfigurationaspects.h> #include <projectexplorer/runconfigurationaspects.h>

View File

@@ -84,11 +84,10 @@ private:
void stop() override; void stop() override;
QmlPreviewConnectionManager m_connectionManager; QmlPreviewConnectionManager m_connectionManager;
RefreshTranslationWorker m_refreshTranslationWorker;
}; };
QmlPreviewRunner::QmlPreviewRunner(RunControl *runControl, const QmlPreviewRunnerSetting &settings) QmlPreviewRunner::QmlPreviewRunner(RunControl *runControl, const QmlPreviewRunnerSetting &settings)
: RunWorker(runControl), m_refreshTranslationWorker(runControl, settings) : RunWorker(runControl)
{ {
setId("QmlPreviewRunner"); setId("QmlPreviewRunner");
m_connectionManager.setFileLoader(settings.fileLoader); m_connectionManager.setFileLoader(settings.fileLoader);
@@ -134,7 +133,7 @@ QmlPreviewRunner::QmlPreviewRunner(RunControl *runControl, const QmlPreviewRunne
runControl->initiateStop(); runControl->initiateStop();
}); });
addStartDependency(&m_refreshTranslationWorker); addStartDependency(new RefreshTranslationWorker(runControl, settings));
} }
void QmlPreviewRunner::start() void QmlPreviewRunner::start()

View File

@@ -1,6 +1,8 @@
// Copyright (C) 2017 Przemyslaw Gorszkowski <pgorszkowski@gmail.com>. // Copyright (C) 2017 Przemyslaw Gorszkowski <pgorszkowski@gmail.com>.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <QObject> #include <QObject>
namespace SilverSearcher { namespace SilverSearcher {

View File

@@ -603,7 +603,7 @@ bool TextDocumentLayout::updateSuggestion(const QTextBlock &block,
{ {
if (TextSuggestion *suggestion = TextDocumentLayout::suggestion(block)) { if (TextSuggestion *suggestion = TextDocumentLayout::suggestion(block)) {
auto positionInBlock = position - block.position(); auto positionInBlock = position - block.position();
if (positionInBlock < suggestion->position()) if (position < suggestion->position())
return false; return false;
const QString start = block.text().left(positionInBlock); const QString start = block.text().left(positionInBlock);
const QString end = block.text().mid(positionInBlock); const QString end = block.text().mid(positionInBlock);

View File

@@ -1919,6 +1919,7 @@ void TextEditorWidgetPrivate::foldLicenseHeader()
if (TextDocumentLayout::canFold(block) && block.next().isVisible()) { if (TextDocumentLayout::canFold(block) && block.next().isVisible()) {
const QString trimmedText = text.trimmed(); const QString trimmedText = text.trimmed();
QStringList commentMarker; QStringList commentMarker;
QStringList docMarker;
if (auto highlighter = qobject_cast<Highlighter *>( if (auto highlighter = qobject_cast<Highlighter *>(
q->textDocument()->syntaxHighlighter())) { q->textDocument()->syntaxHighlighter())) {
const Highlighter::Definition def = highlighter->definition(); const Highlighter::Definition def = highlighter->definition();
@@ -1929,11 +1930,19 @@ void TextEditorWidgetPrivate::foldLicenseHeader()
} }
} else { } else {
commentMarker = QStringList({"/*", "#"}); commentMarker = QStringList({"/*", "#"});
docMarker = QStringList({"/*!", "/**"});
} }
if (Utils::anyOf(commentMarker, [&](const QString &marker) { if (Utils::anyOf(commentMarker, [&](const QString &marker) {
return trimmedText.startsWith(marker); return trimmedText.startsWith(marker);
})) { })) {
if (Utils::anyOf(docMarker, [&](const QString &marker) {
return trimmedText.startsWith(marker)
&& (trimmedText.size() == marker.size()
|| trimmedText.at(marker.size()).isSpace());
})) {
break;
}
TextDocumentLayout::doFoldOrUnfold(block, false); TextDocumentLayout::doFoldOrUnfold(block, false);
moveCursorVisible(); moveCursorVisible();
documentLayout->requestUpdate(); documentLayout->requestUpdate();

View File

@@ -1,6 +1,8 @@
// Copyright (C) 2016 The Qt Company Ltd. // Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <QObject> #include <QObject>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE

View File

@@ -21,6 +21,7 @@
#include <QTimer> #include <QTimer>
#include <QUrl> #include <QUrl>
#include <QVersionNumber> #include <QVersionNumber>
#include <QJsonDocument>
#include <CoreFoundation/CoreFoundation.h> #include <CoreFoundation/CoreFoundation.h>
@@ -104,6 +105,20 @@ static bool findXcodePath(QString *xcodePath)
return (process.exitStatus() == QProcess::NormalExit && QFile::exists(*xcodePath)); return (process.exitStatus() == QProcess::NormalExit && QFile::exists(*xcodePath));
} }
static bool checkDevelopmentStatusViaDeviceCtl(const QString &deviceId)
{
QProcess process;
process.start("/usr/bin/xcrun", QStringList({"devicectl",
"device", "info", "details", "--quiet", "--device", deviceId, "-j", "-"}));
if (!process.waitForFinished(3000)) {
qCWarning(loggingCategory) << "Failed to launch devicectl:" << process.errorString();
return false;
}
auto jsonOutput = QJsonDocument::fromJson(process.readAllStandardOutput());
return jsonOutput["result"]["deviceProperties"]["developerModeStatus"] == "enabled";
}
/*! /*!
* \brief Finds the \e DeveloperDiskImage.dmg path corresponding to \a versionStr and \a buildStr. * \brief Finds the \e DeveloperDiskImage.dmg path corresponding to \a versionStr and \a buildStr.
* *
@@ -1668,13 +1683,20 @@ void DevInfoSession::deviceCallbackReturned()
if (!failure) { if (!failure) {
res[deviceConnectedKey] = QLatin1String("YES"); res[deviceConnectedKey] = QLatin1String("YES");
res[deviceNameKey] = getStringValue(device, nullptr, CFSTR("DeviceName")); res[deviceNameKey] = getStringValue(device, nullptr, CFSTR("DeviceName"));
res[uniqueDeviceId] = getStringValue(device, nullptr, CFSTR("UniqueDeviceID"));
const QString productVersion = getStringValue(device, nullptr, CFSTR("ProductVersion"));
if (productVersion.startsWith("17.")) {
res[developerStatusKey] = checkDevelopmentStatusViaDeviceCtl(res[uniqueDeviceId])
? QLatin1String("Development") : QLatin1String("*off*");
} else {
res[developerStatusKey] = getStringValue(device, res[developerStatusKey] = getStringValue(device,
CFSTR("com.apple.xcode.developerdomain"), CFSTR("com.apple.xcode.developerdomain"),
CFSTR("DeveloperStatus"), CFSTR("DeveloperStatus"),
"*off*"); "*off*");
}
res[cpuArchitectureKey] = getStringValue(device, nullptr, CFSTR("CPUArchitecture")); res[cpuArchitectureKey] = getStringValue(device, nullptr, CFSTR("CPUArchitecture"));
res[uniqueDeviceId] = getStringValue(device, nullptr, CFSTR("UniqueDeviceID"));
const QString productVersion = getStringValue(device, nullptr, CFSTR("ProductVersion"));
const QString buildVersion = getStringValue(device, nullptr, CFSTR("BuildVersion")); const QString buildVersion = getStringValue(device, nullptr, CFSTR("BuildVersion"));
if (!productVersion.isEmpty() && !buildVersion.isEmpty()) if (!productVersion.isEmpty() && !buildVersion.isEmpty())
res[osVersionKey] = QString("%1 (%2)").arg(productVersion, buildVersion); res[osVersionKey] = QString("%1 (%2)").arg(productVersion, buildVersion);