Merge "Merge remote-tracking branch 'origin/11.0'"

This commit is contained in:
The Qt Project
2023-07-31 10:00:24 +00:00
32 changed files with 375 additions and 219 deletions

View File

@@ -7,7 +7,7 @@ on:
- 'doc/**'
env:
QT_VERSION: 6.5.1
QT_VERSION: 6.5.2
MACOS_DEPLOYMENT_TARGET: 10.15
CLANG_VERSION: 16.0.2
ELFUTILS_VERSION: 0.175

View File

@@ -10,7 +10,7 @@ instructions:
variableValue: https://ci-files02-hki.ci.qt.io/packages/jenkins/qtcreator_libclang/libclang-release_16.0.2-based
- type: EnvironmentVariable
variableName: QTC_QT_BASE_URL
variableValue: "https://ci-files02-hki.ci.qt.io/packages/jenkins/archive/qt/6.5/6.5.1-released/Qt"
variableValue: "https://ci-files02-hki.ci.qt.io/packages/jenkins/archive/qt/6.5/6.5.2-released/Qt"
- type: EnvironmentVariable
variableName: QTC_QT_MODULES
variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine"

View File

@@ -163,8 +163,8 @@ def qdump__std____1__stack(d, value):
d.putBetterType(value.type)
def GetChildMemberWithName(value: DumperBase.Value, name: str) -> DumperBase.Value:
members: list[DumperBase.Value] = value.members(True)
def GetChildMemberWithName(value, name):
members = value.members(True)
for member in members:
if member.name == name:
@@ -172,8 +172,8 @@ def GetChildMemberWithName(value: DumperBase.Value, name: str) -> DumperBase.Val
return None
def GetIndexOfChildWithName(value: DumperBase.Value, name: str) -> int:
members: list[DumperBase.Value] = value.members(True)
def GetIndexOfChildWithName(value, name):
members = value.members(True)
for i, member in enumerate(members):
if member.name == name:
@@ -229,8 +229,8 @@ def std_1_string_dumper_v2(d, value):
if not Short_Sp:
raise Exception("Could not find __s")
Is_Long: DumperBase.Value = GetChildMemberWithName(Short_Sp, "__is_long_")
Size_Sp: DumperBase.Value = GetChildMemberWithName(Short_Sp, "__size_")
Is_Long = GetChildMemberWithName(Short_Sp, "__is_long_")
Size_Sp = GetChildMemberWithName(Short_Sp, "__size_")
if not Size_Sp:
raise Exception("Could not find __size_")

View File

