forked from qt-creator/qt-creator
Merge "Merge remote-tracking branch 'origin/11.0'"
This commit is contained in:
2
.github/workflows/build_cmake.yml
vendored
2
.github/workflows/build_cmake.yml
vendored
@@ -7,7 +7,7 @@ on:
|
|||||||
- 'doc/**'
|
- 'doc/**'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
QT_VERSION: 6.5.1
|
QT_VERSION: 6.5.2
|
||||||
MACOS_DEPLOYMENT_TARGET: 10.15
|
MACOS_DEPLOYMENT_TARGET: 10.15
|
||||||
CLANG_VERSION: 16.0.2
|
CLANG_VERSION: 16.0.2
|
||||||
ELFUTILS_VERSION: 0.175
|
ELFUTILS_VERSION: 0.175
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ instructions:
|
|||||||
variableValue: https://ci-files02-hki.ci.qt.io/packages/jenkins/qtcreator_libclang/libclang-release_16.0.2-based
|
variableValue: https://ci-files02-hki.ci.qt.io/packages/jenkins/qtcreator_libclang/libclang-release_16.0.2-based
|
||||||
- type: EnvironmentVariable
|
- type: EnvironmentVariable
|
||||||
variableName: QTC_QT_BASE_URL
|
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
|
- type: EnvironmentVariable
|
||||||
variableName: QTC_QT_MODULES
|
variableName: QTC_QT_MODULES
|
||||||
variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine"
|
variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine"
|
||||||
|
|||||||
@@ -163,8 +163,8 @@ def qdump__std____1__stack(d, value):
|
|||||||
d.putBetterType(value.type)
|
d.putBetterType(value.type)
|
||||||
|
|
||||||
|
|
||||||
def GetChildMemberWithName(value: DumperBase.Value, name: str) -> DumperBase.Value:
|
def GetChildMemberWithName(value, name):
|
||||||
members: list[DumperBase.Value] = value.members(True)
|
members = value.members(True)
|
||||||
|
|
||||||
for member in members:
|
for member in members:
|
||||||
if member.name == name:
|
if member.name == name:
|
||||||
@@ -172,8 +172,8 @@ def GetChildMemberWithName(value: DumperBase.Value, name: str) -> DumperBase.Val
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def GetIndexOfChildWithName(value: DumperBase.Value, name: str) -> int:
|
def GetIndexOfChildWithName(value, name):
|
||||||
members: list[DumperBase.Value] = value.members(True)
|
members = value.members(True)
|
||||||
|
|
||||||
for i, member in enumerate(members):
|
for i, member in enumerate(members):
|
||||||
if member.name == name:
|
if member.name == name:
|
||||||
@@ -229,8 +229,8 @@ def std_1_string_dumper_v2(d, value):
|
|||||||
if not Short_Sp:
|
if not Short_Sp:
|
||||||
raise Exception("Could not find __s")
|
raise Exception("Could not find __s")
|
||||||
|
|
||||||
Is_Long: DumperBase.Value = GetChildMemberWithName(Short_Sp, "__is_long_")
|
Is_Long = GetChildMemberWithName(Short_Sp, "__is_long_")
|
||||||
Size_Sp: DumperBase.Value = GetChildMemberWithName(Short_Sp, "__size_")
|
Size_Sp = GetChildMemberWithName(Short_Sp, "__size_")
|
||||||
if not Size_Sp:
|
if not Size_Sp:
|
||||||
raise Exception("Could not find __size_")
|
raise Exception("Could not find __size_")
|
||||||
|
|
||||||
|
|||||||
@@ -31686,48 +31686,48 @@ Hinweis: Dies macht Sie anfällig für Man-in-the-middle-Angriffe.</translation>
|
|||||||
<name>QtC::Haskell</name>
|
<name>QtC::Haskell</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Release</source>
|
<source>Release</source>
|
||||||
<translation type="unfinished">Release</translation>
|
<translation>Release</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>General</source>
|
<source>General</source>
|
||||||
<translation type="unfinished">Allgemein</translation>
|
<translation>Allgemein</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Build directory:</source>
|
<source>Build directory:</source>
|
||||||
<translation type="unfinished">Build-Verzeichnis:</translation>
|
<translation>Build-Verzeichnis:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GHCi</source>
|
<source>GHCi</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>GHCi</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Run GHCi</source>
|
<source>Run GHCi</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>GHCi ausführen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Haskell</source>
|
<source>Haskell</source>
|
||||||
<comment>SnippetProvider</comment>
|
<comment>SnippetProvider</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Haskell</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Executable</source>
|
<source>Executable</source>
|
||||||
<translation type="unfinished">Ausführbare Datei</translation>
|
<translation>Ausführbare Datei</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Haskell</source>
|
<source>Haskell</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Haskell</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Stack executable:</source>
|
<source>Stack executable:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ausführbare Stack-Datei:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Choose Stack Executable</source>
|
<source>Choose Stack Executable</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ausführbare Datei für Stack auswählen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Stack Build</source>
|
<source>Stack Build</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Erstellen mit Stack</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -46082,7 +46082,7 @@ Are you sure?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Checking that files can be created in %1...</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Files can be created in /var/run.</source>
|
<source>Files can be created in /var/run.</source>
|
||||||
@@ -46090,11 +46090,11 @@ Are you sure?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>An error occurred while checking that files can be created in %1.</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Files cannot be created in %1.</source>
|
<source>Files cannot be created in %1.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>In %1 können keine Dateien erstellt werden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Warning: "slog2info" is not found on the device, debug output not available.</source>
|
<source>Warning: "slog2info" is not found on the device, debug output not available.</source>
|
||||||
@@ -46173,34 +46173,34 @@ Möchten Sie fortfahren?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>No files need to be uploaded.</source>
|
<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>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<source>%n file(s) need to be uploaded.</source>
|
<source>%n file(s) need to be uploaded.</source>
|
||||||
<translation type="unfinished">
|
<translation>
|
||||||
<numerusform>Eine Datei muss hochgeladen werden.</numerusform>
|
<numerusform>Eine Datei muss hochgeladen werden.</numerusform>
|
||||||
<numerusform>%n Dateien müssen hochgeladen werden.</numerusform>
|
<numerusform>%n Dateien müssen hochgeladen werden.</numerusform>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Local file "%1" does not exist.</source>
|
<source>Local file "%1" does not exist.</source>
|
||||||
<translation type="unfinished">Es gibt keine lokale Datei "%1".</translation>
|
<translation>Es gibt keine lokale Datei "%1".</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Remote chmod failed for file "%1": %2</source>
|
<source>Remote chmod failed for file "%1": %2</source>
|
||||||
<translation type="unfinished">"chmod" für die entfernte Datei "%1" ist fehlgeschlagen: %2</translation>
|
<translation>"chmod" für die entfernte Datei "%1" ist fehlgeschlagen: %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>No device configuration set.</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>No deployment action necessary. Skipping.</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>All files successfully deployed.</source>
|
<source>All files successfully deployed.</source>
|
||||||
<translation type="unfinished">Alle Dateien erfolgreich versandt.</translation>
|
<translation>Deployment für alle Dateien erfolgreich.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Deploy Qt to QNX Device</source>
|
<source>Deploy Qt to QNX Device</source>
|
||||||
@@ -46208,7 +46208,7 @@ Möchten Sie fortfahren?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Create Kit for %1</source>
|
<source>Create Kit for %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Kit für %1 erstellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Configuration Information:</source>
|
<source>Configuration Information:</source>
|
||||||
@@ -46232,11 +46232,11 @@ Möchten Sie fortfahren?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Compiler:</source>
|
<source>Compiler:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Compiler:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Architectures:</source>
|
<source>Architectures:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Architekturen:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Remove</source>
|
<source>Remove</source>
|
||||||
@@ -46252,11 +46252,11 @@ Möchten Sie fortfahren?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Configuration already exists.</source>
|
<source>Configuration already exists.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Konfiguration existiert bereits.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Configuration is not valid.</source>
|
<source>Configuration is not valid.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Konfiguration ist ungültig.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Remove QNX Configuration</source>
|
<source>Remove QNX Configuration</source>
|
||||||
@@ -46957,7 +46957,7 @@ wirklich löschen?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Key deployment failed.</source>
|
<source>Key deployment failed.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Deployment des Schlüssels fehlgeschlagen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Deployment finished successfully.</source>
|
<source>Deployment finished successfully.</source>
|
||||||
@@ -47003,7 +47003,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Uploading package to device...</source>
|
<source>Uploading package to device...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Lade Paket auf das Gerät hoch...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Successfully uploaded package file.</source>
|
<source>Successfully uploaded package file.</source>
|
||||||
@@ -47015,19 +47015,19 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Successfully installed package file.</source>
|
<source>Successfully installed package file.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Die Paketdatei wurde erfolgreich installiert.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Failed to start "stat": %1</source>
|
<source>Failed to start "stat": %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>"stat" konnte nicht gestartet werden: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>"stat" crashed.</source>
|
<source>"stat" crashed.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>"stat" ist abgestürzt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>"stat" failed with exit code %1: %2</source>
|
<source>"stat" failed with exit code %1: %2</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>"stat" ist mit Rückgabewert %1 fehlgeschlagen: %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Failed to retrieve remote timestamp for file "%1". Incremental deployment will not work. Error message was: %2</source>
|
<source>Failed to retrieve remote timestamp for file "%1". 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>
|
||||||
<message>
|
<message>
|
||||||
<source>Ignore missing files</source>
|
<source>Ignore missing files</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Fehlende Dateien ignorieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Upload files via SFTP</source>
|
<source>Upload files via SFTP</source>
|
||||||
@@ -47074,19 +47074,19 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Sending echo to device...</source>
|
<source>Sending echo to device...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Sende Echo zum Gerät...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>echo failed: %1</source>
|
<source>echo failed: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Echo fehlgeschlagen: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>echo failed.</source>
|
<source>echo failed.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Echo fehlgeschlagen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Device replied to echo with expected contents.</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Checking kernel version...</source>
|
<source>Checking kernel version...</source>
|
||||||
@@ -47110,7 +47110,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Device replied to echo with unexpected contents: "%1"</source>
|
<source>Device replied to echo with unexpected contents: "%1"</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Das Gerät hat auf das Echo mit unerwartetem Inhalt geantwortet: "%1"</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The following specified ports are currently in use: %1</source>
|
<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>
|
<message>
|
||||||
<source>Some tools will not work out of the box.
|
<source>Some tools will not work out of the box.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Einige Werkzeuge werden nicht ohne weitere Einstellungen funktionieren.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Checking whether "%1" works...</source>
|
<source>Checking whether "%1" works...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Überprüfe, ob "%1" funktioniert...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Failed to start "%1": %2
|
<source>Failed to start "%1": %2
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>"%1" konnte nicht gestartet werden: %2
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>"%1" crashed.
|
<source>"%1" crashed.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>"%1" ist abgestürzt.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>"%1" failed with exit code %2: %3
|
<source>"%1" failed with exit code %2: %3
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>"%1" ist mit Rückgabewert %2 fehlgeschlagen: %3
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>"%1" is functional.
|
<source>"%1" is functional.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>"%1" funktioniert.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>"%1" will be used for deployment, because "%2" and "%3" are not available.
|
<source>"%1" will be used for deployment, because "%2" and "%3" are not available.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>"%1" wird für das Deployment benutzt, da "%2" und "%3" nicht verfügbar sind.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Checking if required commands are available...</source>
|
<source>Checking if required commands are available...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Überprüfe Verfügbarkeit der benötigten Kommandos...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>%1...</source>
|
<source>%1...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>%1...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>%1 found.</source>
|
<source>%1 found.</source>
|
||||||
<translation type="unfinished">%1 gefunden.</translation>
|
<translation>%1 gefunden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>An error occurred while checking for %1.</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>%1 not found.</source>
|
<source>%1 not found.</source>
|
||||||
<translation type="unfinished">%1 nicht gefunden.</translation>
|
<translation>%1 nicht gefunden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Deployment to this device will not work out of the box.
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Deploy to Remote Linux Host</source>
|
<source>Deploy to Remote Linux Host</source>
|
||||||
<translation>Auf Linux-Mobilgerät ausführen</translation>
|
<translation>Deployment auf entferntes Linuxgerät</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Installing package failed.</source>
|
<source>Installing package failed.</source>
|
||||||
@@ -47290,7 +47296,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The device's SSH port number:</source>
|
<source>The device's SSH port number:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>SSH-Port des Geräts:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The username to log into the device:</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Source %1 and %2</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Direct</source>
|
<source>Direct</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Direkt</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>&Username:</source>
|
<source>&Username:</source>
|
||||||
@@ -47338,11 +47345,12 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>QML runtime executable:</source>
|
<source>QML runtime executable:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ausführbare Datei der QML-Runtime:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Access via:</source>
|
<source>Access via:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translatorcomment>drop down with devices</translatorcomment>
|
||||||
|
<translation>Zugriff über:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Physical Device</source>
|
<source>Physical Device</source>
|
||||||
@@ -47402,62 +47410,65 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Cannot establish SSH connection: ssh binary "%1" does not exist.</source>
|
<source>Cannot establish SSH connection: ssh binary "%1" does not exist.</source>
|
||||||
<translation type="unfinished">SSH-Verbindung kann nicht aufgebaut werden: Eine ausführbare SSH-Datei "%1" existiert nicht.</translation>
|
<translation>SSH-Verbindung kann nicht hergestellt werden: Eine ausführbare SSH-Datei "%1" existiert nicht.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Cannot establish SSH connection: Failed to create temporary directory for control socket: %1</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Cannot establish SSH connection.
|
<source>Cannot establish SSH connection.
|
||||||
Control process failed to start.</source>
|
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>
|
||||||
<message>
|
<message>
|
||||||
<source>SSH connection failure.</source>
|
<source>SSH connection failure.</source>
|
||||||
<translation type="unfinished">SSH-Verbindungsfehler.</translation>
|
<translation>SSH-Verbindungsfehler.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>SSH connection failure:</source>
|
<source>SSH connection failure:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>SSH-Verbindungsfehler:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Remote Linux</source>
|
<source>Remote Linux</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Entferntes Linuxgerät</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Failed: %1</source>
|
<source>Failed: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Fehlgeschlagen: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Remote Linux Device</source>
|
<source>Remote Linux Device</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Entferntes Linuxgerät</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>"%1" failed to start: %2</source>
|
<source>"%1" failed to start: %2</source>
|
||||||
<translation type="unfinished">"%1" konnte nicht gestartet werden: %2</translation>
|
<translation>"%1" konnte nicht gestartet werden: %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>"%1" crashed.</source>
|
<source>"%1" crashed.</source>
|
||||||
<translation type="unfinished">"%1" ist abgestürzt.</translation>
|
<translation>"%1" ist abgestürzt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>"sftp" binary "%1" does not exist.</source>
|
<source>"sftp" binary "%1" does not exist.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ausführbare "sftp"-Datei "%1" existiert nicht.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Creating directory: %1
|
<source>Creating directory: %1
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Erstelle Verzeichnis: %1
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Failed.</source>
|
<source>Failed.</source>
|
||||||
<translation type="unfinished">Fehlgeschlagen.</translation>
|
<translation>Fehlgeschlagen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Copying %1/%2: %3 -> %4
|
<source>Copying %1/%2: %3 -> %4
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Kopiere %1/%2: %3 -> %4
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Clean Environment</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Deploy via rsync: failed to create remote directories:</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>rsync failed to start: %1</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>rsync is only supported for transfers between different devices.</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Deploy files via rsync</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Command:</source>
|
<source>Command:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Kommando:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Install root:</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Clean install root first:</source>
|
<source>Clean install root first:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Install-Root zuerst bereinigen:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Full command line:</source>
|
<source>Full command line:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Vollständige Kommandozeile:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Custom command line:</source>
|
<source>Custom command line:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Benutzerdefinierte Kommandozeile:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Use custom command line instead:</source>
|
<source>Use custom command line instead:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Benutzerdefinierte Kommandozeile verwenden:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Install into temporary host directory</source>
|
<source>Install into temporary host directory</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>In temporäres Host-Verzeichnis installieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>You must provide an install root.</source>
|
<source>You must provide an install root.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Sie müssen ein Installationsverzeichnis angeben.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The install root "%1" could not be cleaned.</source>
|
<source>The install root "%1" could not be cleaned.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Das Installationsverzeichnis "%1" konnte nicht bereinigt werden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The install root "%1" could not be created.</source>
|
<source>The install root "%1" could not be created.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Das Installationsverzeichnis "%1" konnte nicht erstellt werden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The "make install" step should probably not be last in the list of deploy steps. Consider moving it up.</source>
|
<source>The "make install" step should probably not be last in the list of deploy steps. Consider moving it up.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Der "make install"-Schritt sollte wahrscheinlich nicht der letzte Deployment-Schritt sein. Ziehen Sie in Betracht, ihn nach oben zu verschieben.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>You need to add an install statement to your CMakeLists.txt file for deployment to work.</source>
|
<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 "install"-Anweisung hinzufügen, damit das Deployment funktioniert.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Executable on device:</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>New Remote Linux Device Configuration Setup</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>SSH Key Configuration</source>
|
<source>SSH Key Configuration</source>
|
||||||
<translation type="unfinished">SSH-Schlüsselkonfiguration</translation>
|
<translation>SSH-Schlüsselkonfiguration</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>&RSA</source>
|
<source>&RSA</source>
|
||||||
<translation type="unfinished">&RSA</translation>
|
<translation>&RSA</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>ECDSA</source>
|
<source>ECDSA</source>
|
||||||
<translation type="unfinished">ECDSA</translation>
|
<translation>ECDSA</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>&Generate And Save Key Pair</source>
|
<source>&Generate And Save Key Pair</source>
|
||||||
<translation type="unfinished">&Erzeuge und speichere Schlüsselpaar</translation>
|
<translation>&Erzeuge und speichere Schlüsselpaar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Options</source>
|
<source>Options</source>
|
||||||
<translation type="unfinished">Einstellungen</translation>
|
<translation>Einstellungen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Key algorithm:</source>
|
<source>Key algorithm:</source>
|
||||||
<translation type="unfinished">Schlüsselalgorithmus:</translation>
|
<translation>Schlüsselalgorithmus:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Key &size:</source>
|
<source>Key &size:</source>
|
||||||
<translation type="unfinished">Schlüssel&länge:</translation>
|
<translation>Schlüssel&länge:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Public key file:</source>
|
<source>Public key file:</source>
|
||||||
<translation type="unfinished">Öffentliche Schlüsseldatei:</translation>
|
<translation>Öffentliche Schlüsseldatei:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The ssh-keygen tool was not found.</source>
|
<source>The ssh-keygen tool was not found.</source>
|
||||||
<translation type="unfinished">Das Programm "ssh-keygen" wurde nicht gefunden.</translation>
|
<translation>Das Programm "ssh-keygen" wurde nicht gefunden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Refusing to overwrite existing private key file "%1".</source>
|
<source>Refusing to overwrite existing private key file "%1".</source>
|
||||||
<translation type="unfinished">Die private Schlüsseldatei "%1" wird nicht überschrieben.</translation>
|
<translation>Die private Schlüsseldatei "%1" wird nicht überschrieben.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The ssh-keygen tool at "%1" failed: %2</source>
|
<source>The ssh-keygen tool at "%1" failed: %2</source>
|
||||||
<translation type="unfinished">Das Programm "ssh-keygen" in "%1" hat einen Fehler festgestellt: %2</translation>
|
<translation>Das Programm "ssh-keygen" in "%1" hat einen Fehler festgestellt: %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Choose Private Key File Name</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Key Generation Failed</source>
|
<source>Key Generation Failed</source>
|
||||||
<translation type="unfinished">Fehler bei Erzeugung der Schlüssel</translation>
|
<translation>Schlüsselerzeugung ist fehlgeschlagen</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -48636,30 +48647,30 @@ Zeile: %4, Spalte: %5
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>None</source>
|
<source>None</source>
|
||||||
<translation type="unfinished">Keine</translation>
|
<translation>Keine</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>LF</source>
|
<source>LF</source>
|
||||||
<translation type="unfinished">LF</translation>
|
<translation>LF</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>CR</source>
|
<source>CR</source>
|
||||||
<translation type="unfinished">CR</translation>
|
<translation>CR</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>CRLF</source>
|
<source>CRLF</source>
|
||||||
<translation type="unfinished">CRLF</translation>
|
<translation>CRLF</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>QtC::SilverSearcher</name>
|
<name>QtC::SilverSearcher</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Search Options (optional)</source>
|
<source>Search Options (optional)</source>
|
||||||
<translation type="unfinished">Sucheinstellungen (optional)</translation>
|
<translation>Sucheinstellungen (optional)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Silver Searcher is not available on the system.</source>
|
<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>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -55651,88 +55662,92 @@ should a repository require SSH-authentication (see documentation on SSH and the
|
|||||||
<name>QtC::WebAssembly</name>
|
<name>QtC::WebAssembly</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Web Browser</source>
|
<source>Web Browser</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Webbrowser</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>WebAssembly Runtime</source>
|
<source>WebAssembly Runtime</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>WebAssembly-Runtime</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Emscripten SDK path:</source>
|
<source>Emscripten SDK path:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Pfad zum Emscripten-SDK:</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Emscripten SDK environment:</source>
|
<source>Emscripten SDK environment:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Umgebung für Emscripten-SDK:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Note: %1 supports Qt %2 for WebAssembly and higher. Your installed lower Qt version(s) are not supported.</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Adding directories to PATH:</source>
|
<source>Adding directories to PATH:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Füge Verzeichnisse zu PATH hinzu:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Setting environment variables:</source>
|
<source>Setting environment variables:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Setze Umgebungsvariablen:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The activated version %1 is not supported by %2. Activate version %3 or higher.</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Activated version: %1</source>
|
<source>Activated version: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Aktivierte Version: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>WebAssembly</source>
|
<source>WebAssembly</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>WebAssembly</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Setup Emscripten SDK for WebAssembly? To do it later, select Edit > Preferences > Devices > WebAssembly.</source>
|
<source>Setup Emscripten SDK for WebAssembly? To do it later, select Edit > Preferences > Devices > WebAssembly.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Emscripten-SDK für WebAssembly einrichten? Dies geht auch später unter Bearbeiten > Einstellungen > Geräte > WebAssembly.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Setup Emscripten SDK</source>
|
<source>Setup Emscripten SDK</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Emscripten-SDK einrichten</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>WebAssembly</source>
|
<source>WebAssembly</source>
|
||||||
<comment>Qt Version is meant for WebAssembly</comment>
|
<comment>Qt Version is meant for WebAssembly</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation>WebAssembly</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>%1 does not support Qt for WebAssembly below version %2.</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<source>Effective emrun call:</source>
|
<source>Effective emrun call:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Resultierender emrun-Aufruf:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Default Browser</source>
|
<source>Default Browser</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Vorgabe-Browser</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Web browser:</source>
|
<source>Web browser:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Webbrowser:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Emscripten Compiler</source>
|
<source>Emscripten Compiler</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Emscripten-Compiler</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Emscripten Compiler %1 for %2</source>
|
<source>Emscripten Compiler %1 for %2</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Emscripten-Compiler %1 für %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Emscripten</source>
|
<source>Emscripten</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Emscripten</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -58293,35 +58308,35 @@ Are you sure you want to remove the material?</source>
|
|||||||
<name>QtC::Vcpkg</name>
|
<name>QtC::Vcpkg</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Search package...</source>
|
<source>Search package...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Paket suchen...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Vcpkg Manifest Editor</source>
|
<source>Vcpkg Manifest Editor</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Vcpkg Manifest-Editor</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Name:</source>
|
<source>Name:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Name:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Version:</source>
|
<source>Version:</source>
|
||||||
<translation type="unfinished">Version:</translation>
|
<translation>Version:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>License:</source>
|
<source>License:</source>
|
||||||
<translation type="unfinished">Lizenz:</translation>
|
<translation>Lizenz:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Description:</source>
|
<source>Description:</source>
|
||||||
<translation type="unfinished">Beschreibung:</translation>
|
<translation>Beschreibung:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Homepage:</source>
|
<source>Homepage:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Homepage:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Vcpkg installation</source>
|
<source>Vcpkg installation</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Vcpkg-Installation</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
|||||||
@@ -54,6 +54,10 @@ bool UnixPtyProcess::startProcess(const QString &shellPath,
|
|||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
m_shellProcess.m_handleMaster = ::posix_openpt(O_RDWR | O_NOCTTY);
|
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) {
|
if (m_shellProcess.m_handleMaster <= 0) {
|
||||||
m_lastError = QString("UnixPty Error: unable to open master -> %1").arg(QLatin1String(strerror(errno)));
|
m_lastError = QString("UnixPty Error: unable to open master -> %1").arg(QLatin1String(strerror(errno)));
|
||||||
kill();
|
kill();
|
||||||
@@ -308,10 +312,7 @@ QByteArray UnixPtyProcess::readAll()
|
|||||||
|
|
||||||
qint64 UnixPtyProcess::write(const QByteArray &byteArray)
|
qint64 UnixPtyProcess::write(const QByteArray &byteArray)
|
||||||
{
|
{
|
||||||
int result = ::write(m_shellProcess.m_handleMaster, byteArray.constData(), byteArray.size());
|
return ::write(m_shellProcess.m_handleMaster, byteArray.constData(), byteArray.size());
|
||||||
Q_UNUSED(result)
|
|
||||||
|
|
||||||
return byteArray.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UnixPtyProcess::isAvailable()
|
bool UnixPtyProcess::isAvailable()
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#include <vterm.h>
|
#include <vterm.h>
|
||||||
|
|
||||||
#include <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
namespace TerminalSolution {
|
namespace TerminalSolution {
|
||||||
|
|
||||||
@@ -20,6 +21,8 @@ QColor toQColor(const VTermColor &c)
|
|||||||
return QColor(qRgb(c.rgb.red, c.rgb.green, c.rgb.blue));
|
return QColor(qRgb(c.rgb.red, c.rgb.green, c.rgb.blue));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
constexpr int batchFlushSize = 256;
|
||||||
|
|
||||||
struct TerminalSurfacePrivate
|
struct TerminalSurfacePrivate
|
||||||
{
|
{
|
||||||
TerminalSurfacePrivate(TerminalSurface *surface, const QSize &initialGridSize)
|
TerminalSurfacePrivate(TerminalSurface *surface, const QSize &initialGridSize)
|
||||||
@@ -29,13 +32,64 @@ struct TerminalSurfacePrivate
|
|||||||
, q(surface)
|
, 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()
|
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);
|
vterm_set_utf8(m_vterm.get(), true);
|
||||||
|
|
||||||
static auto writeToPty = [](const char *s, size_t len, void *user) {
|
static auto writeToPty = [](const char *s, size_t len, void *user) {
|
||||||
auto p = static_cast<TerminalSurfacePrivate *>(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);
|
vterm_output_set_callback(m_vterm.get(), writeToPty, this);
|
||||||
@@ -319,6 +373,10 @@ struct TerminalSurfacePrivate
|
|||||||
SurfaceIntegration *m_surfaceIntegration{nullptr};
|
SurfaceIntegration *m_surfaceIntegration{nullptr};
|
||||||
|
|
||||||
TerminalSurface *q;
|
TerminalSurface *q;
|
||||||
|
QTimer m_delayWriteTimer;
|
||||||
|
QByteArray m_writeBuffer;
|
||||||
|
|
||||||
|
TerminalSurface::WriteToPty m_writeToPty;
|
||||||
};
|
};
|
||||||
|
|
||||||
TerminalSurface::TerminalSurface(QSize initialGridSize)
|
TerminalSurface::TerminalSurface(QSize initialGridSize)
|
||||||
@@ -393,7 +451,7 @@ void TerminalSurface::clearAll()
|
|||||||
vterm_input_write(d->m_vterm.get(), data.constData(), data.size());
|
vterm_input_write(d->m_vterm.get(), data.constData(), data.size());
|
||||||
|
|
||||||
// Send Ctrl+L which will clear the screen
|
// Send Ctrl+L which will clear the screen
|
||||||
emit writeToPty(QByteArray("\f"));
|
d->m_writeToPty(QByteArray("\f"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TerminalSurface::resize(QSize newSize)
|
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));
|
vterm_mouse_button(d->m_vterm.get(), btnIdx, pressed, qtModifierToVTerm(modifiers));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TerminalSurface::setWriteToPty(WriteToPty writeToPty)
|
||||||
|
{
|
||||||
|
d->m_writeToPty = writeToPty;
|
||||||
|
}
|
||||||
|
|
||||||
CellIterator TerminalSurface::begin() const
|
CellIterator TerminalSurface::begin() const
|
||||||
{
|
{
|
||||||
auto res = CellIterator(this, {0, 0});
|
auto res = CellIterator(this, {0, 0});
|
||||||
|
|||||||
@@ -98,10 +98,12 @@ public:
|
|||||||
SurfaceIntegration *surfaceIntegration() const;
|
SurfaceIntegration *surfaceIntegration() const;
|
||||||
void setSurfaceIntegration(SurfaceIntegration *surfaceIntegration);
|
void setSurfaceIntegration(SurfaceIntegration *surfaceIntegration);
|
||||||
|
|
||||||
|
using WriteToPty = std::function<qint64(const QByteArray &)>;
|
||||||
|
void setWriteToPty(WriteToPty writeToPty);
|
||||||
|
|
||||||
void mouseMove(QPoint pos, Qt::KeyboardModifiers modifiers);
|
void mouseMove(QPoint pos, Qt::KeyboardModifiers modifiers);
|
||||||
void mouseButton(Qt::MouseButton button, bool pressed, Qt::KeyboardModifiers modifiers);
|
void mouseButton(Qt::MouseButton button, bool pressed, Qt::KeyboardModifiers modifiers);
|
||||||
signals:
|
signals:
|
||||||
void writeToPty(const QByteArray &data);
|
|
||||||
void invalidated(QRect grid);
|
void invalidated(QRect grid);
|
||||||
void fullSizeChanged(QSize newSize);
|
void fullSizeChanged(QSize newSize);
|
||||||
void cursorChanged(Cursor oldCursor, Cursor newCursor);
|
void cursorChanged(Cursor oldCursor, Cursor newCursor);
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ void TerminalView::setupSurface()
|
|||||||
if (d->m_surfaceIntegration)
|
if (d->m_surfaceIntegration)
|
||||||
d->m_surface->setSurfaceIntegration(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] {
|
connect(d->m_surface.get(), &TerminalSurface::fullSizeChanged, this, [this] {
|
||||||
updateScrollBars();
|
updateScrollBars();
|
||||||
|
|||||||
@@ -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 writeToTerminal(const QByteArray &data, bool forceFlush);
|
||||||
|
|
||||||
void restart();
|
void restart();
|
||||||
|
|||||||
@@ -1564,9 +1564,11 @@ qint64 Process::writeRaw(const QByteArray &input)
|
|||||||
QTC_ASSERT(state() == QProcess::Running, return -1);
|
QTC_ASSERT(state() == QProcess::Running, return -1);
|
||||||
QTC_ASSERT(QThread::currentThread() == thread(), return -1);
|
QTC_ASSERT(QThread::currentThread() == thread(), return -1);
|
||||||
qint64 result = -1;
|
qint64 result = -1;
|
||||||
QMetaObject::invokeMethod(d->m_process.get(), [this, input] {
|
QMetaObject::invokeMethod(
|
||||||
d->m_process->write(input);
|
d->m_process.get(),
|
||||||
}, d->connectionType(), &result);
|
[this, input] { return d->m_process->write(input); },
|
||||||
|
d->connectionType(),
|
||||||
|
&result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
\internal
|
||||||
*/
|
*/
|
||||||
@@ -76,7 +106,7 @@ QMap<QString, QList<QKeySequence>> CommandsFile::importCommands() const
|
|||||||
QTC_ASSERT(!currentId.isEmpty(), continue);
|
QTC_ASSERT(!currentId.isEmpty(), continue);
|
||||||
const QXmlStreamAttributes attributes = r.attributes();
|
const QXmlStreamAttributes attributes = r.attributes();
|
||||||
if (attributes.hasAttribute(ctx.valueAttribute)) {
|
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);
|
QList<QKeySequence> keys = result.value(currentId);
|
||||||
result.insert(currentId, keys << QKeySequence(keyString));
|
result.insert(currentId, keys << QKeySequence(keyString));
|
||||||
}
|
}
|
||||||
@@ -93,7 +123,6 @@ QMap<QString, QList<QKeySequence>> CommandsFile::importCommands() const
|
|||||||
/*!
|
/*!
|
||||||
\internal
|
\internal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool CommandsFile::exportCommands(const QList<ShortcutItem *> &items)
|
bool CommandsFile::exportCommands(const QList<ShortcutItem *> &items)
|
||||||
{
|
{
|
||||||
FileSaver saver(m_filePath, QIODevice::Text);
|
FileSaver saver(m_filePath, QIODevice::Text);
|
||||||
@@ -118,7 +147,7 @@ bool CommandsFile::exportCommands(const QList<ShortcutItem *> &items)
|
|||||||
w.writeAttribute(ctx.idAttribute, id.toString());
|
w.writeAttribute(ctx.idAttribute, id.toString());
|
||||||
for (const QKeySequence &k : item->m_keys) {
|
for (const QKeySequence &k : item->m_keys) {
|
||||||
w.writeEmptyElement(ctx.keyElement);
|
w.writeEmptyElement(ctx.keyElement);
|
||||||
w.writeAttribute(ctx.valueAttribute, k.toString());
|
w.writeAttribute(ctx.valueAttribute, toAttribute(k.toString()));
|
||||||
}
|
}
|
||||||
w.writeEndElement(); // Shortcut
|
w.writeEndElement(); // Shortcut
|
||||||
}
|
}
|
||||||
@@ -126,7 +155,8 @@ bool CommandsFile::exportCommands(const QList<ShortcutItem *> &items)
|
|||||||
w.writeEndElement();
|
w.writeEndElement();
|
||||||
w.writeEndDocument();
|
w.writeEndDocument();
|
||||||
|
|
||||||
saver.setResult(&w);
|
if (!saver.setResult(&w))
|
||||||
|
qWarning() << saver.errorString();
|
||||||
}
|
}
|
||||||
return saver.finalize();
|
return saver.finalize();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -426,6 +426,7 @@ public:
|
|||||||
QList<ParameterAction *> m_projectActions;
|
QList<ParameterAction *> m_projectActions;
|
||||||
QList<QAction *> m_repositoryActions;
|
QList<QAction *> m_repositoryActions;
|
||||||
ParameterAction *m_applyCurrentFilePatchAction = nullptr;
|
ParameterAction *m_applyCurrentFilePatchAction = nullptr;
|
||||||
|
|
||||||
Gerrit::Internal::GerritPlugin m_gerritPlugin;
|
Gerrit::Internal::GerritPlugin m_gerritPlugin;
|
||||||
|
|
||||||
QPointer<StashDialog> m_stashDialog;
|
QPointer<StashDialog> m_stashDialog;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <debugger/debuggeritem.h>
|
#include <debugger/debuggeritem.h>
|
||||||
#include <debugger/debuggeritemmanager.h>
|
#include <debugger/debuggeritemmanager.h>
|
||||||
|
#include <projectexplorer/devicesupport/devicemanager.h>
|
||||||
#include <projectexplorer/projectexplorerconstants.h>
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
#include <projectexplorer/toolchain.h>
|
#include <projectexplorer/toolchain.h>
|
||||||
#include <projectexplorer/toolchainmanager.h>
|
#include <projectexplorer/toolchainmanager.h>
|
||||||
@@ -447,7 +448,8 @@ static ToolChain *iarToolChain(const FilePath &path, Id language)
|
|||||||
== BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID;
|
== BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID;
|
||||||
});
|
});
|
||||||
if (iarFactory) {
|
if (iarFactory) {
|
||||||
Toolchains detected = iarFactory->autoDetect(ToolchainDetector({}, {}, {}));
|
Toolchains detected = iarFactory->autoDetect(
|
||||||
|
{{}, DeviceManager::defaultDesktopDevice(), {}});
|
||||||
if (detected.isEmpty())
|
if (detected.isEmpty())
|
||||||
detected = iarFactory->detectForImport({path, language});
|
detected = iarFactory->detectForImport({path, language});
|
||||||
for (auto tc : detected) {
|
for (auto tc : detected) {
|
||||||
|
|||||||
@@ -3,10 +3,11 @@
|
|||||||
|
|
||||||
#include "toolchainoptionspage.h"
|
#include "toolchainoptionspage.h"
|
||||||
|
|
||||||
#include "toolchain.h"
|
|
||||||
#include "abi.h"
|
#include "abi.h"
|
||||||
|
#include "devicesupport/devicemanager.h"
|
||||||
#include "projectexplorerconstants.h"
|
#include "projectexplorerconstants.h"
|
||||||
#include "projectexplorertr.h"
|
#include "projectexplorertr.h"
|
||||||
|
#include "toolchain.h"
|
||||||
#include "toolchainconfigwidget.h"
|
#include "toolchainconfigwidget.h"
|
||||||
#include "toolchainmanager.h"
|
#include "toolchainmanager.h"
|
||||||
|
|
||||||
@@ -407,7 +408,7 @@ void ToolChainOptionsWidget::redetectToolchains()
|
|||||||
QSet<ToolChain *> toDelete;
|
QSet<ToolChain *> toDelete;
|
||||||
ToolChainManager::resetBadToolchains();
|
ToolChainManager::resetBadToolchains();
|
||||||
for (ToolChainFactory *f : ToolChainFactory::allToolChainFactories()) {
|
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)) {
|
for (ToolChain * const tc : f->autoDetect(detector)) {
|
||||||
if (knownTcs.contains(tc) || toDelete.contains(tc))
|
if (knownTcs.contains(tc) || toDelete.contains(tc))
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -1675,8 +1675,8 @@ void DesignerActionManager::createDefaultDesignerActions()
|
|||||||
setFlowStartDisplayName,
|
setFlowStartDisplayName,
|
||||||
{},
|
{},
|
||||||
flowCategory,
|
flowCategory,
|
||||||
2,
|
|
||||||
{},
|
{},
|
||||||
|
2,
|
||||||
&setFlowStartItem,
|
&setFlowStartItem,
|
||||||
&isFlowItem,
|
&isFlowItem,
|
||||||
&flowOptionVisible));
|
&flowOptionVisible));
|
||||||
|
|||||||
@@ -260,10 +260,12 @@ void TerminalWidget::closeTerminal()
|
|||||||
deleteLater();
|
deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TerminalWidget::writeToPty(const QByteArray &data)
|
qint64 TerminalWidget::writeToPty(const QByteArray &data)
|
||||||
{
|
{
|
||||||
if (m_process && m_process->isRunning())
|
if (m_process && m_process->isRunning())
|
||||||
m_process->writeRaw(data);
|
return m_process->writeRaw(data);
|
||||||
|
|
||||||
|
return data.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TerminalWidget::resizePty(QSize newSize)
|
void TerminalWidget::resizePty(QSize newSize)
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ protected:
|
|||||||
void linkActivated(const Link &link) override;
|
void linkActivated(const Link &link) override;
|
||||||
void contextMenuRequested(const QPoint &pos) 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 resizePty(QSize newSize) override;
|
||||||
void setClipboard(const QString &text) override;
|
void setClipboard(const QString &text) override;
|
||||||
std::optional<TerminalView::Link> toLink(const QString &text) override;
|
std::optional<TerminalView::Link> toLink(const QString &text) override;
|
||||||
|
|||||||
33
tests/system/0001-Fix-build-on-macOS.patch
Normal file
33
tests/system/0001-Fix-build-on-macOS.patch
Normal 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)
|
||||||
|
|
||||||
@@ -238,7 +238,7 @@ def __logDebugResult__():
|
|||||||
|
|
||||||
def verifyBreakPoint(bpToVerify):
|
def verifyBreakPoint(bpToVerify):
|
||||||
if isinstance(bpToVerify, dict):
|
if isinstance(bpToVerify, dict):
|
||||||
fileName = list(bpToVerify.keys())[0]
|
fileName = next(iter(bpToVerify.keys()))
|
||||||
editor = getEditorForFileSuffix(fileName)
|
editor = getEditorForFileSuffix(fileName)
|
||||||
if editor:
|
if editor:
|
||||||
test.compare(waitForObject(":DebugModeWidget_QComboBox").toolTip, fileName,
|
test.compare(waitForObject(":DebugModeWidget_QComboBox").toolTip, fileName,
|
||||||
@@ -247,7 +247,7 @@ def verifyBreakPoint(bpToVerify):
|
|||||||
windowTitle = str(waitForObject(":Qt Creator_Core::Internal::MainWindow").windowTitle)
|
windowTitle = str(waitForObject(":Qt Creator_Core::Internal::MainWindow").windowTitle)
|
||||||
test.verify(windowTitle.startswith(os.path.basename(fileName) + " "),
|
test.verify(windowTitle.startswith(os.path.basename(fileName) + " "),
|
||||||
"Verify that Creator's window title changed according to current file")
|
"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)
|
"Compare hit breakpoint to expected line number in %s" % fileName)
|
||||||
else:
|
else:
|
||||||
test.fatal("Expected a dict for bpToVerify - got '%s'" % className(bpToVerify))
|
test.fatal("Expected a dict for bpToVerify - got '%s'" % className(bpToVerify))
|
||||||
|
|||||||
@@ -248,11 +248,16 @@ def createProject_Qt_GUI(path, projectName, checks=True, addToVersionControl="<N
|
|||||||
# param path specifies where to create the project
|
# param path specifies where to create the project
|
||||||
# param projectName is the name for the new project
|
# param projectName is the name for the new project
|
||||||
# param checks turns tests in the function on if set to True
|
# 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")
|
available = __createProjectOrFileSelectType__(" Application (Qt)", "Qt Console Application")
|
||||||
__createProjectSetNameAndPath__(path, projectName, checks)
|
__createProjectSetNameAndPath__(path, projectName, checks)
|
||||||
buildSystem = __handleBuildSystem__(buildSystem)
|
buildSystem = __handleBuildSystem__(buildSystem)
|
||||||
__createProjectHandleTranslationSelection__()
|
__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)
|
__selectQtVersionDesktop__(buildSystem, checks, available)
|
||||||
|
|
||||||
expectedFiles = []
|
expectedFiles = []
|
||||||
|
|||||||
@@ -206,7 +206,8 @@ def substituteCdb(settingsDir):
|
|||||||
try:
|
try:
|
||||||
serverIni = readFile(os.path.join(os.getenv("APPDATA"), "froglogic",
|
serverIni = readFile(os.path.join(os.getenv("APPDATA"), "froglogic",
|
||||||
"Squish", "ver1", "server.ini"))
|
"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]
|
autPath = autLine.split("\"")[1]
|
||||||
return os.path.exists(os.path.join(autPath, "..", "lib", "qtcreatorcdbext64"))
|
return os.path.exists(os.path.join(autPath, "..", "lib", "qtcreatorcdbext64"))
|
||||||
except:
|
except:
|
||||||
|
|||||||
@@ -41,8 +41,9 @@ def main():
|
|||||||
listView = waitForObject(":popupFrame_Proposal_QListView")
|
listView = waitForObject(":popupFrame_Proposal_QListView")
|
||||||
shownProposals = dumpItems(listView.model())
|
shownProposals = dumpItems(listView.model())
|
||||||
usedProposal = "class derived from QObject"
|
usedProposal = "class derived from QObject"
|
||||||
expectedProposals = ["class", "class ", "class template",
|
expectedProposals = ["class ", "class template",
|
||||||
usedProposal, "class derived from QWidget"]
|
usedProposal, "class derived from QWidget"]
|
||||||
|
expectedProposals += [" class"] if useClang else ["class"]
|
||||||
test.xcompare(len(shownProposals), len(expectedProposals), # QTCREATORBUG-23159
|
test.xcompare(len(shownProposals), len(expectedProposals), # QTCREATORBUG-23159
|
||||||
"Number of proposed templates")
|
"Number of proposed templates")
|
||||||
test.verify(set(expectedProposals).issubset(set(shownProposals)),
|
test.verify(set(expectedProposals).issubset(set(shownProposals)),
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ def checkQtCreatorHelpVersion(expectedVersion):
|
|||||||
helpContentWidget = waitForObject(':Qt Creator_QHelpContentWidget', 5000)
|
helpContentWidget = waitForObject(':Qt Creator_QHelpContentWidget', 5000)
|
||||||
waitFor("any(map(rightStart, dumpItems(helpContentWidget.model())))", 10000)
|
waitFor("any(map(rightStart, dumpItems(helpContentWidget.model())))", 10000)
|
||||||
items = dumpItems(helpContentWidget.model())
|
items = dumpItems(helpContentWidget.model())
|
||||||
test.compare(list(filter(rightStart, items))[0],
|
test.compare(next(iter(filter(rightStart, items))),
|
||||||
'Qt Creator Manual %s' % expectedVersion,
|
'Qt Creator Manual %s' % expectedVersion,
|
||||||
'Verifying whether manual uses expected version.')
|
'Verifying whether manual uses expected version.')
|
||||||
except:
|
except:
|
||||||
|
|||||||
@@ -12,7 +12,11 @@ def main():
|
|||||||
startQC()
|
startQC()
|
||||||
if not startedWithoutPluginError():
|
if not startedWithoutPluginError():
|
||||||
return
|
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")
|
mainEditor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")
|
||||||
replaceEditorContent(mainEditor, "")
|
replaceEditorContent(mainEditor, "")
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ def cmakeSupported():
|
|||||||
versionLines = filter(lambda line: "cmake version " in line,
|
versionLines = filter(lambda line: "cmake version " in line,
|
||||||
getOutputFromCmdline(["cmake", "--version"]).splitlines())
|
getOutputFromCmdline(["cmake", "--version"]).splitlines())
|
||||||
try:
|
try:
|
||||||
versionLine = list(versionLines)[0]
|
versionLine = next(iter(versionLines))
|
||||||
test.log("Using " + versionLine)
|
test.log("Using " + versionLine)
|
||||||
matcher = re.match("cmake version (\d+)\.(\d+)\.\d+", versionLine)
|
matcher = re.match("cmake version (\d+)\.(\d+)\.\d+", versionLine)
|
||||||
major = __builtin__.int(matcher.group(1))
|
major = __builtin__.int(matcher.group(1))
|
||||||
@@ -32,6 +32,16 @@ def main():
|
|||||||
if not SpeedCrunchPath:
|
if not SpeedCrunchPath:
|
||||||
test.fatal("Could not clone SpeedCrunch")
|
test.fatal("Could not clone SpeedCrunch")
|
||||||
return
|
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()
|
startQC()
|
||||||
if not startedWithoutPluginError():
|
if not startedWithoutPluginError():
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
"text" "nestinglevel"
|
"text" "nestinglevel"
|
||||||
"CMakeLists.txt" "0"
|
"CMakeLists.txt" "0"
|
||||||
"speedcrunch" "0"
|
|
||||||
"Header Files" "1"
|
"Header Files" "1"
|
||||||
"genericdock.h" "2"
|
"genericdock.h" "2"
|
||||||
"Source Files" "1"
|
"Source Files" "1"
|
||||||
|
|||||||
|
@@ -49,8 +49,8 @@ def main():
|
|||||||
availableProjectTypes.append({category:template})
|
availableProjectTypes.append({category:template})
|
||||||
safeClickButton("Cancel")
|
safeClickButton("Cancel")
|
||||||
for current in availableProjectTypes:
|
for current in availableProjectTypes:
|
||||||
category = list(current.keys())[0]
|
category = next(iter(current.keys()))
|
||||||
template = list(current.values())[0]
|
template = next(iter(current.values()))
|
||||||
with TestSection("Testing project template %s -> %s" % (category, template)):
|
with TestSection("Testing project template %s -> %s" % (category, template)):
|
||||||
displayedPlatforms = __createProject__(category, template)
|
displayedPlatforms = __createProject__(category, template)
|
||||||
if template.startswith("Qt Quick Application"):
|
if template.startswith("Qt Quick Application"):
|
||||||
|
|||||||
@@ -311,15 +311,15 @@ def __compareCompilers__(foundCompilers, expectedCompilers):
|
|||||||
for currentExp in expectedCompilers:
|
for currentExp in expectedCompilers:
|
||||||
if isString(currentExp):
|
if isString(currentExp):
|
||||||
continue
|
continue
|
||||||
key = list(currentExp.keys())[0]
|
key = next(iter(currentExp.keys()))
|
||||||
# the regex .*? is used for the different possible version strings of the WinSDK
|
# 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
|
# 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
|
# same applies for [.0-9]+ which is used for minor/patch versions
|
||||||
isRegex = ".*?" in key or "[.0-9]+" in key
|
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()):
|
or currentFound.keys() == currentExp.keys()):
|
||||||
if ((isWin and os.path.abspath(list(currentFound.values())[0].lower())
|
if ((isWin and os.path.abspath(next(iter(currentFound.values())).lower())
|
||||||
== os.path.abspath(list(currentExp.values())[0].lower()))
|
== os.path.abspath(next(iter(currentExp.values())).lower()))
|
||||||
or currentFound.values() == currentExp.values()):
|
or currentFound.values() == currentExp.values()):
|
||||||
foundExp = True
|
foundExp = True
|
||||||
break
|
break
|
||||||
@@ -359,24 +359,22 @@ def __lowerStrs__(iterable):
|
|||||||
def __checkCreatedSettings__(settingsFolder):
|
def __checkCreatedSettings__(settingsFolder):
|
||||||
waitForCleanShutdown()
|
waitForCleanShutdown()
|
||||||
qtProj = os.path.join(settingsFolder, "QtProject")
|
qtProj = os.path.join(settingsFolder, "QtProject")
|
||||||
folders = []
|
creatorFolder = os.path.join(qtProj, "qtcreator")
|
||||||
files = [{os.path.join(qtProj, "QtCreator.db"):0},
|
folders = [creatorFolder,
|
||||||
{os.path.join(qtProj, "QtCreator.ini"):30}]
|
os.path.join(creatorFolder, "generic-highlighter"),
|
||||||
folders.append(os.path.join(qtProj, "qtcreator"))
|
os.path.join(creatorFolder, "macros")]
|
||||||
files.extend([{os.path.join(folders[0], "debuggers.xml"):0},
|
files = {os.path.join(qtProj, "QtCreator.db"):0,
|
||||||
{os.path.join(folders[0], "devices.xml"):0},
|
os.path.join(qtProj, "QtCreator.ini"):30,
|
||||||
{os.path.join(folders[0], "helpcollection.qhc"):0},
|
os.path.join(creatorFolder, "debuggers.xml"):0,
|
||||||
{os.path.join(folders[0], "profiles.xml"):0},
|
os.path.join(creatorFolder, "devices.xml"):0,
|
||||||
{os.path.join(folders[0], "qtversion.xml"):0},
|
os.path.join(creatorFolder, "helpcollection.qhc"):0,
|
||||||
{os.path.join(folders[0], "toolchains.xml"):0}])
|
os.path.join(creatorFolder, "profiles.xml"):0,
|
||||||
folders.extend([os.path.join(folders[0], "generic-highlighter"),
|
os.path.join(creatorFolder, "qtversion.xml"):0,
|
||||||
os.path.join(folders[0], "macros")])
|
os.path.join(creatorFolder, "toolchains.xml"):0}
|
||||||
for f in folders:
|
for f in folders:
|
||||||
test.verify(os.path.isdir(f),
|
test.verify(os.path.isdir(f),
|
||||||
"Verifying whether folder '%s' has been created." % os.path.basename(f))
|
"Verifying whether folder '%s' has been created." % os.path.basename(f))
|
||||||
for f in files:
|
for fName, fMinSize in files.items():
|
||||||
fName = list(f.keys())[0]
|
|
||||||
fMinSize = list(f.values())[0]
|
|
||||||
text = "created non-empty"
|
text = "created non-empty"
|
||||||
if fMinSize > 0:
|
if fMinSize > 0:
|
||||||
text = "modified"
|
text = "modified"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ def main():
|
|||||||
if not neededFilePresent(pathCreator):
|
if not neededFilePresent(pathCreator):
|
||||||
return
|
return
|
||||||
|
|
||||||
startQC()
|
startQC(["-noload", "ClangCodeModel"])
|
||||||
if not startedWithoutPluginError():
|
if not startedWithoutPluginError():
|
||||||
return
|
return
|
||||||
openQbsProject(pathCreator)
|
openQbsProject(pathCreator)
|
||||||
@@ -24,7 +24,7 @@ def main():
|
|||||||
else:
|
else:
|
||||||
test.warning("Parsing project timed out")
|
test.warning("Parsing project timed out")
|
||||||
compareProjectTree(rootNodeTemplate % "Qt Creator", "projecttree_creator.tsv")
|
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)))
|
deprecationWarnings = "\n".join(set(filter(lambda s: "deprecated" in s, buildIssuesTexts)))
|
||||||
if deprecationWarnings:
|
if deprecationWarnings:
|
||||||
test.warning("Creator claims that the .qbs file uses deprecated features.",
|
test.warning("Creator claims that the .qbs file uses deprecated features.",
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ def main():
|
|||||||
if not pathSpeedcrunch:
|
if not pathSpeedcrunch:
|
||||||
test.fatal("Could not clone SpeedCrunch")
|
test.fatal("Could not clone SpeedCrunch")
|
||||||
return
|
return
|
||||||
startQC()
|
startQC(["-noload", "ClangCodeModel"])
|
||||||
if not startedWithoutPluginError():
|
if not startedWithoutPluginError():
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -4166,7 +4166,6 @@
|
|||||||
"Headers" "5"
|
"Headers" "5"
|
||||||
"touchbar.h" "6"
|
"touchbar.h" "6"
|
||||||
"Sources" "5"
|
"Sources" "5"
|
||||||
"touchbar.cpp" "6"
|
|
||||||
"Headers" "4"
|
"Headers" "4"
|
||||||
"optional" "6"
|
"optional" "6"
|
||||||
"optional.hpp" "7"
|
"optional.hpp" "7"
|
||||||
@@ -16895,21 +16894,6 @@
|
|||||||
"qtc-askpass-main.cpp" "4"
|
"qtc-askpass-main.cpp" "4"
|
||||||
"Other files" "3"
|
"Other files" "3"
|
||||||
"qtc-askpass.qbs" "4"
|
"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" "2"
|
||||||
"qtpromaker.pro" "3"
|
"qtpromaker.pro" "3"
|
||||||
"qtcreatortool" "3"
|
"qtcreatortool" "3"
|
||||||
@@ -20837,7 +20821,6 @@
|
|||||||
"Headers" "5"
|
"Headers" "5"
|
||||||
"touchbar.h" "6"
|
"touchbar.h" "6"
|
||||||
"Sources" "5"
|
"Sources" "5"
|
||||||
"touchbar.cpp" "6"
|
|
||||||
"Headers" "4"
|
"Headers" "4"
|
||||||
"optional" "6"
|
"optional" "6"
|
||||||
"optional.hpp" "7"
|
"optional.hpp" "7"
|
||||||
@@ -21758,7 +21741,6 @@
|
|||||||
"Headers" "6"
|
"Headers" "6"
|
||||||
"touchbar.h" "7"
|
"touchbar.h" "7"
|
||||||
"Sources" "6"
|
"Sources" "6"
|
||||||
"touchbar.cpp" "7"
|
|
||||||
"Headers" "5"
|
"Headers" "5"
|
||||||
"optional" "7"
|
"optional" "7"
|
||||||
"optional.hpp" "8"
|
"optional.hpp" "8"
|
||||||
|
|||||||
|
Can't render this file because it is too large.
|
@@ -86,12 +86,12 @@ def __clickCommit__(count):
|
|||||||
show = str(description.plainText)
|
show = str(description.plainText)
|
||||||
id = "Nobody <nobody@nowhere\.com>"
|
id = "Nobody <nobody@nowhere\.com>"
|
||||||
time = "\w{3} \w{3} \d{1,2} \d{2}:\d{2}:\d{2} \d{4}.* seconds ago\)"
|
time = "\w{3} \w{3} \d{1,2} \d{2}:\d{2}:\d{2} \d{4}.* seconds ago\)"
|
||||||
expected = [{"commit %s" % commit:False},
|
expected = [["commit %s" % commit, False],
|
||||||
{"Author: %s, %s" % (id, time): True},
|
["Author: %s, %s" % (id, time), True],
|
||||||
{"Committer: %s, %s" % (id, time): True}]
|
["Committer: %s, %s" % (id, time), True]]
|
||||||
for line, exp in zip(show.splitlines(), expected):
|
for line, exp in zip(show.splitlines(), expected):
|
||||||
expLine = list(exp.keys())[0]
|
expLine = exp[0]
|
||||||
isRegex = list(exp.values())[0]
|
isRegex = exp[1]
|
||||||
if isRegex:
|
if isRegex:
|
||||||
test.verify(re.match(expLine, line), "Verifying commit header line '%s'" % line)
|
test.verify(re.match(expLine, line), "Verifying commit header line '%s'" % line)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user