forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/12.0' into qds/dev
Change-Id: I6adb244f39b7d13377cdf377e95d11415603f8ac
This commit is contained in:
42
dist/changelog/changes-12.0.0.md
vendored
42
dist/changelog/changes-12.0.0.md
vendored
@@ -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
|
||||
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
|
||||
|
||||
Set breakpoints in a CMake file and select
|
||||
`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
|
||||
@@ -56,7 +56,7 @@ To enable the ScreenRecorder plugin, select
|
||||
`Help > About Plugins > Utilities > ScreenRecorder`. Then select
|
||||
`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
|
||||
-------
|
||||
@@ -66,14 +66,14 @@ General
|
||||
`Edit > Preferences > Environment > Locator` to keep the sorting from the tool
|
||||
used for the file system index locator filter
|
||||
([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
|
||||
without a unified menu bar
|
||||
([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`
|
||||
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 that the shortcuts for the navigation views could be stuck to opening a
|
||||
view in the right side bar
|
||||
@@ -87,7 +87,7 @@ Help
|
||||
* Added the `Edit > Preferences > Help > General > Antialias` check box for
|
||||
setting the anti-aliasing of text
|
||||
([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
|
||||
-------
|
||||
@@ -95,9 +95,9 @@ Editing
|
||||
* Added the count of selected characters to line and column information
|
||||
on the `Edit` mode toolbar
|
||||
([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
|
||||
([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
|
||||
* Fixed that the historical order of open documents was not restored
|
||||
* Fixed that suggestions were rendered with the wrong tab size
|
||||
@@ -108,12 +108,12 @@ Editing
|
||||
* Updated to LLVM 17.0.1
|
||||
* Added `Tools > C++ > Fold All Comment Blocks` and `Unfold All Comment Blocks`
|
||||
([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`
|
||||
refactoring actions for converting comments between C++-style and
|
||||
C-style
|
||||
([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
|
||||
`Move Function Documentation to Definition` refactoring actions for moving
|
||||
documentation between function declaration and definition
|
||||
@@ -177,7 +177,7 @@ Editing
|
||||
|
||||
* Added support for proxies
|
||||
([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`
|
||||
([QTCREATORBUG-29750](https://bugreports.qt.io/browse/QTCREATORBUG-29750))
|
||||
|
||||
@@ -188,7 +188,7 @@ Editing
|
||||
### Markdown
|
||||
|
||||
* 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
|
||||
|
||||
@@ -203,9 +203,9 @@ Projects
|
||||
* Project specific settings
|
||||
* Added C++ file naming settings
|
||||
([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
|
||||
([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
|
||||
([QTCREATORBUG-8096](https://bugreports.qt.io/browse/QTCREATORBUG-8096))
|
||||
* Improved performance of filtering the target setup page
|
||||
@@ -250,15 +250,15 @@ Projects
|
||||
([QTCREATORBUG-29643](https://bugreports.qt.io/browse/QTCREATORBUG-29643))
|
||||
* 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
|
||||
|
||||
* Added auto-detection of PySide from the installer
|
||||
([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
|
||||
([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
|
||||
|
||||
### qmake
|
||||
@@ -277,7 +277,7 @@ Projects
|
||||
* Added parsing the dependencies from `vcpkg.json` manifest files
|
||||
* 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
|
||||
|
||||
@@ -321,7 +321,7 @@ Terminal
|
||||
* Added support for Windows Terminal schemes
|
||||
* 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
|
||||
-----------------------
|
||||
@@ -331,7 +331,7 @@ Version Control Systems
|
||||
* Added the `Ignore whitespace changes` and `Ignore line moves` options to
|
||||
`Preferences > Version Control > Git > Instant Blame`
|
||||
([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
|
||||
|
||||
|
@@ -50,3 +50,7 @@ install(TARGETS %{ProjectName}App
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
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")
|
||||
|
@@ -33333,147 +33333,147 @@ Möchten Sie sie überschreiben?</translation>
|
||||
<name>QtC::IncrediBuild</name>
|
||||
<message>
|
||||
<source>IncrediBuild for Windows</source>
|
||||
<translation type="unfinished">IncrediBuild für Windows</translation>
|
||||
<translation>IncrediBuild für Windows</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Target and Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ziel und Konfiguration</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Make sure the build command'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>
|
||||
<source>Keep original jobs number:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ursprüngliche Anzahl Jobs beibehalten:</translation>
|
||||
</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>
|
||||
<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>
|
||||
<source>IncrediBuild Distribution Control</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>IncrediBuild-Verteilungskontrolle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Profile.xml:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Profile.xml:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Defines how Automatic Interception Interface should handle the various processes involved in a distributed job. It is not necessary for "Visual Studio" or "Make and Build tools" 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 "Dev Tools" 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 "Dev Tools" zu konfigurieren. Nicht für Kompilierungen mit "Visual Studio" oder "Make and Build tools" benötigt, kann aber zur Konfiguration zusätzlicher Prozesse benutzt werden, die nicht in diesen Paketen enthalten sind.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Avoid local task execution:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Lokales Ausführen von Aufgaben vermeiden:</translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Überschreibt die Option "Avoid task execution on local machine when possible" 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>
|
||||
<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 "Lokales Ausführen von Aufgaben vermeiden" ausgewählt ist.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum CPUs to utilize in the build:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Maximale Anzahl CPUs für das Erstellen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Newest allowed helper machine OS:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Höchste erlaubte OS-Version für Hilfsmaschinen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Oldest allowed helper machine OS:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Niedrigste erlaubte OS-Version für Hilfsmaschinen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Output and Logging</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ausgabe und Protokollierung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Build title:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Kompilierungstitel:</translation>
|
||||
</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>
|
||||
<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 "Build History" und "Build Monitor" benutzt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save IncrediBuild monitor file:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>IncrediBuild Monitor-Datei speichern:</translation>
|
||||
</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>
|
||||
<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>
|
||||
<source>Suppress STDOUT:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>STDOUT unterdrücken:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Does not write anything to the standard output.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Schreibt nichts in die Standardausgabe.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output Log file:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ausgabe-Logdatei:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writes build output to a file.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Schreibt die Ausgabe der Kompilierung in eine Datei.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show Commands in output:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Kommandos in der Ausgabe zeigen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Show Agents in output:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Agents in der Ausgabe anzeigen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Show Time in output:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Zeit in der Ausgabe anzeigen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Hide IncrediBuild Header in output:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>IncrediBuilds Kopfzeile in der Ausgabe verstecken:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Suppresses IncrediBuild'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>
|
||||
<source>Internal IncrediBuild logging level:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Stufe der internen IncrediBuild-Protokollierung:</translation>
|
||||
</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>
|
||||
<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>
|
||||
<source>Miscellaneous</source>
|
||||
@@ -33481,83 +33481,83 @@ Möchten Sie sie überschreiben?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set an Environment Variable:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Umgebungsvariable setzen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Stop on errors:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Bei Fehler anhalten:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When specified, the execution will stop as soon as an error is encountered. This is the default behavior in "Visual Studio" builds, but not the default for "Make and Build tools" or "Dev Tools" 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 "Visual Studio", aber nicht für Kompilierungen mit "Make and Build tools" oder "Dev Tools"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional Arguments:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Zusätzliche Argumente:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Open Build Monitor:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Build Monitor öffnen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>IncrediBuild for Linux</source>
|
||||
<translation type="unfinished">IncrediBuild für Linux</translation>
|
||||
<translation>IncrediBuild für Linux</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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 "nice" an. Der Wert sollte numerisch sein und zwischen -20 und 19 liegen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Nice value:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Wert für "nice":</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Force remote:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>"--force-remote" benutzen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alternate tasks preference:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>"--alternate" benutzen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CMake</source>
|
||||
<translation type="unfinished">CMake</translation>
|
||||
<translation>CMake</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom Command</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Benutzerdefiniertes Kommando</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Command Helper:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Kommando-Helfer:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>Make command:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Make-Kommando:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Make arguments:</source>
|
||||
<translation type="unfinished">Kommandozeilenargumente für make:</translation>
|
||||
<translation>Kommandozeilenargumente für make:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Make</source>
|
||||
<translation type="unfinished">Make</translation>
|
||||
<translation>Make</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -15,7 +15,7 @@ using namespace Android::Internal;
|
||||
AndroidManifestEditorFactory::AndroidManifestEditorFactory()
|
||||
: m_actionHandler(Constants::ANDROID_MANIFEST_EDITOR_ID,
|
||||
Constants::ANDROID_MANIFEST_EDITOR_CONTEXT,
|
||||
TextEditor::TextEditorActionHandler::None,
|
||||
TextEditor::TextEditorActionHandler::UnCommentSelection,
|
||||
[](Core::IEditor *editor) { return static_cast<AndroidManifestEditor *>(editor)->textEditor(); })
|
||||
{
|
||||
setId(Constants::ANDROID_MANIFEST_EDITOR_ID);
|
||||
|
@@ -1,6 +1,8 @@
|
||||
// Copyright (C) 2021 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "androiddeviceinfo.h"
|
||||
|
||||
namespace Android {
|
||||
|
@@ -333,7 +333,7 @@ void QtTestOutputReader::processPlainTextOutput(const QByteArray &outputLine)
|
||||
|
||||
static const QRegularExpression result("^(PASS |FAIL! |XFAIL |XPASS |SKIP |RESULT "
|
||||
"|BPASS |BFAIL |BXPASS |BXFAIL "
|
||||
"|INFO |QWARN |WARNING|QDEBUG |QSYSTEM): (.*)$");
|
||||
"|INFO |QWARN |WARNING|QDEBUG |QSYSTEM|QCRITICAL): (.*)$");
|
||||
|
||||
static const QRegularExpression benchDetails("^\\s+([\\d,.]+ .* per iteration "
|
||||
"\\(total: [\\d,.]+, iterations: \\d+\\))$");
|
||||
|
@@ -61,7 +61,9 @@ ResultType TestResult::resultFromString(const QString &resultString)
|
||||
return ResultType::MessageWarn;
|
||||
if (resultString == "qfatal")
|
||||
return ResultType::MessageFatal;
|
||||
if ((resultString == "system") || (resultString == "qsystem"))
|
||||
if (resultString == "error" || resultString == "qcritical")
|
||||
return ResultType::MessageError;
|
||||
if (resultString == "system" || resultString == "qsystem")
|
||||
return ResultType::MessageSystem;
|
||||
if (resultString == "bpass")
|
||||
return ResultType::BlacklistedPass;
|
||||
|
@@ -140,6 +140,7 @@ void TestResultItem::updateResult(bool &changed, ResultType addedChildType,
|
||||
break;
|
||||
case ResultType::ExpectedFail:
|
||||
case ResultType::MessageWarn:
|
||||
case ResultType::MessageError:
|
||||
case ResultType::MessageSystem:
|
||||
case ResultType::Skip:
|
||||
case ResultType::BlacklistedFail:
|
||||
|
@@ -683,6 +683,11 @@ void ClangModelManagerSupport::watchForExternalChanges()
|
||||
if (!LanguageClientManager::hasClients<ClangdClient>())
|
||||
return;
|
||||
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());
|
||||
if (!ProjectFile::isSource(kind) && !ProjectFile::isHeader(kind))
|
||||
continue;
|
||||
|
@@ -2052,21 +2052,15 @@ void ClangdTestExternalChanges::test()
|
||||
QVERIFY(curDoc->marks().isEmpty());
|
||||
|
||||
// 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");
|
||||
docToChange->setSilentReload();
|
||||
QFile otherSource(filePath("mainwindow.cpp").toString());
|
||||
QVERIFY(otherSource.open(QIODevice::WriteOnly));
|
||||
otherSource.write("blubb");
|
||||
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())
|
||||
QVERIFY(waitForSignalOrTimeout(newClient, &ClangdClient::textMarkCreated, timeOutInMs()));
|
||||
QVERIFY(waitForSignalOrTimeout(client(), &ClangdClient::textMarkCreated, timeOutInMs()));
|
||||
}
|
||||
|
||||
ClangdTestIndirectChanges::ClangdTestIndirectChanges()
|
||||
|
@@ -281,8 +281,11 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
|
||||
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;
|
||||
}
|
||||
|
||||
const FilePath targetCMakeFile = target.backtrace.last().path;
|
||||
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(),
|
||||
targetCMakeFile.fileName().toStdString(),
|
||||
errorString)) {
|
||||
qCCritical(cmakeBuildSystemLog).noquote()
|
||||
<< targetCMakeFile.path() << "failed to parse! Error:"
|
||||
<< QString::fromStdString(errorString);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -308,8 +314,11 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
|
||||
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;
|
||||
}
|
||||
|
||||
// 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
|
||||
@@ -383,13 +392,20 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
|
||||
Core::EditorManager::openEditorAt({targetCMakeFile, line, column + extraChars},
|
||||
Constants::CMAKE_EDITOR_ID,
|
||||
Core::EditorManager::DoNotMakeVisible));
|
||||
if (!editor)
|
||||
if (!editor) {
|
||||
qCCritical(cmakeBuildSystemLog).noquote()
|
||||
<< "BaseTextEditor cannot be obtained for" << targetCMakeFile.path() << line
|
||||
<< int(column + extraChars);
|
||||
return false;
|
||||
}
|
||||
|
||||
editor->insert(snippet);
|
||||
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;
|
||||
}
|
||||
|
||||
if (notAdded)
|
||||
notAdded->clear();
|
||||
@@ -536,6 +552,9 @@ RemovedFilesFromProject CMakeBuildSystem::removeFiles(Node *context,
|
||||
if (filePos) {
|
||||
if (!filePos.value().cmakeFile.exists()) {
|
||||
badFiles << file;
|
||||
|
||||
qCCritical(cmakeBuildSystemLog).noquote()
|
||||
<< "File" << filePos.value().cmakeFile.path() << "does not exist.";
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -548,6 +567,11 @@ RemovedFilesFromProject CMakeBuildSystem::removeFiles(Node *context,
|
||||
Core::EditorManager::DoNotMakeVisible));
|
||||
if (!editor) {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -562,6 +586,10 @@ RemovedFilesFromProject CMakeBuildSystem::removeFiles(Node *context,
|
||||
editor->editorWidget()->autoIndent();
|
||||
if (!Core::DocumentManager::saveDocument(editor->document())) {
|
||||
badFiles << file;
|
||||
|
||||
qCCritical(cmakeBuildSystemLog).noquote()
|
||||
<< "Changes to" << filePos.value().cmakeFile.path()
|
||||
<< "could not be saved.";
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
@@ -625,8 +653,11 @@ bool CMakeBuildSystem::renameFile(Node *context,
|
||||
";");
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
BaseTextEditor *editor = qobject_cast<BaseTextEditor *>(
|
||||
Core::EditorManager::openEditorAt({fileToRename.cmakeFile,
|
||||
@@ -635,8 +666,12 @@ bool CMakeBuildSystem::renameFile(Node *context,
|
||||
- 1)},
|
||||
Constants::CMAKE_EDITOR_ID,
|
||||
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;
|
||||
}
|
||||
|
||||
// If quotes were used for the source file, skip the starting quote
|
||||
if (fileToRename.argumentPosition.Delim == cmListFileArgument::Quoted)
|
||||
@@ -646,8 +681,11 @@ bool CMakeBuildSystem::renameFile(Node *context,
|
||||
editor->replace(fileToRename.relativeFileName.length(), newRelPathName);
|
||||
|
||||
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 true;
|
||||
}
|
||||
|
@@ -664,7 +664,10 @@ static void addCompileGroups(ProjectNode *targetRoot,
|
||||
sourceDirectory,
|
||||
targetRoot);
|
||||
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 {
|
||||
for (auto &fileNodes : current)
|
||||
insertNode->addNode(std::move(fileNodes));
|
||||
|
@@ -1,6 +1,8 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cmakeprojectnodes.h"
|
||||
|
||||
#include <utils/filepath.h>
|
||||
|
@@ -72,7 +72,7 @@ void CopilotSuggestion::reset()
|
||||
|
||||
int CopilotSuggestion::position()
|
||||
{
|
||||
return m_start.position();
|
||||
return m_start.selectionEnd();
|
||||
}
|
||||
|
||||
} // namespace Copilot::Internal
|
||||
|
@@ -481,7 +481,8 @@ void DebuggerRunTool::start()
|
||||
|
||||
runControl()->setDisplayName(m_runParameters.displayName);
|
||||
|
||||
m_engine = createDapEngine(runControl()->runMode());
|
||||
if (!m_engine)
|
||||
m_engine = createDapEngine(runControl()->runMode());
|
||||
|
||||
if (!m_engine) {
|
||||
if (m_runParameters.isCppDebugging()) {
|
||||
|
@@ -1,26 +1,5 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** 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.
|
||||
**
|
||||
****************************************************************************/
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@@ -1,26 +1,5 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** 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.
|
||||
**
|
||||
****************************************************************************/
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "emacskeysplugin.h"
|
||||
|
||||
|
@@ -1,26 +1,5 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** 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.
|
||||
**
|
||||
****************************************************************************/
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@@ -1,26 +1,5 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** 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.
|
||||
**
|
||||
****************************************************************************/
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "emacskeysstate.h"
|
||||
|
||||
|
@@ -1,26 +1,5 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** 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.
|
||||
**
|
||||
****************************************************************************/
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@@ -30,6 +30,7 @@
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QMessageBox>
|
||||
#include <QPushButton>
|
||||
#include <QRegularExpression>
|
||||
@@ -430,11 +431,17 @@ bool kitIsUpToDate(const Kit *kit,
|
||||
QList<Kit *> existingKits(const McuTarget *mcuTarget)
|
||||
{
|
||||
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 kit->value(KIT_MCUTARGET_KITVERSION_KEY) == KIT_VERSION
|
||||
&& (!mcuTarget
|
||||
|| (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_OS_KEY).toInt()
|
||||
== static_cast<int>(mcuTarget->os())
|
||||
@@ -590,6 +597,9 @@ void upgradeKitsByCreatingNewPackage(const SettingsHandler::Ptr &settingsHandler
|
||||
if (upgradeOption == UpgradeOption::Replace) {
|
||||
for (auto existingKit : kits)
|
||||
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())
|
||||
|
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <projectexplorer/buildconfiguration.h>
|
||||
#include <projectexplorer/project.h>
|
||||
#include <projectexplorer/projectexplorer.h>
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <projectexplorer/target.h>
|
||||
|
||||
@@ -58,9 +59,20 @@ public:
|
||||
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};
|
||||
};
|
||||
|
||||
bool FlashAndRunConfiguration::disabled = false;
|
||||
|
||||
class FlashAndRunWorker : public SimpleTargetRunner
|
||||
{
|
||||
public:
|
||||
@@ -74,6 +86,15 @@ public:
|
||||
setWorkingDirectory(target->activeBuildConfiguration()->buildDirectory());
|
||||
setEnvironment(target->activeBuildConfiguration()->environment());
|
||||
});
|
||||
|
||||
connect(runControl, &RunControl::started, []() {
|
||||
FlashAndRunConfiguration::disabled = true;
|
||||
ProjectExplorerPlugin::updateRunActions();
|
||||
});
|
||||
connect(runControl, &RunControl::stopped, []() {
|
||||
FlashAndRunConfiguration::disabled = false;
|
||||
ProjectExplorerPlugin::updateRunActions();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
@@ -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
|
||||
{
|
||||
return m_qulVersion;
|
||||
|
@@ -56,6 +56,12 @@ public:
|
||||
QString desktopCompilerId() 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:
|
||||
const QVersionNumber m_qulVersion;
|
||||
const Platform m_platform;
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#include "../projectexplorertr.h"
|
||||
#include "../projecttree.h"
|
||||
|
||||
#include <coreplugin/editormanager/documentmodel.h>
|
||||
#include <coreplugin/editormanager/editormanager.h>
|
||||
#include <coreplugin/editormanager/ieditor.h>
|
||||
#include <coreplugin/messagemanager.h>
|
||||
@@ -351,6 +352,14 @@ void JsonWizard::accept()
|
||||
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);
|
||||
if (!JsonWizardGenerator::writeFiles(this, &m_files, &errorMessage)) {
|
||||
if (!errorMessage.isEmpty())
|
||||
|
@@ -290,7 +290,7 @@ public:
|
||||
void checkState(RunControlState expectedState);
|
||||
void setState(RunControlState state);
|
||||
|
||||
void debugMessage(const QString &msg);
|
||||
void debugMessage(const QString &msg) const;
|
||||
|
||||
void initiateStart();
|
||||
void initiateReStart();
|
||||
@@ -1039,6 +1039,10 @@ bool RunControl::supportsReRunning() const
|
||||
bool RunControlPrivate::supportsReRunning() const
|
||||
{
|
||||
for (RunWorker *worker : m_workers) {
|
||||
if (!worker) {
|
||||
debugMessage("Found unknown deleted worker when checking for re-run support");
|
||||
return false;
|
||||
}
|
||||
if (!worker->d->supportsReRunning)
|
||||
return false;
|
||||
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;
|
||||
}
|
||||
|
@@ -89,8 +89,8 @@ void PySideInstaller::installPyside(const FilePath &python,
|
||||
const Utils::QtcSettings *settings = Core::ICore::settings(QSettings::SystemScope);
|
||||
|
||||
const FilePaths requirementsList
|
||||
= Utils::transform(settings->value("Python/PySideWheelsRequirements").toList(),
|
||||
&FilePath::fromSettings);
|
||||
= Utils::transform(settings->value("Python/PySideWheelsRequirements").toStringList(),
|
||||
&FilePath::fromString);
|
||||
for (const FilePath &requirements : requirementsList) {
|
||||
if (requirements.exists()) {
|
||||
auto version = QVersionNumber::fromString(requirements.parentDir().fileName());
|
||||
|
@@ -1,6 +1,8 @@
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// 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/jsonwizardpagefactory.h>
|
||||
#include <projectexplorer/runconfigurationaspects.h>
|
||||
|
@@ -84,11 +84,10 @@ private:
|
||||
void stop() override;
|
||||
|
||||
QmlPreviewConnectionManager m_connectionManager;
|
||||
RefreshTranslationWorker m_refreshTranslationWorker;
|
||||
};
|
||||
|
||||
QmlPreviewRunner::QmlPreviewRunner(RunControl *runControl, const QmlPreviewRunnerSetting &settings)
|
||||
: RunWorker(runControl), m_refreshTranslationWorker(runControl, settings)
|
||||
: RunWorker(runControl)
|
||||
{
|
||||
setId("QmlPreviewRunner");
|
||||
m_connectionManager.setFileLoader(settings.fileLoader);
|
||||
@@ -134,7 +133,7 @@ QmlPreviewRunner::QmlPreviewRunner(RunControl *runControl, const QmlPreviewRunne
|
||||
runControl->initiateStop();
|
||||
});
|
||||
|
||||
addStartDependency(&m_refreshTranslationWorker);
|
||||
addStartDependency(new RefreshTranslationWorker(runControl, settings));
|
||||
}
|
||||
|
||||
void QmlPreviewRunner::start()
|
||||
|
@@ -1,6 +1,8 @@
|
||||
// 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
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
|
||||
namespace SilverSearcher {
|
||||
|
@@ -603,7 +603,7 @@ bool TextDocumentLayout::updateSuggestion(const QTextBlock &block,
|
||||
{
|
||||
if (TextSuggestion *suggestion = TextDocumentLayout::suggestion(block)) {
|
||||
auto positionInBlock = position - block.position();
|
||||
if (positionInBlock < suggestion->position())
|
||||
if (position < suggestion->position())
|
||||
return false;
|
||||
const QString start = block.text().left(positionInBlock);
|
||||
const QString end = block.text().mid(positionInBlock);
|
||||
|
@@ -1919,6 +1919,7 @@ void TextEditorWidgetPrivate::foldLicenseHeader()
|
||||
if (TextDocumentLayout::canFold(block) && block.next().isVisible()) {
|
||||
const QString trimmedText = text.trimmed();
|
||||
QStringList commentMarker;
|
||||
QStringList docMarker;
|
||||
if (auto highlighter = qobject_cast<Highlighter *>(
|
||||
q->textDocument()->syntaxHighlighter())) {
|
||||
const Highlighter::Definition def = highlighter->definition();
|
||||
@@ -1929,11 +1930,19 @@ void TextEditorWidgetPrivate::foldLicenseHeader()
|
||||
}
|
||||
} else {
|
||||
commentMarker = QStringList({"/*", "#"});
|
||||
docMarker = QStringList({"/*!", "/**"});
|
||||
}
|
||||
|
||||
if (Utils::anyOf(commentMarker, [&](const QString &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);
|
||||
moveCursorVisible();
|
||||
documentLayout->requestUpdate();
|
||||
|
Submodule src/shared/qbs updated: d99256dd79...5ef6880777
@@ -1,6 +1,8 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include <QTimer>
|
||||
#include <QUrl>
|
||||
#include <QVersionNumber>
|
||||
#include <QJsonDocument>
|
||||
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
|
||||
@@ -104,6 +105,20 @@ static bool findXcodePath(QString *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.
|
||||
*
|
||||
@@ -1668,13 +1683,20 @@ void DevInfoSession::deviceCallbackReturned()
|
||||
if (!failure) {
|
||||
res[deviceConnectedKey] = QLatin1String("YES");
|
||||
res[deviceNameKey] = getStringValue(device, nullptr, CFSTR("DeviceName"));
|
||||
res[developerStatusKey] = getStringValue(device,
|
||||
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,
|
||||
CFSTR("com.apple.xcode.developerdomain"),
|
||||
CFSTR("DeveloperStatus"),
|
||||
"*off*");
|
||||
}
|
||||
|
||||
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"));
|
||||
if (!productVersion.isEmpty() && !buildVersion.isEmpty())
|
||||
res[osVersionKey] = QString("%1 (%2)").arg(productVersion, buildVersion);
|
||||
|
Reference in New Issue
Block a user