@@ -31686,48 +31686,48 @@ Hinweis: Dies macht Sie anfällig für Man-in-the-middle-Angriffe.</translation>
<name>QtC::Haskell</name>
<message>
<source>Release</source>
<translation type="unfinished">Release</translation>
<translation>Release</translation>
</message>
<message>
<source>General</source>
<translation type="unfinished">Allgemein</translation>
<translation>Allgemein</translation>
</message>
<message>
<source>Build directory:</source>
<translation type="unfinished">Build-Verzeichnis:</translation>
<translation>Build-Verzeichnis:</translation>
</message>
<message>
<source>GHCi</source>
<translation type="unfinished"></translation>
<translation>GHCi</translation>
</message>
<message>
<source>Run GHCi</source>
<translation type="unfinished"></translation>
<translation>GHCi ausführen</translation>
</message>
<message>
<source>Haskell</source>
<comment>SnippetProvider</comment>
<translation type="unfinished"></translation>
<translation>Haskell</translation>
</message>
<message>
<source>Executable</source>
<translation type="unfinished">Ausführbare Datei</translation>
<translation>Ausführbare Datei</translation>
</message>
<message>
<source>Haskell</source>
<translation type="unfinished"></translation>
<translation>Haskell</translation>
</message>
<message>
<source>Stack executable:</source>
<translation type="unfinished"></translation>
<translation>Ausführbare Stack-Datei:</translation>
</message>
<message>
<source>Choose Stack Executable</source>
<translation type="unfinished"></translation>
<translation>Ausführbare Datei für Stack auswählen</translation>
</message>
<message>
<source>Stack Build</source>
<translation type="unfinished"></translation>
<translation>Erstellen mit Stack</translation>
</message>
</context>
<context>
@@ -46082,7 +46082,7 @@ Are you sure?</source>
</message>
<message>
<source>Checking that files can be created in %1...</source>
<translation type="unfinished"></translation>
<translation>Überprüfe, ob Dateien in %1 erstellt werden können...</translation>
</message>
<message>
<source>Files can be created in /var/run.</source>
@@ -46090,11 +46090,11 @@ Are you sure?</source>
</message>
<message>
<source>An error occurred while checking that files can be created in %1.</source>
<translation type="unfinished"></translation>
<translation>Beim Überprüfen, ob Dateien in %1 erstellt werden können, ist ein Fehler aufgetreten.</translation>
</message>
<message>
<source>Files cannot be created in %1.</source>
<translation type="unfinished"></translation>
<translation>In %1 können keine Dateien erstellt werden.</translation>
</message>
<message>
<source>Warning: &quot;slog2info&quot; is not found on the device, debug output not available.</source>
@@ -46173,34 +46173,34 @@ Möchten Sie fortfahren?</translation>
</message>
<message>
<source>No files need to be uploaded.</source>
<translation type="unfinished">Es müssen keine Dateien hochgeladen werden.</translation>
<translation>Es müssen keine Dateien hochgeladen werden.</translation>
</message>
<message numerus="yes">
<source>%n file(s) need to be uploaded.</source>
<translation type="unfinished">
<translation>
<numerusform>Eine Datei muss hochgeladen werden.</numerusform>
<numerusform>%n Dateien müssen hochgeladen werden.</numerusform>
</translation>
</message>
<message>
<source>Local file &quot;%1&quot; does not exist.</source>
<translation type="unfinished">Es gibt keine lokale Datei &quot;%1&quot;.</translation>
<translation>Es gibt keine lokale Datei &quot;%1&quot;.</translation>
</message>
<message>
<source>Remote chmod failed for file &quot;%1&quot;: %2</source>
<translation type="unfinished">&quot;chmod&quot; für die entfernte Datei &quot;%1&quot; ist fehlgeschlagen: %2</translation>
<translation>&quot;chmod&quot; für die entfernte Datei &quot;%1&quot; ist fehlgeschlagen: %2</translation>
</message>
<message>
<source>No device configuration set.</source>
<translation type="unfinished">Es ist keine Gerätekonfiguration eingestellt.</translation>
<translation>Es ist keine Gerätekonfiguration gesetzt.</translation>
</message>
<message>
<source>No deployment action necessary. Skipping.</source>
<translation type="unfinished">Alle Dateien sind auf dem aktuellen Stand, es ist keine Installation erforderlich.</translation>
<translation>Alle Dateien sind auf dem aktuellen Stand, es ist keine Installation erforderlich.</translation>
</message>
<message>
<source>All files successfully deployed.</source>
<translation type="unfinished">Alle Dateien erfolgreich versandt.</translation>
<translation>Deployment für alle Dateien erfolgreich.</translation>
</message>
<message>
<source>Deploy Qt to QNX Device</source>
@@ -46208,7 +46208,7 @@ Möchten Sie fortfahren?</translation>
</message>
<message>
<source>Create Kit for %1</source>
<translation type="unfinished"></translation>
<translation>Kit für %1 erstellen</translation>
</message>
<message>
<source>Configuration Information:</source>
@@ -46232,11 +46232,11 @@ Möchten Sie fortfahren?</translation>
</message>
<message>
<source>Compiler:</source>
<translation type="unfinished"></translation>
<translation>Compiler:</translation>
</message>
<message>
<source>Architectures:</source>
<translation type="unfinished"></translation>
<translation>Architekturen:</translation>
</message>
<message>
<source>Remove</source>
@@ -46252,11 +46252,11 @@ Möchten Sie fortfahren?</translation>
</message>
<message>
<source>Configuration already exists.</source>
<translation type="unfinished"></translation>
<translation>Konfiguration existiert bereits.</translation>
</message>
<message>
<source>Configuration is not valid.</source>
<translation type="unfinished"></translation>
<translation>Konfiguration ist ungültig.</translation>
</message>
<message>
<source>Remove QNX Configuration</source>
@@ -46957,7 +46957,7 @@ wirklich löschen?</translation>
</message>
<message>
<source>Key deployment failed.</source>
<translation type="unfinished"></translation>
<translation>Deployment des Schlüssels fehlgeschlagen.</translation>
</message>
<message>
<source>Deployment finished successfully.</source>
@@ -47003,7 +47003,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
</message>
<message>
<source>Uploading package to device...</source>
<translation type="unfinished"></translation>
<translation>Lade Paket auf das Gerät hoch...</translation>
</message>
<message>
<source>Successfully uploaded package file.</source>
@@ -47015,19 +47015,19 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
</message>
<message>
<source>Successfully installed package file.</source>
<translation type="unfinished"></translation>
<translation>Die Paketdatei wurde erfolgreich installiert.</translation>
</message>
<message>
<source>Failed to start &quot;stat&quot;: %1</source>
<translation type="unfinished"></translation>
<translation>&quot;stat&quot; konnte nicht gestartet werden: %1</translation>
</message>
<message>
<source>&quot;stat&quot; crashed.</source>
<translation type="unfinished"></translation>
<translation>&quot;stat&quot; ist abgestürzt.</translation>
</message>
<message>
<source>&quot;stat&quot; failed with exit code %1: %2</source>
<translation type="unfinished"></translation>
<translation>&quot;stat&quot; ist mit Rückgabewert %1 fehlgeschlagen: %2</translation>
</message>
<message>
<source>Failed to retrieve remote timestamp for file &quot;%1&quot;. Incremental deployment will not work. Error message was: %2</source>
@@ -47066,7 +47066,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
</message>
<message>
<source>Ignore missing files</source>
<translation type="unfinished"></translation>
<translation>Fehlende Dateien ignorieren</translation>
</message>
<message>
<source>Upload files via SFTP</source>
@@ -47074,19 +47074,19 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
</message>
<message>
<source>Sending echo to device...</source>
<translation type="unfinished"></translation>
<translation>Sende Echo zum Gerät...</translation>
</message>
<message>
<source>echo failed: %1</source>
<translation type="unfinished"></translation>
<translation>Echo fehlgeschlagen: %1</translation>
</message>
<message>
<source>echo failed.</source>
<translation type="unfinished"></translation>
<translation>Echo fehlgeschlagen.</translation>
</message>
<message>
<source>Device replied to echo with expected contents.</source>
<translation type="unfinished"></translation>
<translation>Das Gerät hat mit dem erwarteten Inhalt auf das Echo geantwortet.</translation>
</message>
<message>
<source>Checking kernel version...</source>
@@ -47110,7 +47110,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
</message>
<message>
<source>Device replied to echo with unexpected contents: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
<translation>Das Gerät hat auf das Echo mit unerwartetem Inhalt geantwortet: &quot;%1&quot;</translation>
</message>
<message>
<source>The following specified ports are currently in use: %1</source>
@@ -47119,56 +47119,62 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
<message>
<source>Some tools will not work out of the box.
</source>
<translation type="unfinished"></translation>
<translation>Einige Werkzeuge werden nicht ohne weitere Einstellungen funktionieren.
</translation>
</message>
<message>
<source>Checking whether &quot;%1&quot; works...</source>
<translation type="unfinished"></translation>
<translation>Überprüfe, ob &quot;%1&quot; funktioniert...</translation>
</message>
<message>
<source>Failed to start &quot;%1&quot;: %2
</source>
<translation type="unfinished"></translation>
<translation>&quot;%1&quot; konnte nicht gestartet werden: %2
</translation>
</message>
<message>
<source>&quot;%1&quot; crashed.
</source>
<translation type="unfinished"></translation>
<translation>&quot;%1&quot; ist abgestürzt.
</translation>
</message>
<message>
<source>&quot;%1&quot; failed with exit code %2: %3
</source>
<translation type="unfinished"></translation>
<translation>&quot;%1&quot; ist mit Rückgabewert %2 fehlgeschlagen: %3
</translation>
</message>
<message>
<source>&quot;%1&quot; is functional.
</source>
<translation type="unfinished"></translation>
<translation>&quot;%1&quot; funktioniert.
</translation>
</message>
<message>
<source>&quot;%1&quot; will be used for deployment, because &quot;%2&quot; and &quot;%3&quot; are not available.
</source>
<translation type="unfinished"></translation>
<translation>&quot;%1&quot; wird für das Deployment benutzt, da &quot;%2&quot; und &quot;%3&quot; nicht verfügbar sind.
</translation>
</message>
<message>
<source>Checking if required commands are available...</source>
<translation type="unfinished"></translation>
<translation>Überprüfe Verfügbarkeit der benötigten Kommandos...</translation>
</message>
<message>
<source>%1...</source>
<translation type="unfinished"></translation>
<translation>%1...</translation>
</message>
<message>
<source>%1 found.</source>
<translation type="unfinished">%1 gefunden.</translation>
<translation>%1 gefunden.</translation>
</message>
<message>
<source>An error occurred while checking for %1.</source>
<translation type="unfinished">Bei der Prüfung von %1 trat ein Fehler auf.</translation>
<translation>Bei der Überprüfung von %1 trat ein Fehler auf.</translation>
</message>
<message>
<source>%1 not found.</source>
<translation type="unfinished">%1 nicht gefunden.</translation>
<translation>%1 nicht gefunden.</translation>
</message>
<message>
<source>Deployment to this device will not work out of the box.
@@ -47182,7 +47188,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
</message>
<message>
<source>Deploy to Remote Linux Host</source>
<translation>Auf Linux-Mobilgerät ausführen</translation>
<translation>Deployment auf entferntes Linuxgerät</translation>
</message>
<message>
<source>Installing package failed.</source>
@@ -47290,7 +47296,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
</message>
<message>
<source>The device&apos;s SSH port number:</source>
<translation type="unfinished"></translation>
<translation>SSH-Port des Geräts:</translation>
</message>
<message>
<source>The username to log into the device:</source>
@@ -47326,11 +47332,12 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
</message>
<message>
<source>Source %1 and %2</source>
<translation type="unfinished"></translation>
<translatorcomment>Source (verb) /etc/profile and $HOME/.profile</translatorcomment>
<translation>%1 und %2 einbeziehen</translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
<translation>Direkt</translation>
</message>
<message>
<source>&amp;Username:</source>
@@ -47338,11 +47345,12 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
</message>
<message>
<source>QML runtime executable:</source>
<translation type="unfinished"></translation>
<translation>Ausführbare Datei der QML-Runtime:</translation>
</message>
<message>
<source>Access via:</source>
<translation type="unfinished"></translation>
<translatorcomment>drop down with devices</translatorcomment>
<translation>Zugriff über:</translation>
</message>
<message>
<source>Physical Device</source>
@@ -47402,62 +47410,65 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
</message>
<message>
<source>Cannot establish SSH connection: ssh binary &quot;%1&quot; does not exist.</source>
<translation type="unfinished">SSH-Verbindung kann nicht aufgebaut werden: Eine ausführbare SSH-Datei &quot;%1&quot; existiert nicht.</translation>
<translation>SSH-Verbindung kann nicht hergestellt werden: Eine ausführbare SSH-Datei &quot;%1&quot; existiert nicht.</translation>
</message>
<message>
<source>Cannot establish SSH connection: Failed to create temporary directory for control socket: %1</source>
<translation type="unfinished">SSH-Verbindung kann nicht aufgebaut werden: Es konnte kein temporäres Verzeichnis für den Steuer-Socket angelegt werden: %1</translation>
<translation>SSH-Verbindung kann nicht hergestellt werden: Es konnte kein temporäres Verzeichnis für den Steuer-Socket angelegt werden: %1</translation>
</message>
<message>
<source>Cannot establish SSH connection.
Control process failed to start.</source>
<translation type="unfinished"></translation>
<translation>SSH-Verbindung kann nicht hergestellt werden.
Der Kontrollprozess konnte nicht gestartet werden.</translation>
</message>
<message>
<source>SSH connection failure.</source>
<translation type="unfinished">SSH-Verbindungsfehler.</translation>
<translation>SSH-Verbindungsfehler.</translation>
</message>
<message>
<source>SSH connection failure:</source>
<translation type="unfinished"></translation>
<translation>SSH-Verbindungsfehler:</translation>
</message>
<message>
<source>Remote Linux</source>
<translation type="unfinished"></translation>
<translation>Entferntes Linuxgerät</translation>
</message>
<message>
<source>Failed: %1</source>
<translation type="unfinished"></translation>
<translation>Fehlgeschlagen: %1</translation>
</message>
<message>
<source>Remote Linux Device</source>
<translation type="unfinished"></translation>
<translation>Entferntes Linuxgerät</translation>
</message>
<message>
<source>&quot;%1&quot; failed to start: %2</source>
<translation type="unfinished">&quot;%1&quot; konnte nicht gestartet werden: %2</translation>
<translation>&quot;%1&quot; konnte nicht gestartet werden: %2</translation>
</message>
<message>
<source>&quot;%1&quot; crashed.</source>
<translation type="unfinished">&quot;%1&quot; ist abgestürzt.</translation>
<translation>&quot;%1&quot; ist abgestürzt.</translation>
</message>
<message>
<source>&quot;sftp&quot; binary &quot;%1&quot; does not exist.</source>
<translation type="unfinished"></translation>
<translation>Ausführbare &quot;sftp&quot;-Datei &quot;%1&quot; existiert nicht.</translation>
</message>
<message>
<source>Creating directory: %1
</source>
<translation type="unfinished"></translation>
<translation>Erstelle Verzeichnis: %1
</translation>
</message>
<message>
<source>Failed.</source>
<translation type="unfinished">Fehlgeschlagen.</translation>
<translation>Fehlgeschlagen.</translation>
</message>
<message>
<source>Copying %1/%2: %3 -&gt; %4
</source>
<translation type="unfinished"></translation>
<translation>Kopiere %1/%2: %3 -&gt; %4
</translation>
</message>
<message>
<source>Clean Environment</source>
@@ -47559,7 +47570,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message>
<message>
<source>Deploy via rsync: failed to create remote directories:</source>
<translation type="unfinished"></translation>
<translation>Deployment über rsync: Erstellen von entfernten Verzeichnissen ist fehlgeschlagen:</translation>
</message>
<message>
<source>rsync failed to start: %1</source>
@@ -47583,7 +47594,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message>
<message>
<source>rsync is only supported for transfers between different devices.</source>
<translation type="unfinished"></translation>
<translation>rsync wird nur für das Übertragen zwischen unterschiedlichen Geräten unterstützt.</translation>
</message>
<message>
<source>Deploy files via rsync</source>
@@ -47591,7 +47602,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message>
<message>
<source>Command:</source>
<translation type="unfinished"></translation>
<translation>Kommando:</translation>
</message>
<message>
<source>Install root:</source>
@@ -47599,43 +47610,43 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message>
<message>
<source>Clean install root first:</source>
<translation type="unfinished"></translation>
<translation>Install-Root zuerst bereinigen:</translation>
</message>
<message>
<source>Full command line:</source>
<translation type="unfinished"></translation>
<translation>Vollständige Kommandozeile:</translation>
</message>
<message>
<source>Custom command line:</source>
<translation type="unfinished"></translation>
<translation>Benutzerdefinierte Kommandozeile:</translation>
</message>
<message>
<source>Use custom command line instead:</source>
<translation type="unfinished"></translation>
<translation>Benutzerdefinierte Kommandozeile verwenden:</translation>
</message>
<message>
<source>Install into temporary host directory</source>
<translation type="unfinished"></translation>
<translation>In temporäres Host-Verzeichnis installieren</translation>
</message>
<message>
<source>You must provide an install root.</source>
<translation type="unfinished"></translation>
<translation>Sie müssen ein Installationsverzeichnis angeben.</translation>
</message>
<message>
<source>The install root &quot;%1&quot; could not be cleaned.</source>
<translation type="unfinished"></translation>
<translation>Das Installationsverzeichnis &quot;%1&quot; konnte nicht bereinigt werden.</translation>
</message>
<message>
<source>The install root &quot;%1&quot; could not be created.</source>
<translation type="unfinished"></translation>
<translation>Das Installationsverzeichnis &quot;%1&quot; konnte nicht erstellt werden.</translation>
</message>
<message>
<source>The &quot;make install&quot; step should probably not be last in the list of deploy steps. Consider moving it up.</source>
<translation type="unfinished"></translation>
<translation>Der &quot;make install&quot;-Schritt sollte wahrscheinlich nicht der letzte Deployment-Schritt sein. Ziehen Sie in Betracht, ihn nach oben zu verschieben.</translation>
</message>
<message>
<source>You need to add an install statement to your CMakeLists.txt file for deployment to work.</source>
<translation type="unfinished"></translation>
<translation>Sie müssen zu Ihrer CMakeLists.txt-Datei eine &quot;install&quot;-Anweisung hinzufügen, damit das Deployment funktioniert.</translation>
</message>
<message>
<source>Executable on device:</source>
@@ -47651,59 +47662,59 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message>
<message>
<source>New Remote Linux Device Configuration Setup</source>
<translation type="unfinished"></translation>
<translation>Einrichtung der Konfiguration für neues entferntes Linuxgerät</translation>
</message>
<message>
<source>SSH Key Configuration</source>
<translation type="unfinished">SSH-Schlüsselkonfiguration</translation>
<translation>SSH-Schlüsselkonfiguration</translation>
</message>
<message>
<source>&amp;RSA</source>
<translation type="unfinished">&amp;RSA</translation>
<translation>&amp;RSA</translation>
</message>
<message>
<source>ECDSA</source>
<translation type="unfinished">ECDSA</translation>
<translation>ECDSA</translation>
</message>
<message>
<source>&amp;Generate And Save Key Pair</source>
<translation type="unfinished">&amp;Erzeuge und speichere Schlüsselpaar</translation>
<translation>&amp;Erzeuge und speichere Schlüsselpaar</translation>
</message>
<message>
<source>Options</source>
<translation type="unfinished">Einstellungen</translation>
<translation>Einstellungen</translation>
</message>
<message>
<source>Key algorithm:</source>
<translation type="unfinished">Schlüsselalgorithmus:</translation>
<translation>Schlüsselalgorithmus:</translation>
</message>
<message>
<source>Key &amp;size:</source>
<translation type="unfinished">Schlüssel&amp;länge:</translation>
<translation>Schlüssel&amp;länge:</translation>
</message>
<message>
<source>Public key file:</source>
<translation type="unfinished">Öffentliche Schlüsseldatei:</translation>
<translation>Öffentliche Schlüsseldatei:</translation>
</message>
<message>
<source>The ssh-keygen tool was not found.</source>
<translation type="unfinished">Das Programm &quot;ssh-keygen&quot; wurde nicht gefunden.</translation>
<translation>Das Programm &quot;ssh-keygen&quot; wurde nicht gefunden.</translation>
</message>
<message>
<source>Refusing to overwrite existing private key file &quot;%1&quot;.</source>
<translation type="unfinished">Die private Schlüsseldatei &quot;%1&quot; wird nicht überschrieben.</translation>
<translation>Die private Schlüsseldatei &quot;%1&quot; wird nicht überschrieben.</translation>
</message>
<message>
<source>The ssh-keygen tool at &quot;%1&quot; failed: %2</source>
<translation type="unfinished">Das Programm &quot;ssh-keygen&quot; in &quot;%1&quot; hat einen Fehler festgestellt: %2</translation>
<translation>Das Programm &quot;ssh-keygen&quot; in &quot;%1&quot; hat einen Fehler festgestellt: %2</translation>
</message>
<message>
<source>Choose Private Key File Name</source>
<translation type="unfinished">Name der privaten Schlüsseldatei auswählen</translation>
<translation>Private Schlüsseldatei auswählen</translation>
</message>
<message>
<source>Key Generation Failed</source>
<translation type="unfinished">Fehler bei Erzeugung der Schlüssel</translation>
<translation>Schlüsselerzeugung ist fehlgeschlagen</translation>
</message>
</context>
<context>
@@ -48636,30 +48647,30 @@ Zeile: %4, Spalte: %5
</message>
<message>
<source>None</source>
<translation type="unfinished">Keine</translation>
<translation>Keine</translation>
</message>
<message>
<source>LF</source>
<translation type="unfinished">LF</translation>
<translation>LF</translation>
</message>
<message>
<source>CR</source>
<translation type="unfinished">CR</translation>
<translation>CR</translation>
</message>
<message>
<source>CRLF</source>
<translation type="unfinished">CRLF</translation>
<translation>CRLF</translation>
</message>
</context>
<context>
<name>QtC::SilverSearcher</name>
<message>
<source>Search Options (optional)</source>
<translation type="unfinished">Sucheinstellungen (optional)</translation>
<translation>Sucheinstellungen (optional)</translation>
</message>
<message>
<source>Silver Searcher is not available on the system.</source>
<translation type="unfinished">Silver Searcher ist auf dem System nicht verfügbar.</translation>
<translation>Silver Searcher ist auf dem System nicht verfügbar.</translation>
</message>
</context>
<context>
@@ -55651,88 +55662,92 @@ should a repository require SSH-authentication (see documentation on SSH and the
<name>QtC::WebAssembly</name>
<message>
<source>Web Browser</source>
<translation type="unfinished"></translation>
<translation>Webbrowser</translation>
</message>
<message>
<source>WebAssembly Runtime</source>
<translation type="unfinished"></translation>
<translation>WebAssembly-Runtime</translation>
</message>
<message>
<source>Emscripten SDK path:</source>
<translation type="unfinished"></translation>
<translation>Pfad zum Emscripten-SDK:</translation>
</message>
<message>
<source>Select the root directory of an installed %1. Ensure that the activated SDK version is compatible with the %2 or %3 version that you plan to develop against.</source>
<translation type="unfinished"></translation>
<translatorcomment>%1=Emscripten SDK, %2=Qt 5, %3=Qt 6</translatorcomment>
<translation>Wählen Sie das Wurzelverzeichnis einer Installation von %1. Stellen Sie sicher, dass die eingestellte SDK-Version mit der von Ihnen für das Entwickeln geplanten %2- oder %3-Version kompatibel ist.</translation>
</message>
<message>
<source>Emscripten SDK environment:</source>
<translation type="unfinished"></translation>
<translation>Umgebung für Emscripten-SDK:</translation>
</message>
<message>
<source>Note: %1 supports Qt %2 for WebAssembly and higher. Your installed lower Qt version(s) are not supported.</source>
<translation type="unfinished"></translation>
<translatorcomment>%1=the QtC-Version, %2=minimumSupportedQtVersion</translatorcomment>
<translation>Hinweis: %1 unterstützt für WebAssembly nur Qt %2 und höher. Ihre älteren installierten Qt-Versionen werden nicht unterstützt.</translation>
</message>
<message>
<source>Adding directories to PATH:</source>
<translation type="unfinished"></translation>
<translation>Füge Verzeichnisse zu PATH hinzu:</translation>
</message>
<message>
<source>Setting environment variables:</source>
<translation type="unfinished"></translation>
<translation>Setze Umgebungsvariablen:</translation>
</message>
<message>
<source>The activated version %1 is not supported by %2. Activate version %3 or higher.</source>
<translation type="unfinished"></translation>
<translatorcomment>%1=sdkVersion, %2=QtC-Version, %3=minVersion</translatorcomment>
<translation>Die aktivierte Version %1 wird von %2 nicht unterstützt. Benutzen Sie Version %3 oder höher.</translation>
</message>
<message>
<source>Activated version: %1</source>
<translation type="unfinished"></translation>
<translation>Aktivierte Version: %1</translation>
</message>
<message>
<source>WebAssembly</source>
<translation type="unfinished"></translation>
<translation>WebAssembly</translation>
</message>
<message>
<source>Setup Emscripten SDK for WebAssembly? To do it later, select Edit &gt; Preferences &gt; Devices &gt; WebAssembly.</source>
<translation type="unfinished"></translation>
<translation>Emscripten-SDK für WebAssembly einrichten? Dies geht auch später unter Bearbeiten &gt; Einstellungen &gt; Geräte &gt; WebAssembly.</translation>
</message>
<message>
<source>Setup Emscripten SDK</source>
<translation type="unfinished"></translation>
<translation>Emscripten-SDK einrichten</translation>
</message>
<message>
<source>WebAssembly</source>
<comment>Qt Version is meant for WebAssembly</comment>
<translation type="unfinished"></translation>
<translation>WebAssembly</translation>
</message>
<message>
<source>%1 does not support Qt for WebAssembly below version %2.</source>
<translation type="unfinished"></translation>
<translatorcomment>%1=QtC-Version</translatorcomment>
<translation>%1 unterstützt Qt für WebAssembly nicht unter Version %2.</translation>
</message>
<message>
<source>Effective emrun call:</source>
<translation type="unfinished"></translation>
<translation>Resultierender emrun-Aufruf:</translation>
</message>
<message>
<source>Default Browser</source>
<translation type="unfinished"></translation>
<translation>Vorgabe-Browser</translation>
</message>
<message>
<source>Web browser:</source>
<translation type="unfinished"></translation>
<translation>Webbrowser:</translation>
</message>
<message>
<source>Emscripten Compiler</source>
<translation type="unfinished"></translation>
<translation>Emscripten-Compiler</translation>
</message>
<message>
<source>Emscripten Compiler %1 for %2</source>
<translation type="unfinished"></translation>
<translation>Emscripten-Compiler %1 für %2</translation>
</message>
<message>
<source>Emscripten</source>
<translation type="unfinished"></translation>
<translation>Emscripten</translation>
</message>
</context>
<context>
@@ -58293,35 +58308,35 @@ Are you sure you want to remove the material?</source>
<name>QtC::Vcpkg</name>
<message>
<source>Search package...</source>
<translation type="unfinished"></translation>
<translation>Paket suchen...</translation>
</message>
<message>
<source>Vcpkg Manifest Editor</source>
<translation type="unfinished"></translation>
<translation>Vcpkg Manifest-Editor</translation>
</message>
<message>
<source>Name</source>
<translation type="unfinished"></translation>
<translation>Name:</translation>
</message>
<message>
<source>Version:</source>
<translation type="unfinished">Version:</translation>
<translation>Version:</translation>
</message>
<message>
<source>License:</source>
<translation type="unfinished">Lizenz:</translation>
<translation>Lizenz:</translation>
</message>
<message>
<source>Description:</source>
<translation type="unfinished">Beschreibung:</translation>
<translation>Beschreibung:</translation>
</message>
<message>
<source>Homepage:</source>
<translation type="unfinished"></translation>
<translation>Homepage:</translation>
</message>
<message>
<source>Vcpkg installation</source>
<translation type="unfinished"></translation>
<translation>Vcpkg-Installation</translation>
</message>
</context>
<context>

View File

@@ -54,6 +54,10 @@ bool UnixPtyProcess::startProcess(const QString &shellPath,
int rc = 0;
m_shellProcess.m_handleMaster = ::posix_openpt(O_RDWR | O_NOCTTY);
int flags = fcntl(m_shellProcess.m_handleMaster, F_GETFL, 0);
fcntl(m_shellProcess.m_handleMaster, F_SETFL, flags | O_NONBLOCK);
if (m_shellProcess.m_handleMaster <= 0) {
m_lastError = QString("UnixPty Error: unable to open master -> %1").arg(QLatin1String(strerror(errno)));
kill();
@@ -308,10 +312,7 @@ QByteArray UnixPtyProcess::readAll()
qint64 UnixPtyProcess::write(const QByteArray &byteArray)
{
int result = ::write(m_shellProcess.m_handleMaster, byteArray.constData(), byteArray.size());
Q_UNUSED(result)
return byteArray.size();
return ::write(m_shellProcess.m_handleMaster, byteArray.constData(), byteArray.size());
}
bool UnixPtyProcess::isAvailable()

View File

@@ -10,6 +10,7 @@
#include <vterm.h>
#include <QLoggingCategory>
#include <QTimer>
namespace TerminalSolution {
@@ -20,6 +21,8 @@ QColor toQColor(const VTermColor &c)
return QColor(qRgb(c.rgb.red, c.rgb.green, c.rgb.blue));
};
constexpr int batchFlushSize = 256;
struct TerminalSurfacePrivate
{
TerminalSurfacePrivate(TerminalSurface *surface, const QSize &initialGridSize)
@@ -29,13 +32,64 @@ struct TerminalSurfacePrivate
, q(surface)
{}
void flush()
{
if (m_writeBuffer.isEmpty())
return;
QByteArray data = m_writeBuffer.left(batchFlushSize);
qint64 result = m_writeToPty(data);
if (result != data.size()) {
// Not all data was written, remove the unwritten data from the array
data.resize(qMax(0, result));
}
// Remove the written data from the buffer
if (data.size() > 0)
m_writeBuffer = m_writeBuffer.mid(data.size());
if (!m_writeBuffer.isEmpty())
m_delayWriteTimer.start();
}
void init()
{
m_delayWriteTimer.setInterval(1);
m_delayWriteTimer.setSingleShot(true);
QObject::connect(&m_delayWriteTimer, &QTimer::timeout, &m_delayWriteTimer, [this] {
flush();
});
vterm_set_utf8(m_vterm.get(), true);
static auto writeToPty = [](const char *s, size_t len, void *user) {
auto p = static_cast<TerminalSurfacePrivate *>(user);
emit p->q->writeToPty(QByteArray(s, static_cast<int>(len)));
QByteArray d(s, len);
// If its just a couple of chars, or we already have data in the writeBuffer,
// add the new data to the write buffer and start the delay timer
if (d.size() < batchFlushSize || !p->m_writeBuffer.isEmpty()) {
p->m_writeBuffer.append(d);
p->m_delayWriteTimer.start();
return;
}
// Try to write the data ...
qint64 result = p->m_writeToPty(d);
if (result != d.size()) {
// if writing failed, append the data to the writeBuffer and start the delay timer
// Check if partial data may have already been written ...
if (result <= 0)
p->m_writeBuffer.append(d);
else
p->m_writeBuffer.append(d.mid(result));
p->m_delayWriteTimer.start();
}
};
vterm_output_set_callback(m_vterm.get(), writeToPty, this);
@@ -319,6 +373,10 @@ struct TerminalSurfacePrivate
SurfaceIntegration *m_surfaceIntegration{nullptr};
TerminalSurface *q;
QTimer m_delayWriteTimer;
QByteArray m_writeBuffer;
TerminalSurface::WriteToPty m_writeToPty;
};
TerminalSurface::TerminalSurface(QSize initialGridSize)
@@ -393,7 +451,7 @@ void TerminalSurface::clearAll()
vterm_input_write(d->m_vterm.get(), data.constData(), data.size());
// Send Ctrl+L which will clear the screen
emit writeToPty(QByteArray("\f"));
d->m_writeToPty(QByteArray("\f"));
}
void TerminalSurface::resize(QSize newSize)
@@ -539,6 +597,11 @@ void TerminalSurface::mouseButton(Qt::MouseButton button,
vterm_mouse_button(d->m_vterm.get(), btnIdx, pressed, qtModifierToVTerm(modifiers));
}
void TerminalSurface::setWriteToPty(WriteToPty writeToPty)
{
d->m_writeToPty = writeToPty;
}
CellIterator TerminalSurface::begin() const
{
auto res = CellIterator(this, {0, 0});

View File

@@ -98,10 +98,12 @@ public:
SurfaceIntegration *surfaceIntegration() const;
void setSurfaceIntegration(SurfaceIntegration *surfaceIntegration);
using WriteToPty = std::function<qint64(const QByteArray &)>;
void setWriteToPty(WriteToPty writeToPty);
void mouseMove(QPoint pos, Qt::KeyboardModifiers modifiers);
void mouseButton(Qt::MouseButton button, bool pressed, Qt::KeyboardModifiers modifiers);
signals:
void writeToPty(const QByteArray &data);
void invalidated(QRect grid);
void fullSizeChanged(QSize newSize);
void cursorChanged(Cursor oldCursor, Cursor newCursor);

View File

@@ -170,7 +170,7 @@ void TerminalView::setupSurface()
if (d->m_surfaceIntegration)
d->m_surface->setSurfaceIntegration(d->m_surfaceIntegration);
connect(d->m_surface.get(), &TerminalSurface::writeToPty, this, &TerminalView::writeToPty);
d->m_surface->setWriteToPty([this](const QByteArray &data) { return writeToPty(data); });
connect(d->m_surface.get(), &TerminalSurface::fullSizeChanged, this, [this] {
updateScrollBars();

View File

@@ -105,7 +105,11 @@ public:
}
};
virtual void writeToPty(const QByteArray &data) { Q_UNUSED(data); }
virtual qint64 writeToPty(const QByteArray &data)
{
Q_UNUSED(data);
return 0;
}
void writeToTerminal(const QByteArray &data, bool forceFlush);
void restart();

View File

@@ -1564,9 +1564,11 @@ qint64 Process::writeRaw(const QByteArray &input)
QTC_ASSERT(state() == QProcess::Running, return -1);
QTC_ASSERT(QThread::currentThread() == thread(), return -1);
qint64 result = -1;
QMetaObject::invokeMethod(d->m_process.get(), [this, input] {
d->m_process->write(input);
}, d->connectionType(), &result);
QMetaObject::invokeMethod(
d->m_process.get(),
[this, input] { return d->m_process->write(input); },
d->connectionType(),
&result);
return result;
}

View File

@@ -48,6 +48,36 @@ CommandsFile::CommandsFile(const FilePath &filename)
}
// XML attributes cannot contain these characters, and
// QXmlStreamWriter just bails out with an error.
// QKeySequence::toString() should probably not result in these
// characters, but it currently does, see QTCREATORBUG-29431
static bool containsInvalidCharacters(const QString &s)
{
const auto end = s.constEnd();
for (auto it = s.constBegin(); it != end; ++it) {
// from QXmlStreamWriterPrivate::writeEscaped
if (*it == u'\v' || *it == u'\f' || *it <= u'\x1F' || *it >= u'\uFFFE') {
return true;
}
}
return false;
}
static QString toAttribute(const QString &s)
{
if (containsInvalidCharacters(s))
return "0x" + QString::fromUtf8(s.toUtf8().toHex());
return s;
}
static QString fromAttribute(const QStringView &s)
{
if (s.startsWith(QLatin1String("0x")))
return QString::fromUtf8(QByteArray::fromHex(s.sliced(2).toUtf8()));
return s.toString();
}
/*!
\internal
*/
@@ -76,7 +106,7 @@ QMap<QString, QList<QKeySequence>> CommandsFile::importCommands() const
QTC_ASSERT(!currentId.isEmpty(), continue);
const QXmlStreamAttributes attributes = r.attributes();
if (attributes.hasAttribute(ctx.valueAttribute)) {
const QString keyString = attributes.value(ctx.valueAttribute).toString();
const QString keyString = fromAttribute(attributes.value(ctx.valueAttribute));
QList<QKeySequence> keys = result.value(currentId);
result.insert(currentId, keys << QKeySequence(keyString));
}
@@ -93,7 +123,6 @@ QMap<QString, QList<QKeySequence>> CommandsFile::importCommands() const
/*!
\internal
*/
bool CommandsFile::exportCommands(const QList<ShortcutItem *> &items)
{
FileSaver saver(m_filePath, QIODevice::Text);
@@ -118,7 +147,7 @@ bool CommandsFile::exportCommands(const QList<ShortcutItem *> &items)
w.writeAttribute(ctx.idAttribute, id.toString());
for (const QKeySequence &k : item->m_keys) {
w.writeEmptyElement(ctx.keyElement);
w.writeAttribute(ctx.valueAttribute, k.toString());
w.writeAttribute(ctx.valueAttribute, toAttribute(k.toString()));
}
w.writeEndElement(); // Shortcut
}
@@ -126,7 +155,8 @@ bool CommandsFile::exportCommands(const QList<ShortcutItem *> &items)
w.writeEndElement();
w.writeEndDocument();
saver.setResult(&w);
if (!saver.setResult(&w))
qWarning() << saver.errorString();
}
return saver.finalize();
}

View File

@@ -426,6 +426,7 @@ public:
QList<ParameterAction *> m_projectActions;
QList<QAction *> m_repositoryActions;
ParameterAction *m_applyCurrentFilePatchAction = nullptr;
Gerrit::Internal::GerritPlugin m_gerritPlugin;
QPointer<StashDialog> m_stashDialog;

View File

@@ -10,6 +10,7 @@
#include <coreplugin/icore.h>
#include <debugger/debuggeritem.h>
#include <debugger/debuggeritemmanager.h>
#include <projectexplorer/devicesupport/devicemanager.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/toolchain.h>
#include <projectexplorer/toolchainmanager.h>
@@ -447,7 +448,8 @@ static ToolChain *iarToolChain(const FilePath &path, Id language)
== BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID;
});
if (iarFactory) {
Toolchains detected = iarFactory->autoDetect(ToolchainDetector({}, {}, {}));
Toolchains detected = iarFactory->autoDetect(
{{}, DeviceManager::defaultDesktopDevice(), {}});
if (detected.isEmpty())
detected = iarFactory->detectForImport({path, language});
for (auto tc : detected) {

View File

@@ -3,10 +3,11 @@
#include "toolchainoptionspage.h"
#include "toolchain.h"
#include "abi.h"
#include "devicesupport/devicemanager.h"
#include "projectexplorerconstants.h"
#include "projectexplorertr.h"
#include "toolchain.h"
#include "toolchainconfigwidget.h"
#include "toolchainmanager.h"
@@ -407,7 +408,7 @@ void ToolChainOptionsWidget::redetectToolchains()
QSet<ToolChain *> toDelete;
ToolChainManager::resetBadToolchains();
for (ToolChainFactory *f : ToolChainFactory::allToolChainFactories()) {
const ToolchainDetector detector(knownTcs, {}, {}); // FIXME: Pass device and search paths
const ToolchainDetector detector(knownTcs, DeviceManager::defaultDesktopDevice(), {}); // FIXME: Pass search paths
for (ToolChain * const tc : f->autoDetect(detector)) {
if (knownTcs.contains(tc) || toDelete.contains(tc))
continue;

View File

@@ -1675,8 +1675,8 @@ void DesignerActionManager::createDefaultDesignerActions()
setFlowStartDisplayName,
{},
flowCategory,
2,
{},
2,
&setFlowStartItem,
&isFlowItem,
&flowOptionVisible));

View File

@@ -260,10 +260,12 @@ void TerminalWidget::closeTerminal()
deleteLater();
}
void TerminalWidget::writeToPty(const QByteArray &data)
qint64 TerminalWidget::writeToPty(const QByteArray &data)
{
if (m_process && m_process->isRunning())
m_process->writeRaw(data);
return m_process->writeRaw(data);
return data.size();
}
void TerminalWidget::resizePty(QSize newSize)

View File

@@ -71,7 +71,7 @@ protected:
void linkActivated(const Link &link) override;
void contextMenuRequested(const QPoint &pos) override;
void writeToPty(const QByteArray &data) override;
qint64 writeToPty(const QByteArray &data) override;
void resizePty(QSize newSize) override;
void setClipboard(const QString &text) override;
std::optional<TerminalView::Link> toLink(const QString &text) override;

View File

@@ -0,0 +1,33 @@
From e5aec585120ca65b92e642b50b1552f75df26b93 Mon Sep 17 00:00:00 2001
From: Christian Stenger <christian.stenger@qt.io>
Date: Thu, 27 Jul 2023 08:49:30 +0200
Subject: [PATCH] Fix build on macOS
---
src/CMakeLists.txt | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7be6aad..0cad721 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -18,7 +18,6 @@ if(APPLE)
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${speedcrunch_VERSION})
set(MACOSX_BUNDLE_VERSION ${speedcrunch_VERSION})
set(MACOSX_BUNDLE_LONG_VERSION_STRING Version ${speedcrunch_VERSION})
- set(CMAKE_OSX_ARCHITECTURES ppc;i386)
else(APPLE)
set(PROGNAME speedcrunch)
endif(APPLE)
@@ -71,7 +70,7 @@ if(APPLE)
set( speedcrunch_RESOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${PROGNAME}.app/Contents/Resources )
add_custom_command(TARGET ${PROGNAME} POST_BUILD
COMMAND mkdir ARGS -p ${speedcrunch_RESOURCE_DIR}
- COMMAND cp ARGS -f resources/${MACOSX_BUNDLE_ICON_FILE} ${speedcrunch_RESOURCE_DIR})
+ COMMAND cp ARGS -f ${CMAKE_CURRENT_SOURCE_DIR}/resources/${MACOSX_BUNDLE_ICON_FILE} ${speedcrunch_RESOURCE_DIR})
endif(APPLE)
add_custom_target(confclean COMMAND rm -rf Makefile CMakeFiles/ CMakeCache.txt cmake_install.cmake DartTestfile.txt install_manifest.txt)
--
2.32.0 (Apple Git-132)

View File

@@ -238,7 +238,7 @@ def __logDebugResult__():
def verifyBreakPoint(bpToVerify):
if isinstance(bpToVerify, dict):
fileName = list(bpToVerify.keys())[0]
fileName = next(iter(bpToVerify.keys()))
editor = getEditorForFileSuffix(fileName)
if editor:
test.compare(waitForObject(":DebugModeWidget_QComboBox").toolTip, fileName,
@@ -247,7 +247,7 @@ def verifyBreakPoint(bpToVerify):
windowTitle = str(waitForObject(":Qt Creator_Core::Internal::MainWindow").windowTitle)
test.verify(windowTitle.startswith(os.path.basename(fileName) + " "),
"Verify that Creator's window title changed according to current file")
return test.compare(line, list(bpToVerify.values())[0],
return test.compare(line, next(iter(bpToVerify.values())),
"Compare hit breakpoint to expected line number in %s" % fileName)
else:
test.fatal("Expected a dict for bpToVerify - got '%s'" % className(bpToVerify))

View File

@@ -248,11 +248,16 @@ def createProject_Qt_GUI(path, projectName, checks=True, addToVersionControl="<N
# param path specifies where to create the project
# param projectName is the name for the new project
# param checks turns tests in the function on if set to True
def createProject_Qt_Console(path, projectName, checks = True, buildSystem = None):
def createProject_Qt_Console(path, projectName, checks = True, buildSystem = None, targets=[]):
available = __createProjectOrFileSelectType__(" Application (Qt)", "Qt Console Application")
__createProjectSetNameAndPath__(path, projectName, checks)
buildSystem = __handleBuildSystem__(buildSystem)
__createProjectHandleTranslationSelection__()
if targets:
available = set(targets).intersection(available)
if len(available) < len(targets):
test.warning("Could not use all desired targets.",
"%s vs %s" % (str(available), str(targets)))
__selectQtVersionDesktop__(buildSystem, checks, available)
expectedFiles = []

View File

@@ -206,7 +206,8 @@ def substituteCdb(settingsDir):
try:
serverIni = readFile(os.path.join(os.getenv("APPDATA"), "froglogic",
"Squish", "ver1", "server.ini"))
autLine = list(filter(lambda line: "AUT/qtcreator" in line, serverIni.splitlines()))[0]
autLine = next(iter(filter(lambda line: "AUT/qtcreator" in line,
serverIni.splitlines())))
autPath = autLine.split("\"")[1]
return os.path.exists(os.path.join(autPath, "..", "lib", "qtcreatorcdbext64"))
except:

View File

@@ -41,8 +41,9 @@ def main():
listView = waitForObject(":popupFrame_Proposal_QListView")
shownProposals = dumpItems(listView.model())
usedProposal = "class derived from QObject"
expectedProposals = ["class", "class ", "class template",
expectedProposals = ["class ", "class template",
usedProposal, "class derived from QWidget"]
expectedProposals += [" class"] if useClang else ["class"]
test.xcompare(len(shownProposals), len(expectedProposals), # QTCREATORBUG-23159
"Number of proposed templates")
test.verify(set(expectedProposals).issubset(set(shownProposals)),

View File

@@ -44,7 +44,7 @@ def checkQtCreatorHelpVersion(expectedVersion):
helpContentWidget = waitForObject(':Qt Creator_QHelpContentWidget', 5000)
waitFor("any(map(rightStart, dumpItems(helpContentWidget.model())))", 10000)
items = dumpItems(helpContentWidget.model())
test.compare(list(filter(rightStart, items))[0],
test.compare(next(iter(filter(rightStart, items))),
'Qt Creator Manual %s' % expectedVersion,
'Verifying whether manual uses expected version.')
except:

View File

@@ -12,7 +12,11 @@ def main():
startQC()
if not startedWithoutPluginError():
return
createProject_Qt_Console(tempDir(), project)
targets = []
if platform.system() in ('Microsoft', 'Windows'):
# Qt5.10 has constructs that do not work on Win because of limitation to older C++
targets = [Targets.DESKTOP_5_14_1_DEFAULT, Targets.DESKTOP_6_2_4]
createProject_Qt_Console(tempDir(), project, targets=targets)
mainEditor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")
replaceEditorContent(mainEditor, "")

View File

@@ -9,7 +9,7 @@ def cmakeSupported():
versionLines = filter(lambda line: "cmake version " in line,
getOutputFromCmdline(["cmake", "--version"]).splitlines())
try:
versionLine = list(versionLines)[0]
versionLine = next(iter(versionLines))
test.log("Using " + versionLine)
matcher = re.match("cmake version (\d+)\.(\d+)\.\d+", versionLine)
major = __builtin__.int(matcher.group(1))
@@ -32,6 +32,16 @@ def main():
if not SpeedCrunchPath:
test.fatal("Could not clone SpeedCrunch")
return
# patch CMakeLists.txt outside of QC
try:
patchFile = os.path.join(os.path.dirname(__file__),
"..", "..", "0001-Fix-build-on-macOS.patch")
subprocess.check_call(["git", "am", patchFile], cwd=SpeedCrunchPath)
test.log("Patched speedcrunch.")
except:
t, v = sys.exc_info()[:2]
test.warning("Patching speedcrunch failed.", "%s(%s)" % (str(t), str(v)))
startQC()
if not startedWithoutPluginError():
return

View File

@@ -1,6 +1,5 @@
"text" "nestinglevel"
"CMakeLists.txt" "0"
"speedcrunch" "0"
"Header Files" "1"
"genericdock.h" "2"
"Source Files" "1"
1 text nestinglevel
2 CMakeLists.txt 0
speedcrunch 0
3 Header Files 1
4 genericdock.h 2
5 Source Files 1

View File

@@ -49,8 +49,8 @@ def main():
availableProjectTypes.append({category:template})
safeClickButton("Cancel")
for current in availableProjectTypes:
category = list(current.keys())[0]
template = list(current.values())[0]
category = next(iter(current.keys()))
template = next(iter(current.values()))
with TestSection("Testing project template %s -> %s" % (category, template)):
displayedPlatforms = __createProject__(category, template)
if template.startswith("Qt Quick Application"):

View File

@@ -311,15 +311,15 @@ def __compareCompilers__(foundCompilers, expectedCompilers):
for currentExp in expectedCompilers:
if isString(currentExp):
continue
key = list(currentExp.keys())[0]
key = next(iter(currentExp.keys()))
# the regex .*? is used for the different possible version strings of the WinSDK
# if it's present a regex will be validated otherwise simple string comparison
# same applies for [.0-9]+ which is used for minor/patch versions
isRegex = ".*?" in key or "[.0-9]+" in key
if (((isRegex and re.match(key, list(currentFound.keys())[0], flags)))
if (((isRegex and re.match(key, next(iter(currentFound.keys())), flags)))
or currentFound.keys() == currentExp.keys()):
if ((isWin and os.path.abspath(list(currentFound.values())[0].lower())
== os.path.abspath(list(currentExp.values())[0].lower()))
if ((isWin and os.path.abspath(next(iter(currentFound.values())).lower())
== os.path.abspath(next(iter(currentExp.values())).lower()))
or currentFound.values() == currentExp.values()):
foundExp = True
break
@@ -359,24 +359,22 @@ def __lowerStrs__(iterable):
def __checkCreatedSettings__(settingsFolder):
waitForCleanShutdown()
qtProj = os.path.join(settingsFolder, "QtProject")
folders = []
files = [{os.path.join(qtProj, "QtCreator.db"):0},
{os.path.join(qtProj, "QtCreator.ini"):30}]
folders.append(os.path.join(qtProj, "qtcreator"))
files.extend([{os.path.join(folders[0], "debuggers.xml"):0},
{os.path.join(folders[0], "devices.xml"):0},
{os.path.join(folders[0], "helpcollection.qhc"):0},
{os.path.join(folders[0], "profiles.xml"):0},
{os.path.join(folders[0], "qtversion.xml"):0},
{os.path.join(folders[0], "toolchains.xml"):0}])
folders.extend([os.path.join(folders[0], "generic-highlighter"),
os.path.join(folders[0], "macros")])
creatorFolder = os.path.join(qtProj, "qtcreator")
folders = [creatorFolder,
os.path.join(creatorFolder, "generic-highlighter"),
os.path.join(creatorFolder, "macros")]
files = {os.path.join(qtProj, "QtCreator.db"):0,
os.path.join(qtProj, "QtCreator.ini"):30,
os.path.join(creatorFolder, "debuggers.xml"):0,
os.path.join(creatorFolder, "devices.xml"):0,
os.path.join(creatorFolder, "helpcollection.qhc"):0,
os.path.join(creatorFolder, "profiles.xml"):0,
os.path.join(creatorFolder, "qtversion.xml"):0,
os.path.join(creatorFolder, "toolchains.xml"):0}
for f in folders:
test.verify(os.path.isdir(f),
"Verifying whether folder '%s' has been created." % os.path.basename(f))
for f in files:
fName = list(f.keys())[0]
fMinSize = list(f.values())[0]
for fName, fMinSize in files.items():
text = "created non-empty"
if fMinSize > 0:
text = "modified"

View File

@@ -8,7 +8,7 @@ def main():
if not neededFilePresent(pathCreator):
return
startQC()
startQC(["-noload", "ClangCodeModel"])
if not startedWithoutPluginError():
return
openQbsProject(pathCreator)
@@ -24,7 +24,7 @@ def main():
else:
test.warning("Parsing project timed out")
compareProjectTree(rootNodeTemplate % "Qt Creator", "projecttree_creator.tsv")
buildIssuesTexts = map(lambda i: str(i[0]), getBuildIssues())
buildIssuesTexts = map(lambda i: str(i[0]), getBuildIssues(False))
deprecationWarnings = "\n".join(set(filter(lambda s: "deprecated" in s, buildIssuesTexts)))
if deprecationWarnings:
test.warning("Creator claims that the .qbs file uses deprecated features.",

View File

@@ -13,7 +13,7 @@ def main():
if not pathSpeedcrunch:
test.fatal("Could not clone SpeedCrunch")
return
startQC()
startQC(["-noload", "ClangCodeModel"])
if not startedWithoutPluginError():
return

View File

@@ -4166,7 +4166,6 @@
"Headers" "5"
"touchbar.h" "6"
"Sources" "5"
"touchbar.cpp" "6"
"Headers" "4"
"optional" "6"
"optional.hpp" "7"
@@ -16895,21 +16894,6 @@
"qtc-askpass-main.cpp" "4"
"Other files" "3"
"qtc-askpass.qbs" "4"
"qtcreatortool" "3"
"qtcreatortool.pri" "4"
"qtcreator" "4"
"qtcreator.pri" "5"
"qtcreator_ide_branding" "5"
"qtcreator_ide_branding.pri" "6"
"qtcreator_testvars" "5"
"qtcreator_testvars.pri" "6"
"Other files" "5"
"CMakeLists.txt" "7"
"rpath" "4"
"rpath.pri" "5"
"Sources" "3"
"main.cpp" "4"
"Other files" "3"
"qtpromaker" "2"
"qtpromaker.pro" "3"
"qtcreatortool" "3"
@@ -20837,7 +20821,6 @@
"Headers" "5"
"touchbar.h" "6"
"Sources" "5"
"touchbar.cpp" "6"
"Headers" "4"
"optional" "6"
"optional.hpp" "7"
@@ -21758,7 +21741,6 @@
"Headers" "6"
"touchbar.h" "7"
"Sources" "6"
"touchbar.cpp" "7"
"Headers" "5"
"optional" "7"
"optional.hpp" "8"
Can't render this file because it is too large.

View File

@@ -86,12 +86,12 @@ def __clickCommit__(count):
show = str(description.plainText)
id = "Nobody <nobody@nowhere\.com>"
time = "\w{3} \w{3} \d{1,2} \d{2}:\d{2}:\d{2} \d{4}.* seconds ago\)"
expected = [{"commit %s" % commit:False},
{"Author: %s, %s" % (id, time): True},
{"Committer: %s, %s" % (id, time): True}]
expected = [["commit %s" % commit, False],
["Author: %s, %s" % (id, time), True],
["Committer: %s, %s" % (id, time), True]]
for line, exp in zip(show.splitlines(), expected):
expLine = list(exp.keys())[0]
isRegex = list(exp.values())[0]
expLine = exp[0]
isRegex = exp[1]
if isRegex:
test.verify(re.match(expLine, line), "Verifying commit header line '%s'" % line)
else: