From ed43e6d99f62fab80ccc3a1ae3b7b952d48a5e9f Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Thu, 14 Mar 2019 11:09:36 +0100 Subject: [PATCH 01/36] CompilationDatabase: Refresh the tree on the JSON file update Reparse the compile_commands.json file when it has changed. Fixes: QTCREATORBUG-21733 Change-Id: I8e5a99efd136b1d46a417817bde5b5b989109eea Reviewed-by: Christian Kandeler Reviewed-by: Marco Bubke --- .../compilationdatabaseproject.cpp | 29 ++++++++++++++----- .../compilationdatabaseproject.h | 5 +++- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index f4865d7edf7..9909b22d944 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -419,14 +419,29 @@ CompilationDatabaseProject::CompilationDatabaseProject(const Utils::FileName &pr m_kit.reset(KitManager::defaultKit()->clone()); - connect(this, &CompilationDatabaseProject::parsingFinished, - this, [this]() { addTarget(createTarget(m_kit.get())); }); - - emitParsingStarted(); - - const QFuture future = ::Utils::runAsync([this, projectFile](){ - buildTreeAndProjectParts(projectFile); + connect(this, &CompilationDatabaseProject::parsingFinished, this, [this]() { + if (!m_hasTarget) { + addTarget(createTarget(m_kit.get())); + m_hasTarget = true; + } }); + + reparseProject(projectFile); + + m_fileSystemWatcher.addFile(projectFile.toString(), Utils::FileSystemWatcher::WatchModifiedDate); + connect(&m_fileSystemWatcher, + &Utils::FileSystemWatcher::fileChanged, + this, + [this](const QString &projectFile) { + reparseProject(Utils::FileName::fromString(projectFile)); + }); +} + +void CompilationDatabaseProject::reparseProject(const Utils::FileName &projectFile) +{ + emitParsingStarted(); + const QFuture future = ::Utils::runAsync( + [this, projectFile]() { buildTreeAndProjectParts(projectFile); }); m_parserWatcher.setFuture(future); } diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h index 26fabebe472..5b6fc0a1167 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h @@ -26,8 +26,8 @@ #pragma once #include - #include +#include #include @@ -51,11 +51,14 @@ public: bool needsBuildConfigurations() const override { return false; } private: + void reparseProject(const Utils::FileName &projectFile); void buildTreeAndProjectParts(const Utils::FileName &projectFile); QFutureWatcher m_parserWatcher; std::unique_ptr m_cppCodeModelUpdater; std::unique_ptr m_kit; + Utils::FileSystemWatcher m_fileSystemWatcher; + bool m_hasTarget = false; }; class CompilationDatabaseEditorFactory : public TextEditor::TextEditorFactory From 7c69460702b7fd7c15662c7088a6d395a773640f Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 14 Mar 2019 16:00:50 +0100 Subject: [PATCH 02/36] Qmake: Switch back to old way of collecting deployment info Apparently, there are subtle differences between traversing the nodes and directly looking at the QmakeProFile children. I'm not quite sure what they are, so let's go back to the old implementation for now, which fixes the reported crash. This partially reverts ccd5955843. Fixes: QTCREATORBUG-22124 Change-Id: I35a3c20bb09666e8c3af797ebd88761141b7db10 Reviewed-by: Steve Mokris Reviewed-by: hjk --- .../qmakeprojectmanager/qmakeproject.cpp | 32 ++++++++----------- .../qmakeprojectmanager/qmakeproject.h | 6 ++-- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 6e92cf45d2c..a1bf62007a4 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -984,7 +984,7 @@ void QmakeProject::updateBuildSystemData() return; DeploymentData deploymentData; - collectData(rootProjectNode(), deploymentData); + collectData(file, deploymentData); target->setDeploymentData(deploymentData); BuildTargetInfoList appTargetList; @@ -1025,7 +1025,7 @@ void QmakeProject::updateBuildSystemData() workingDir += '/' + ti.target + ".app/Contents/MacOS"; BuildTargetInfo bti; - bti.targetFilePath = FileName::fromString(executableFor(node)); + bti.targetFilePath = FileName::fromString(executableFor(node->proFile())); bti.projectFilePath = node->filePath(); bti.workingDirectory = FileName::fromString(workingDir); bti.displayName = bti.projectFilePath.toFileInfo().completeBaseName(); @@ -1077,9 +1077,8 @@ void QmakeProject::updateBuildSystemData() target->setApplicationTargets(appTargetList); } -void QmakeProject::collectData(const QmakeProFileNode *node, DeploymentData &deploymentData) +void QmakeProject::collectData(const QmakeProFile *file, DeploymentData &deploymentData) { - QmakeProFile *file = node->proFile(); if (!file->isSubProjectDeployable(file->filePath())) return; @@ -1094,31 +1093,29 @@ void QmakeProject::collectData(const QmakeProFileNode *node, DeploymentData &dep switch (file->projectType()) { case ProjectType::ApplicationTemplate: if (!installsList.targetPath.isEmpty()) - collectApplicationData(node, deploymentData); + collectApplicationData(file, deploymentData); break; case ProjectType::SharedLibraryTemplate: case ProjectType::StaticLibraryTemplate: collectLibraryData(file, deploymentData); break; case ProjectType::SubDirsTemplate: - node->forEachNode({}, [this, &deploymentData](Node *subNode) { - if (auto subProject = dynamic_cast(subNode)) { - QTC_ASSERT(subProject->priFile(), return ); - if (subProject->priFile()->includedInExactParse()) - collectData(subProject, deploymentData); - } - }); + for (const QmakePriFile *const subPriFile : file->subPriFilesExact()) { + auto subProFile = dynamic_cast(subPriFile); + if (subProFile) + collectData(subProFile, deploymentData); + } break; default: break; } } -void QmakeProject::collectApplicationData(const QmakeProFileNode *node, DeploymentData &deploymentData) +void QmakeProject::collectApplicationData(const QmakeProFile *file, DeploymentData &deploymentData) { - QString executable = executableFor(node); + QString executable = executableFor(file); if (!executable.isEmpty()) - deploymentData.addFile(executable, node->proFile()->installsList().targetPath, + deploymentData.addFile(executable, file->installsList().targetPath, DeployableFile::TypeExecutable); } @@ -1305,17 +1302,16 @@ void QmakeProject::warnOnToolChainMismatch(const QmakeProFile *pro) const getFullPathOf(pro, Variable::QmakeCxx, bc)); } -QString QmakeProject::executableFor(const QmakeProFileNode *node) +QString QmakeProject::executableFor(const QmakeProFile *file) { const Kit *const kit = activeTarget() ? activeTarget()->kit() : nullptr; const ToolChain *const tc = ToolChainKitInformation::toolChain(kit, ProjectExplorer::Constants::CXX_LANGUAGE_ID); if (!tc) return QString(); - TargetInformation ti = node->targetInformation(); + TargetInformation ti = file->targetInformation(); QString target; - QmakeProFile *file = node->proFile(); QTC_ASSERT(file, return QString()); if (tc->targetAbi().os() == Abi::DarwinOS diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index a7620398351..bdcb1c477a6 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -126,7 +126,7 @@ private: void setAllBuildConfigurationsEnabled(bool enabled); - QString executableFor(const QmakeProFileNode *node); + QString executableFor(const QmakeProFile *file); void updateRunConfigurations(); void updateCppCodeModel(); @@ -135,8 +135,8 @@ private: static bool equalFileList(const QStringList &a, const QStringList &b); void updateBuildSystemData(); - void collectData(const QmakeProFileNode *node, ProjectExplorer::DeploymentData &deploymentData); - void collectApplicationData(const QmakeProFileNode *file, + void collectData(const QmakeProFile *file, ProjectExplorer::DeploymentData &deploymentData); + void collectApplicationData(const QmakeProFile *file, ProjectExplorer::DeploymentData &deploymentData); void collectLibraryData(const QmakeProFile *file, ProjectExplorer::DeploymentData &deploymentData); From fdfb4f5fa3a2c5a13545546d94ed2bfee13490d1 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Mon, 4 Mar 2019 19:23:05 +0100 Subject: [PATCH 03/36] Update German translation Change-Id: I5584b15522430df015c8dc74211ae97e3c988403 Reviewed-by: Ulf Hermann --- share/qtcreator/translations/qtcreator_de.ts | 3702 ++++++++++++------ 1 file changed, 2537 insertions(+), 1165 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 278c9f2afaf..1c7c577e0a0 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -527,18 +527,6 @@ Revert Repository... Änderungen im gesamten Repository rückgängig machen... - - Closing CVS Editor - CVS-Editor schließen - - - Do you want to commit the change? - Möchten Sie einen Commit der Änderung ausführen? - - - The commit message check failed. Do you want to commit the change? - Die Überprüfung der Beschreibung schlug fehl. Möchten Sie einen Commit der Änderung ausführen? - Revert Repository Alle Änderungen rückgängig machen @@ -1262,11 +1250,11 @@ Trotzdem fortfahren? Maximize Output Pane - Ausgabepanel maximiert darstellen + Ausgabebereich maximiert darstellen Output &Panes - Ausgabe&panele + Ausgabe&bereiche Shift+F6 @@ -1286,7 +1274,7 @@ Trotzdem fortfahren? Minimize Output Pane - Ausgabepanel minimiert darstellen + Ausgabebereich minimiert darstellen @@ -1583,6 +1571,10 @@ Trotzdem fortfahren? The configured path to the license template Der eingestellte Pfad der Lizenzvorlage + + Insert "#pragma once" instead of "#ifndef" include guards into header file + "#pragma once" statt Include-Guards mit "#ifndef" in Header-Datei einfügen + Debugger @@ -1659,14 +1651,14 @@ Weiterführende Informationen befinden sich in /etc/sysctl.d/10-ptrace.conf Use local core file: Lokale Core-Datei verwenden: - - Select Executable - Ausführbare Datei auswählen - Core file: Core-Datei: + + &Executable or symbol file: + &Ausführbare Datei oder Symboldatei: + Select Remote Core File Entfernte Core-Datei auswählen @@ -1675,6 +1667,14 @@ Weiterführende Informationen befinden sich in /etc/sysctl.d/10-ptrace.conf Select Core File Core-Datei auswählen + + Select Executable or Symbol File + Ausführbare Datei oder Symboldatei auswählen + + + Select a file containing debug information corresponding to the core file. Typically, this is the executable or a *.debug file if the debug information is stored separately from the executable. + Wählen Sie eine Datei aus, die Debuginformationen zur Core-Datei enthält. Normalerweise ist das die ausführbare Datei oder eine *.debug-Datei, wenn die Debuginformationen außerhalb der ausführbaren Datei gespeichert werden. + Select Startup Script Startskript auswählen @@ -1683,10 +1683,6 @@ Weiterführende Informationen befinden sich in /etc/sysctl.d/10-ptrace.conf Kit: Kit: - - &Executable: - &Ausführbare Datei: - Override &start script: Startskript &überschreiben: @@ -2953,7 +2949,7 @@ markers in the source code editor. <html><head/><body><p>Attempts to identify missing debug info packages and lists them in the Issues output pane.</p><p><b>Note:</b> This feature needs special support from the Linux distribution and GDB build and is not available everywhere.</p></body></html> - <html><head/><body><p>Durch Aktivieren dieser Option wird versucht, die fehlenden Debuginformationspakete zu bestimmen und sie in der Ansicht "Probleme" aufzulisten.</p><p><b>Hinweis:</b> Diese Funktionalität benötigt spezielle Unterstützung von der Linux-Distribution und von GDB und ist nicht überall vorhanden.</p></body></html> + <html><head/><body><p>Durch Aktivieren dieser Option wird versucht, die fehlenden Debuginformationspakete zu bestimmen und sie im Ausgabebereich "Probleme" aufzulisten.</p><p><b>Hinweis:</b> Diese Funktionalität benötigt spezielle Unterstützung von der Linux-Distribution und von GDB und ist nicht überall vorhanden.</p></body></html> <html><head/><body><p>GDB commands entered here will be executed after GDB has been started, but before the debugged program is started or attached, and before the debugging helpers are initialized.</p>%1</body></html> @@ -4234,6 +4230,10 @@ Grund: %3 Does not interpret some key presses in insert mode so that code can be properly completed and expanded. Einige Zeichenfolgen nicht im Einfügemodus verarbeiten, damit Quelltext korrekt vervollständigt und erweitert werden kann. + + Blinking cursor + Blinkende Einfügemarke + FilterNameDialogClass @@ -4935,14 +4935,6 @@ Jetzt Commit ausführen? Log Log - - Closing Git Editor - Git-Editor schließen - - - Git will not accept this commit. Do you want to continue to edit it? - Git akzeptiert diesen Commit nicht. Möchten Sie ihn weiter bearbeiten? - Repository Clean Repository bereinigt @@ -5115,6 +5107,10 @@ Jetzt Commit ausführen? &Subversion &Subversion + + DCommit + DCommit + Manage Remotes... Remotes verwalten... @@ -5211,10 +5207,6 @@ Jetzt Commit ausführen? Git Commit Git Commit - - Do you want to commit the change? - Möchten Sie einen Commit der Änderung ausführen? - Unable to retrieve file list Die Dateiliste konnte nicht bestimmt werden @@ -6076,10 +6068,6 @@ Add, modify, and remove document filters, which determine the documentation set The process terminated with exit code %1. Der Prozess wurde beendet, Rückgabewert %1. - - The commit message check failed. Do you want to submit this change list? - Die Überprüfung der Beschreibung schlug fehl. Möchten Sie den Submit-Vorgang trotzdem ausführen? - p4 submit failed: %1 Fehler beim Submit: %1 @@ -6129,14 +6117,6 @@ Add, modify, and remove document filters, which determine the documentation set p4 describe %1 p4 describe %1 - - Closing p4 Editor - P4-Editor schließen - - - Do you want to submit this change list? - Möchten Sie einen Submit der Änderungen ausführen? - Pending change Ausstehende Änderung @@ -6379,7 +6359,7 @@ Add, modify, and remove document filters, which determine the documentation set Could not start process "%1" %2 - Der Prozess "%1" %2 nicht gestartet werden + Der Prozess "%1" %2 konnte nicht gestartet werden @@ -6584,10 +6564,6 @@ Außer: %2 ProjectExplorer::Internal::BuildSettingsWidget - - &Clone Selected - Auswahl &duplizieren - No build settings available Es sind keine Build-Einstellungen verfügbar @@ -6604,6 +6580,10 @@ Außer: %2 Remove Entfernen + + Clone... + Klonen... + New Configuration Neue Konfiguration @@ -6866,19 +6846,19 @@ Außer: %2 Open Compile Output pane when building - Compiler-Ausgabe beim Erstellen anzeigen + Compiler-Ausgabebereich beim Erstellen anzeigen Open Application Output pane on output when running - Ausgabepanel bei der Ausführung öffnen, wenn eine Ausgabe erfolgt + Ausgabebereich bei der Ausführung öffnen, wenn eine Ausgabe erfolgt Open Application Output pane on output when debugging - Ausgabepanel beim Debuggen öffnen, wenn eine Ausgabe erfolgt + Ausgabebereich beim Debuggen öffnen, wenn eine Ausgabe erfolgt Asks before terminating the running application in response to clicking the stop button in Application Output. - Fragt vor dem Beenden der laufenden Anwendung bei Betätigen des Stop-Knopfes im Ausgabe-Panel nach. + Fragt vor dem Beenden der laufenden Anwendung bei Betätigen des Stop-Knopfes im Ausgabebereich "Ausgabe der Anwendung" nach. Stop applications before building: @@ -7131,6 +7111,10 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. Remove Entfernen + + Clone... + Klonen... + Run configuration: Ausführungskonfiguration: @@ -7159,10 +7143,6 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. Run Ausführen - - &Clone Selected - Auswahl &duplizieren - Clone Configuration Title of a the cloned RunConfiguration window, text of the window @@ -7554,10 +7534,6 @@ Möchten Sie sie ignorieren? Properties... Eigenschaften... - - Duplicate File... - Datei duplizieren... - Ctrl+T Ctrl+T @@ -7582,6 +7558,14 @@ Möchten Sie sie ignorieren? The currently active run configuration's executable (if applicable). Die ausführbare Datei der aktiven Ausführungskonfiguration (falls möglich). + + Current Build Environment + Aktuelle Build-Umgebung + + + Current Run Environment + Aktuelle Ausführungsumgebung + Load Project Projekt laden @@ -7728,6 +7712,14 @@ Möchten Sie sie ignorieren? Build Without Dependencies Erstellen unter Ausschluss der Abhängigkeiten + + Close All Files in Project + Alle Dateien im Projekt schließen + + + Close All Files in Project "%1" + Alle Dateien im Projekt "%1" schließen + Rebuild Without Dependencies Neu erstellen unter Ausschluss der Abhängigkeiten @@ -7740,6 +7732,14 @@ Möchten Sie sie ignorieren? Add Existing Directory... Vorhandenes Verzeichnis hinzufügen... + + Close All Files + Alle Dateien schließen + + + Duplicate File + Datei duplizieren + Remove Project... Remove project from parent profile (Project explorer view); will not physically delete any files. @@ -7749,6 +7749,10 @@ Möchten Sie sie ignorieren? Set "%1" as Active Project "%1" als aktives Projekt setzen + + Expand All + Alles aufklappen + Quick Switch Kit Selector Schnelle Kitauswahl @@ -8307,18 +8311,6 @@ Rename %2 to %3 anyway? Update Repository Repository auf den aktuellen Stand bringen - - Closing Subversion Editor - Subversion-Editor schließen - - - Do you want to commit the change? - Möchten Sie einen Commit der Änderung ausführen? - - - The commit message check failed. Do you want to commit the change? - Die Überprüfung der Beschreibung schlug fehl. Möchten Sie einen Commit der Änderung ausführen? - Revert all pending changes to the repository? Möchten Sie alle ausstehenden Änderungen des Repositorys verwerfen? @@ -8443,12 +8435,20 @@ Rename %2 to %3 anyway? TextEditor::BaseTextEditor - A highlight definition was not found for this file. Would you like to try to find one? - Für diese Datei ist keine Definition der Syntaxhervorhebung vorhanden. Möchten Sie nach einer Definition suchen? + A highlight definition was not found for this file. Would you like to update highlight definition files? + Für diese Datei ist keine Definition der Syntaxhervorhebung vorhanden. Möchten Sie die Definitionen der Syntaxhervorhebung aktualisieren? - Show Highlighter Options... - Einstellungen der Syntaxhervorhebung anzeigen... + Update Definitions + Definitionen aktualisieren + + + More than one highlight definition was found for this file. Which one should be used to highlight this file? + Für diese Datei wurden mehrere Definitionen der Syntaxhervorhebung gefunden. Welche soll für diese Datei verwendet werden? + + + Remember My Choice + Meine Auswahl speichern @@ -8614,6 +8614,10 @@ Rename %2 to %3 anyway? Relative Background Relativer Hintergrund + + <p align='center'><b>Builtin color schemes need to be <a href="copy">copied</a><br/> before they can be changed</b></p> + <p align='center'><b>Mitgelieferte Farbschemata müssen <a href="copy">kopiert</a><br/> werden, bevor sie geändert werden können</b></p> + TextEditor::Internal::FindInCurrentFile @@ -9139,10 +9143,6 @@ Rename %2 to %3 anyway? VcsBase::VcsBaseSubmitEditor - - Prompt to submit - Submit bestätigen - Check Message Beschreibung prüfen @@ -9151,6 +9151,33 @@ Rename %2 to %3 anyway? Insert Name... Namen einfügen... + + Close %1 %2 Editor + Editor für %1 %2 schließen + + + What do you want to do with these changes? + Was möchten Sie mit diesen Änderungen tun? + + + Cannot %1%2. +What do you want to do? + %2 is an optional error message with ': ' prefix. Don't add space in front. + %1 ist nicht möglich%2 +Was möchten Sie tun? + + + Prompt to %1 + %1 bestätigen + + + &Close + &Schließen + + + &Keep Editing + &Weiter bearbeiten + Submit Message Check Failed Die Überprüfung der Beschreibung schlug fehl @@ -9218,6 +9245,18 @@ Rename %2 to %3 anyway? At least one hexadecimal digit is required after '0%1' Auf "0%1" muss mindestens eine Hexadezimalziffer folgen + + Unexpected token '.' + Unerwartetes Token "." + + + At least one octal digit is required after '0%1' + Auf "0%1" muss mindestens eine Oktalziffer folgen + + + At least one binary digit is required after '0%1' + Auf "0%1" muss mindestens eine Binärziffer folgen + Invalid regular expression flag '%0' Ungültiger Modifikator für regulären Ausdruck "%0" @@ -9690,6 +9729,14 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Resets the path to the built-in QML emulation layer. Setzt den Pfad zurück auf die integrierte QML-Emulationsschicht. + + Features + Zusatzfunktionen + + + Enable Timeline editor + Timeline-Editor aktivieren + Utils::UnixTools @@ -9946,6 +9993,14 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Hg outgoing %1 Hg ausgehend %1 + + Mercurial Diff + Mercurial Diff + + + Mercurial Diff "%1" + Mercurial Diff für "%1" + Mercurial::Internal::MercurialControl @@ -10124,18 +10179,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Commit changes for "%1". Commit der Änderungen in "%1". - - Do you want to commit the changes? - Möchten Sie einen Commit der Änderungen ausführen? - - - Close Commit Editor - Commit-Editor schließen - - - Message check failed. Do you want to proceed? - Die Überprüfung der Beschreibung schlug fehl. Möchten Sie die Dateien trotzdem abgeben? - Mercurial::Internal::OptionsPageWidget @@ -10300,10 +10343,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.%1 %1 - - <html><nobr>%1</html> - <html><nobr>%1</html> - Kit: <b>%1</b><br/> Kit: <b>%1</b><br/> @@ -10387,6 +10426,10 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Kits Kits + + SSH + SSH + QmlDesigner::NavigatorTreeModel @@ -10509,19 +10552,11 @@ Dies ist unabhängig vom Wert der Eigenschaft "visible" in QML.QML QML - - Find Usages - Verwendungen suchen - QML SnippetProvider QML - - Ctrl+Shift+U - Ctrl+Shift+U - Rename Symbol Under Cursor Symbol unter Einfügemarke umbenennen @@ -11205,13 +11240,6 @@ Für CMake-Projekte stellen Sie sicher, dass die Variable QML_IMPORT_PATH in CMa Farbe des Rahmens - - StandardTextGroupBox - - - - - TextEditSpecifics @@ -11447,30 +11475,6 @@ Für CMake-Projekte stellen Sie sicher, dass die Variable QML_IMPORT_PATH in CMa Titelleisten von Anzeigen automatisch ausblenden - - SshKeyGenerator - - Error generating key: %1 - Es konnte kein Schlüssel erstellt werden: %1 - - - Password for Private Key - Passwort für privaten Schlüssel - - - It is recommended that you secure your private key -with a password, which you can enter below. - Es wird empfohlen, den privatenSchlüssel mit einem Passwort zu sichern, was sie unten angeben können. - - - Encrypt Key File - Schlüsseldatei verschlüsseln - - - Do Not Encrypt Key File - Schlüsseldatei nicht verschlüsseln - - CodePaster::FileShareProtocol @@ -12139,15 +12143,6 @@ IDs müssen außerdem mit einem Kleinbuchstaben beginnen. Anzeige "%1" aktivieren - - SshConnection - - Server and client capabilities don't match. Client list was: %1. -Server list was %2. - Die Fähigkeiten von Server und Client stimmen nicht überein. Client: %1. -Server: %2. - - CodePaster::NetworkProtocol @@ -12231,10 +12226,6 @@ Flags: %3 Projects Projekte - - , - , - CppTools::Internal::SymbolsFindFilterConfigWidget @@ -12442,6 +12433,10 @@ wenn es außerhalb von git bash aufgerufen wird. Remove Item Element löschen + + Enable + Aktivieren + Removing Step failed Das Entfernen des Build-Schritts schlug fehl @@ -12509,8 +12504,8 @@ wenn es außerhalb von git bash aufgerufen wird. &Fortsetzen - Starting %1... - Starte %1... + Starting %1 %2... + Starte %1 %2... No executable specified. @@ -12620,79 +12615,8 @@ wenn es außerhalb von git bash aufgerufen wird. Generische Syntaxhervorhebung - Download Definitions... - Definitionen herunterladen... - - - Autodetect - Automatisch bestimmen - - - Autodetect Definitions - Definitionsdateien automatisch bestimmen - - - No pre-installed definitions could be found. - Es konnten vorinstallierten Definitionsdateien gefunden werden. - - - Error connecting to server. - Fehler beim Herstellen der Verbindung zum Server. - - - Not possible to retrieve data. - Es konnten keine Daten empfangen werden. - - - - TextEditor::Internal::ManageDefinitionsDialog - - Installed - Installiert - - - Available - Verfügbar - - - Name - Name - - - Download Definitions - Definitionen herunterladen - - - Download Information - Download - - - There is already one download in progress. Please wait until it is finished. - Es läuft bereits ein Download-Vorgang. Bitte warten Sie, bis er beendet wird. - - - Dialog - Dialog - - - Definitions - Definitionsdateien - - - Select All - Alles auswählen - - - Clear Selection - Auswahl zurücksetzen - - - Invert Selection - Auswahl umkehren - - - Download Selected Definitions - Ausgewählte Definitionsdateien herunterladen + Update finished + Aktualisierung abgeschlossen @@ -13040,7 +12964,7 @@ Sie werden möglicherweise gebeten, den Inhalt dieses Logs mitzuteilen, wenn Sie Expected only name, prototype, defaultProperty, attachedType, exports, isSingleton, isCreatable, isComposite and exportMetaObjectRevisions script bindings, not "%1". - Erwartet werden nur Angaben bezüglich name, prototype, defaultProperty, attachedType, exports, isSingleton, isCreatable, isComposite oder exportMetaObjectRevisions-Skript-Bindungen, nicht jedoch "%1". + Erwartet werden nur Angaben bezüglich name, prototype, defaultProperty, attachedType, exports, isSingleton, isCreatable, isComposite oder exportMetaObjectRevisions-Skript-Bindings, nicht jedoch "%1". Expected only script bindings and object definitions. @@ -13308,10 +13232,6 @@ konnte nicht unter Versionsverwaltung (%2) gestellt werden Attaching to crashed process %1 Anhängen an abgestürzten Prozess %1 - - Start debugging of "%1" - Starte Debuggen von "%1" - Cannot attach to process with PID 0 Anhängen an Prozess-ID 0 nicht möglich @@ -13616,6 +13536,10 @@ konnte nicht unter Versionsverwaltung (%2) gestellt werden Ctrl+F6 Ctrl+F6 + + Start debugging of startup project + Projekt starten und debuggen + Edit Breakpoint... Haltepunkt bearbeiten... @@ -14254,7 +14178,7 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt. Show in Pane - In Panel anzeigen + Im Ausgabebereich anzeigen Replace Selection @@ -14279,7 +14203,7 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt. <html><head/><body> <p>Behandlung der Standardausgabe des Werkzeugs. -<ul><li>Unterdrücken: Ausgabe nicht behandeln.</li><li>In Panel anzeigen: Im Panel 'Allgemeine Ausgaben' anzeigen.</li><li>Ausgewählten Text ersetzen: Der im aktuellen Dokument ausgewählte Text wird durch die Ausgabe ersetzt.</li></ul></p></body></html> +<ul><li>Unterdrücken: Ausgabe nicht behandeln.</li><li>Im Ausgabebereich anzeigen: Im Ausgabebereich 'Allgemeine Ausgaben' anzeigen.</li><li>Ausgewählten Text ersetzen: Der im aktuellen Dokument ausgewählte Text wird durch die Ausgabe ersetzt.</li></ul></p></body></html> @@ -14292,7 +14216,7 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.<html><head/><body> <p>Behandlung der Fehlerausgabe des Werkzeugs.</p> <ul><li>Unterdrücken: Ausgabe nicht behandeln.</li> -<li>In Panel anzeigen: Im Panel 'Allgemeine Ausgaben' anzeigen.</li> +<li>Im Ausgabebereich anzeigen: Im Ausgabebereich 'Allgemeine Ausgaben' anzeigen.</li> <li>Ausgewählten Text ersetzen: Der im aktuellen Dokument ausgewählte Text wird durch die Ausgabe ersetzt.</li> </ul></body></html> @@ -14308,6 +14232,10 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.Change... Ändern... + + Base environment: + Basisumgebung: + Core::VariableChooser @@ -14501,18 +14429,6 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.Commit changes for "%1". Commit der Änderungen in "%1". - - Close Commit Editor - Commit-Editor schließen - - - Do you want to commit the changes? - Möchten Sie einen Commit der Änderungen ausführen? - - - Message check failed. Do you want to proceed? - Die Überprüfung der Beschreibung schlug fehl. Möchten Sie die Dateien trotzdem abgeben? - Bazaar::Internal::CommitEditor @@ -15459,6 +15375,10 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Valgrind Command Valgrind-Kommando + + KCachegrind Command + KCachegrind-Kommando + Valgrind Suppression Files Valgrind-Ausschlussdateien @@ -15615,6 +15535,10 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Collects information for system call times. In Systemaufrufen verbrachte Zeit aufnehmen. + + KCachegrind executable: + Ausführbare Datei von KCachegrind: + VcsBase::VcsConfigurationPage @@ -16126,8 +16050,8 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Core::OutputWindow - Additional output omitted - Weitere Ausgaben wurden weggelassen + Additional output omitted. You can increase the limit in the "Build & Run" settings. + Weitere Ausgaben wurden weggelassen. Diese Begrenzung können Sie in den Einstellungen zu "Erstellung und Ausführung" erhöhen. @@ -16620,7 +16544,7 @@ Wollen Sie die Daten vorher speichern? Possible Memory Leaks - Potentielle Speicherlecks + Potenzielle Speicherlecks Use of Uninitialized Memory @@ -16910,6 +16834,10 @@ Wird ein Problem gefunden, dann wird die Anwendung angehalten und kann untersuch New Generic Linux Device Configuration Setup Einrichtung einer neuen Geräte-Konfiguration für generisches Linux + + Generic Linux Device + Generisches Linux-Gerät + RemoteLinux::GenericLinuxDeviceConfigurationWizardSetupPage @@ -16917,14 +16845,6 @@ Wird ein Problem gefunden, dann wird die Anwendung angehalten und kann untersuch Connection Verbindung - - Choose a Private Key File - Datei mit privatem Schlüssel auswählen - - - Generic Linux Device - Generisches Linux-Gerät - RemoteLinux::PublicKeyDeploymentDialog @@ -16988,6 +16908,10 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Track local branch '%1' Lokalen Branch '%1' verfolgen + + Checkout new branch + Neuen Branch auschecken + GenericProjectManager::Internal::FilesSelectionWizardPage @@ -17006,6 +16930,10 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Remote Branches Remote Branches + + Detached HEAD + Detached HEAD + Tags Tags @@ -17066,25 +16994,6 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Mouse Area - - RemoteLinux::CreateTarStepWidget - - Ignore missing files - Fehlende Dateien ignorieren - - - Package modified files only - Nur geänderte Dateien einpacken - - - Tarball creation not possible. - Erstellung eines Tarballs nicht möglich. - - - Create tarball: - Tarball erzeugen: - - Core::Internal::ExternalTool @@ -17151,6 +17060,10 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Error while parsing external tool %1: %2 Fehler beim Auswerten der Ausgabe des externen Programms %1: %2 + + System Environment + Systemumgebung + ExtensionSystem::Internal::PluginErrorOverview @@ -17410,8 +17323,8 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Es ist keine Geräte-Konfiguration eingestellt. - Connecting to device... - Verbinde zu Mobilgerät... + Connecting to device "%1" (%2). + Verbinde zu Mobilgerät "%1" (%2). Could not connect to host: %1 @@ -17467,41 +17380,36 @@ Zusätzlich wird die Verbindung zum Gerät getestet. RemoteLinux::GenericDirectUploadService - SFTP initialization failed: %1 - Die Initialisierung von SFTP schlug fehl: %1 + Failed to retrieve remote timestamp for file "%1". Incremental deployment will not work. Error message was: %2 + Der Zeitstempel der Datei "%1" konnte nicht gelesen werden. Inkrementelles Deployment wird daher nicht funktionieren. Die Fehlermeldung war: %2 - Upload of file "%1" failed. The server said: "%2". - Das Hochladen der Datei "%1" schlug fehl. Der Server antwortete: "%2". - - - If "%1" is currently running on the remote host, you might need to stop it first. - Sofern "%1" bereits auf dem entfernten Host läuft, sollten Sie es zuerst beenden. - - - Failed to upload file "%1". - Das Hochladen der Datei "%1" schlug fehl. - - - Failed to upload file "%1": Could not open for reading. - Die Datei "%1" konnte nicht hochgeladen werden: Sie konnte nicht zum Lesen geöffnet werden. - - - Warning: No remote path set for local file "%1". Skipping upload. - Warnung: Der lokalen Datei "%1" ist kein Pfad zugeordnet. Das Hochladen wird übersprungen. - - - Uploading file "%1"... - Lade Datei "%1" hoch... - - - Failed to set executable flag. - Das Flag zur Kennzeichnung als ausführbare Datei konnte nicht gesetzt werden. + Unexpected stat output for remote file "%1": %2 + Unerwartete Ausgabe von "stat" für die entfernte Datei "%1": %2 All files successfully deployed. Alle Dateien erfolgreich versandt. + + No files need to be uploaded. + Es müssen keine Dateien hochgeladen werden. + + + %n file(s) need to be uploaded. + + Eine Datei muss hochgeladen werden. + %n Dateien müssen hochgeladen werden. + + + + Local file "%1" does not exist. + Es gibt keine lokale Datei "%1". + + + Remote chmod failed for file "%1": %2 + "chmod" für die entfernte Datei "%1" ist fehlgeschlagen: %2 + RemoteLinux::GenericDirectUploadStep @@ -17535,10 +17443,6 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Checking kernel version... Prüfe Kernel-Version... - - SSH connection failure: %1 - Fehler beim Herstellen der SSH-Verbindung: %1 - uname failed: %1 Fehlschlag des uname-Kommandos: %1 @@ -17559,6 +17463,66 @@ Zusätzlich wird die Verbindung zum Gerät getestet. The following specified ports are currently in use: %1 Die folgenden angegebenen Ports sind auf dem Gerät in Verwendung: %1 + + Checking whether an SFTP connection can be set up... + Prüfe, ob eine SFTP-Verbindung aufgebaut werden kann... + + + SFTP service available. + + SFTP-Dienst verfügbar. + + + + sftp finished unexpectedly. + sftp unerwartet beendet. + + + Error setting up SFTP connection: %1 + + Fehler beim Aufbau einer SFTP-Verbindung: %1 + + + + Checking whether rsync works... + Prüfe ob rsync funktioniert... + + + Failed to start rsync: %1 + + rsync konnte nicht gestartet weden: %1 + + + + rsync crashed. + + rsync ist abgestürzt. + + + + rsync failed with exit code %1: %2 + + rsync scheiterte mit dem Rückgabewert %1: %2 + + + + SFTP will be used for deployment, because rsync is not available. + + SFTP wird fürs Deployment verwendet, weil rsync nicht verfügbar ist. + + + + Deployment to this device will not work out of the box. + + Deployment auf dieses Gerät wird nicht von Anfang an funktionieren. + + + + rsync is functional. + + rsync funktioniert. + + Checking if specified ports are available... Prüfe Verfügbarkeit der angegebenen Ports... @@ -17570,22 +17534,14 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Preparing SFTP connection... Bereite SFTP-Verbindung vor... + + Package upload canceled. + Hochladen des Pakets abgebrochen. + Connection failed: %1 Fehler beim Herstellen der Verbindung: %1 - - SFTP error: %1 - SFTP-Fehler: %1 - - - Package upload failed: Could not open file. - Fehlschlag beim Hochladen des Pakets: Datei konnte nicht geöffnet werden. - - - Starting upload... - Starte Hochladen... - Failed to upload package: %2 Fehlschlag beim Hochladen des Pakets: %2 @@ -17661,6 +17617,14 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Creating tarball... Tarball erzeugen... + + Ignore missing files + Fehlende Dateien ignorieren + + + Package modified files only + Nur geänderte Dateien einpacken + Tarball up to date, skipping packaging. Tarball auf aktuellem Stand, Paketierung wird übersprungen. @@ -17693,6 +17657,14 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Error writing tar file "%1": %2 Fehler beim Schreiben der tar-Datei "%1": %2 + + Tarball creation not possible. + Erstellung eines Tarballs nicht möglich. + + + Create tarball: + Tarball erzeugen: + Create tarball Tarball erzeugen @@ -17858,12 +17830,8 @@ Außer: %3 Starte entferntes Kommando "%1"... - Remote process failed to start. - Der entfernte Prozess konnte nicht gestartet werden. - - - Remote process was killed by a signal. - Der entfernte Prozess wurde durch ein Signal beendet. + Remote process failed: %1 + Der entfernte Prozess schlug fehl: %1 Remote process finished with exit code %1. @@ -18071,7 +18039,7 @@ p, li { white-space: pre-wrap; } CodePaster::Internal::SettingsPage Display Output pane after sending a post - Ausgabepanel nach Senden anzeigen + Ausgabebereich nach Senden anzeigen Copy-paste URL to clipboard @@ -18176,6 +18144,18 @@ These prefixes are used in addition to current file name on Switch Header/Source Diese Präfixe werden zusätzlich zum Dateinamen beim Wechseln zwischen Header- und Quelldatei verwendet. + + Include guards + Include-Guards + + + Uses "#pragma once" instead of "#ifndef" include guards. + Verwendet "#pragma once" statt Include-Guards mit "#ifndef". + + + Use "#pragma once" instead of "#ifndef" guards + "#pragma once" statt Include-Guards mit "#ifndef" verwenden + Debugger::Internal::AttachToQmlPortDialog @@ -18401,34 +18381,10 @@ Diese Präfixe werden zusätzlich zum Dateinamen beim Wechseln zwischen Header- The device's host name or IP address: Hostname oder IP-Adresse des Geräts: - - The authentication type: - Art der Authentifizierung: - - - Password - Passwort - - - Key - Schlüssel - - - The user's password: - Passwort des Nutzers: - - - The file containing the user's private key: - Datei mit privatem Schlüssel des Nutzers: - The username to log into the device: Nutzername für Geräte-Login: - - Agent - Agent - TextEditor::Internal::BehaviorSettingsWidget @@ -18759,32 +18715,34 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. TextEditor::Internal::HighlighterSettingsPage - - <html><head/><body> -<p>Highlight definitions are provided by the <a href="http://kate-editor.org/">Kate Text Editor</a>.</p></body></html> - <html><head/><body> -<p>Definitionsdateien für die Syntax-Hervorhebung werden vom <a href="http://kate-editor.org/">Kate-Texteditor</a> bereitgestellt.</p></body></html> - Syntax Highlight Definition Files - Definitionsdateien für die Syntax-Hervorhebung - - - Location: - Pfad: - - - Use fallback location - Fallback benutzen - - - Behavior - Verhalten + Definitionsdateien für die Syntaxhervorhebung Ignored file patterns: Ausgeschlossene Datei-Suchmuster: + + <html><head/><body><p>Highlight definitions are provided by the <a href="https://api.kde.org/frameworks/syntax-highlighting/html/index.html">KSyntaxHighlighting</a> engine.</p></body></html> + <html><head/><body><p>Definitionsdateien für die Syntaxhervorhebung werden von <a href="https://api.kde.org/frameworks/syntax-highlighting/html/index.html">KSyntaxHighlighting</a> bereitgestellt.</p></body></html> + + + Update Definitions + Definitionen aktualisieren + + + User Highlight Definition Files + Dateien für benutzerdefinierte Syntaxhervorhebung + + + Reset Remembered Definitions + Gespeicherte Definitionen zurücksetzen + + + Reset definitions remembered for files that can be associated with more than one highlighter definition. + Gespeicherte Definitionen für Dateien, denen mehrere Definitionsdateien zur Syntaxhervorhebung zugeordnet werden können, zurücksetzen. + TextEditor::Internal::SnippetsSettingsPage @@ -19024,21 +18982,13 @@ should a repository require SSH-authentication (see documentation on SSH and the Autogen Autogen - - Configuration unchanged, skipping autogen step. - Unveränderte Konfiguration, autogen-Schritt wird übersprungen. - - - - AutotoolsProjectManager::Internal::AutogenStepConfigWidget Arguments: Argumente: - Autogen - AutotoolsProjectManager::AutogenStepConfigWidget display name. - Autogen + Configuration unchanged, skipping autogen step. + Unveränderte Konfiguration, autogen-Schritt wird übersprungen. @@ -19052,21 +19002,13 @@ should a repository require SSH-authentication (see documentation on SSH and the Autoreconf Autoreconf - - Configuration unchanged, skipping autoreconf step. - Unveränderte Konfiguration, autoreconf-Schritt wird übersprungen. - - - - AutotoolsProjectManager::Internal::AutoreconfStepConfigWidget Arguments: Argumente: - Autoreconf - AutotoolsProjectManager::AutoreconfStepConfigWidget display name. - Autoreconf + Configuration unchanged, skipping autoreconf step. + Unveränderte Konfiguration, autoreconf-Schritt wird übersprungen. @@ -19125,21 +19067,13 @@ should a repository require SSH-authentication (see documentation on SSH and the Configure Konfigurieren - - Configuration unchanged, skipping configure step. - Unveränderte Konfiguration, configure-Schritt wird übersprungen. - - - - AutotoolsProjectManager::Internal::ConfigureStepConfigWidget Arguments: Argumente: - Configure - AutotoolsProjectManager::ConfigureStepConfigWidget display name. - Configure + Configuration unchanged, skipping configure step. + Unveränderte Konfiguration, configure-Schritt wird übersprungen. @@ -19421,14 +19355,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Authentication type: Art der Authentifizierung: - - Password - Passwort - - - &Key - Schl&üssel - &Host name: &Hostname: @@ -19457,14 +19383,6 @@ should a repository require SSH-authentication (see documentation on SSH and the &Username: &Nutzername: - - &Password: - &Passwort: - - - Show password - Passwort anzeigen - Private key file: Private Schlüsseldatei: @@ -19506,8 +19424,12 @@ should a repository require SSH-authentication (see documentation on SSH and the Host-S&chlüssel prüfen - Key via ssh-agent - Schlüssel über ssh-agent + Default + Vorgabe + + + Specific &key + Aus&gewählter Schlüssel @@ -19710,10 +19632,6 @@ should a repository require SSH-authentication (see documentation on SSH and the &RSA &RSA - - &DSA - &DSA - Key &size: Schlüssel&länge: @@ -19738,6 +19656,18 @@ should a repository require SSH-authentication (see documentation on SSH and the &Cancel &Abbrechen + + The ssh-keygen tool was not found. + Das Programm "ssh-keygen" wurde nicht gefunden. + + + Refusing to overwrite existing private key file "%1". + Die private Schlüsseldatei "%1" wird nicht überschrieben. + + + The ssh-keygen tool at "%1" failed: %2 + Das Programm "ssh-keygen" in "%1" hat einen Fehler festgestellt: %2 + Key Generation Failed Fehler bei Erzeugung der Schlüssel @@ -19746,42 +19676,10 @@ should a repository require SSH-authentication (see documentation on SSH and the Choose Private Key File Name Name der privaten Schlüsseldatei auswählen - - Cannot Save Key File - Schlüsseldatei kann nicht gespeichert werden - - - Failed to create directory: "%1". - Das Verzeichnis "%1" konnte nicht erstellt werden. - - - Cannot Save Private Key File - Die private Schlüsseldatei kann nicht gespeichert werden - - - Cannot Save Public Key File - Öffentliche Schlüsseldatei kann nicht gespeichert werden - - - File Exists - Datei existiert - - - There already is a file of that name. Do you want to overwrite it? - Es existiert bereits eine Datei dieses Namens. Möchten Sie sie überschreiben? - Choose... Auswählen... - - The private key file could not be saved: %1 - Die private Schlüsseldatei konnte nicht gespeichert werden: %1 - - - The public key file could not be saved: %1 - Die öffentliche Schlüsseldatei konnte nicht gespeichert werden: %1 - ECDSA ECDSA @@ -20062,101 +19960,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Diese Anwendung ist nicht für QML/JS-Debuggen eingerichtet. - - QSsh::Internal::SftpChannelPrivate - - Server could not start SFTP subsystem. - Der Server konnte das SFTP-Subsystem nicht starten. - - - The SFTP server finished unexpectedly with exit code %1. - Der SFTP-Server wurde unerwartet mit dem Rückgabewert %1 beendet. - - - The SFTP server crashed: %1. - Der SFTP-Server ist abgestürzt: %1. - - - Unexpected packet of type %1. - Unerwartetes Paket des Typs %1. - - - Protocol version mismatch: Expected %1, got %2 - Die Versionen des Protokolls stimmen nicht überein: Erwartet %1, erhalten %2 - - - Unknown error. - Unbekannter Fehler. - - - Created remote directory "%1". - Der entfernte Ordner "%1" wurde angelegt. - - - Remote directory "%1" already exists. - Das entfernte Verzeichnis "%1" ist bereits vorhanden. - - - Error creating directory "%1": %2 - Fehler beim Anlegen des Verzeichnisses "%1": %2 - - - Could not open local file "%1": %2 - Die lokale Datei "%1" konnte nicht geöffnet werden: %2 - - - Remote directory could not be opened for reading. - Der entfernte Ordner konnte nicht zum Lesen geöffnet werden. - - - Failed to list remote directory contents. - Der Inhalt des entfernten Ordners konnte nicht bestimmt werden. - - - Failed to close remote directory. - Der entfernte Ordner konnte nicht geschlossen werden. - - - Failed to open remote file for reading. - Die entfernte Datei konnte nicht zum Lesen geöffnet werden. - - - Failed to retrieve information on the remote file ('stat' failed). - Es konnte keine Information über die entfernte Datei eingeholt werden ('stat' schlug fehl). - - - Failed to read remote file. - Die entfernte Datei konnte nicht gelesen werden. - - - Failed to close remote file. - Die entfernte Datei konnte nicht geschlossen werden. - - - Failed to open remote file for writing. - Die entfernte Datei konnte nicht zum Schreiben geöffnet werden. - - - Failed to write remote file. - Die entfernte Datei konnte nicht geschrieben werden. - - - Cannot append to remote file: Server does not support the file size attribute. - Es können keine Daten an die entfernte Datei angehängt werden, da der Server das Dateigrößenattribut nicht unterstützt. - - - SFTP channel closed unexpectedly. - Der SFTP-Kanal wurde unerwartet geschlossen. - - - Server could not start session: %1 - Der Server konnte keine Sitzung starten: %1 - - - Error reading local file: %1 - Fehler beim Lesen der lokalen Datei: %1 - - QSsh::SftpFileSystemModel @@ -20168,157 +19971,14 @@ should a repository require SSH-authentication (see documentation on SSH and the Dateiname - Error getting "stat" info about "%1": %2 - Konnte keine "stat"-Information für "%1" erhalten: %2 + Error listing root directory "%1": %2 + Fehler beim Auslesen des Wurzelverzeichnisses "%1": %2 Error listing contents of directory "%1": %2 Fehler beim Auslesen des Verzeichnisses "%1": %2 - - QSsh::Internal::SshChannelManager - - Unexpected request success packet. - Unerwartetes Paket über Erfolg einer Anfrage. - - - Unexpected request failure packet. - Unerwartetes Paket über Scheitern einer Anfrage. - - - Invalid channel id %1 - Ungültiger Kanalbezeichner %1 - - - - QSsh::Internal::SshConnectionPrivate - - SSH Protocol error: %1 - SSH-Protokollfehler: %1 - - - Botan library exception: %1 - Ausnahmefehler in der Botan-Bibliothek: %1 - - - Server identification string is %n characters long, but the maximum allowed length is 255. - - Die Zeichenkette zur Identifikation des Servers ist ein Zeichen lang, die maximal zulässige Länge ist aber 255. - Die Zeichenkette zur Identifikation des Servers ist %n Zeichen lang, die maximal zulässige Länge ist aber 255. - - - - Server identification string contains illegal NUL character. - Die Zeichenkette zur Identifikation des Servers enthält ein unzulässiges NUL-Zeichen. - - - Server Identification string "%1" is invalid. - Die Zeichenkette "%1" zur Identifikation des Servers ist ungültig. - - - Server protocol version is "%1", but needs to be 2.0 or 1.99. - Die Version des Serverprotokolls ist "%1", erforderlich ist jedoch 2.0 oder 1.99. - - - Server identification string is invalid (missing carriage return). - Die Zeichenkette zur Identifikation des Servers ist ungültig (es fehlt der Zeilenvorschub). - - - Server reports protocol version 1.99, but sends data before the identification string, which is not allowed. - Der Server gibt Protokollversion 1.99 an, sendet aber Daten vor der Zeichenkette zur Identifikation, was nicht gestattet ist. - - - Unexpected packet of type %1. - Unerwartetes Paket des Typs %1. - - - ssh-agent has no keys. - ssh-agent hat keine Schlüssel. - - - Password expired. - Das Passwort ist abgelaufen. - - - The server rejected all keys known to the ssh-agent. - Der Server hat alle ssh-agent bekannten Schlüssel abgelehnt. - - - Server rejected password. - Der Server hat das Passwort zurückgewiesen. - - - Server rejected key. - Der Server hat den Schlüssel zurückgewiesen. - - - Server sent unexpected SSH_MSG_USERAUTH_PK_OK packet. - Der Server hat ein unerwartetes SSH_MSG_USERAUTH_PK_OK-Paket geschickt. - - - Server sent unexpected key in SSH_MSG_USERAUTH_PK_OK packet. - Der Server hat einen unerwarteten Schlüssel im SSH_MSG_USERAUTH_PK_OK-Paket geschickt. - - - The server sent an unexpected SSH packet of type SSH_MSG_UNIMPLEMENTED. - Der Server hat ein unerwartetes SSH-Paket des Typs SSH_MSG_UNIMPLEMENTED gesandt. - - - Server closed connection: %1 - Der Server hat die Verbindung geschlossen: %1 - - - Connection closed unexpectedly. - Die Verbindung wurde unerwartet geschlossen. - - - Timeout waiting for keys from ssh-agent. - Überschreitung des Zeitlimits beim Warten auf Schlüssel von ssh-agent. - - - Timeout waiting for reply from server. - Überschreitung des Zeitlimits beim Warten auf Antwort vom Server. - - - No private key file given. - Keine Datei mit privatem Schlüssel angegeben. - - - Private key file error: %1 - Problem mit privatem Schlüssel: %1 - - - - QSsh::Ssh - - Password Required - Passwort erforderlich - - - Please enter the password for your private key. - Bitte geben Sie das Passwort für den privaten Schlüssel ein. - - - Failed to open key file "%1" for reading: %2 - Schlüsseldatei "%1" kann nicht zum Lesen geöffnet werden: %2 - - - Failed to open key file "%1" for writing: %2 - Schlüsseldatei "%1" kann nicht zum Schreiben geöffnet werden: %2 - - - - QSsh::Internal::SshRemoteProcessPrivate - - Process killed by signal - Der Prozess wurde durch ein Signal beendet - - - Server sent invalid signal "%1" - Ungültiges Signal "%1" vom Server erhalten - - Android::Internal::AndroidCreateKeystoreCertificate @@ -20358,13 +20018,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Fehler - - Android::Internal::AndroidDeployConfiguration - - Deploy to Android device - Deployment auf Android-Gerät - - Android::Internal::AndroidDeviceFactory @@ -20563,13 +20216,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Eigenschaften - - Debugger::Internal::StackTreeView - - Stack - Stack - - Debugger::Internal::WatchTreeView @@ -20870,6 +20516,18 @@ gehören nicht zu den verifizierten Remotes in %3. Anderen Ordner angeben?Commit and Push to &Gerrit Commit und Push zu &Gerrit + + Invalid author + Ungültiger Autor + + + Invalid email + Ungültige E-Mail-Adresse + + + Unresolved merge conflicts + Ungelöste merge-Konflikte + &Commit and Push &Commit und Push @@ -20925,16 +20583,20 @@ gehören nicht zu den verifizierten Remotes in %3. Anderen Ordner angeben? ProjectExplorer::Internal::SysRootInformationConfigWidget - The root directory of the system image to use.<br>Leave empty when building for the desktop. - Das Wurzelverzeichnis des zu verwendenden System-Images.<br>Bei der Erstellung für Desktop ist keine Angabe erforderlich. + Sysroot + Sysroot - Sysroot: - Sysroot: + The root directory of the system image to use.<br>Leave empty when building for the desktop. + Das Wurzelverzeichnis des zu verwendenden System-Images.<br>Bei der Erstellung für Desktop ist keine Angabe erforderlich. ProjectExplorer::Internal::ToolChainInformationConfigWidget + + Compiler + Compiler + The compiler to use for building.<br>Make sure the compiler will produce binaries compatible with the target device, Qt version and other libraries used. Der zur Erstellung zu verwendende Compiler.<br>Stellen Sie sicher, dass dieser Compiler Binärdateien erstellt, die mit dem Zielgerät, der Qt-Version und anderen verwendeten Bibliotheken kompatibel sind. @@ -20943,31 +20605,27 @@ gehören nicht zu den verifizierten Remotes in %3. Anderen Ordner angeben?<No compiler> <Kein Compiler> - - Compiler: - Compiler: - ProjectExplorer::Internal::DeviceTypeInformationConfigWidget - The type of device to run applications on. - Der Typ des Geräts, auf dem die Anwendung laufen soll. + Device type + Gerätetyp - Device type: - Gerätetyp: + The type of device to run applications on. + Der Typ des Geräts, auf dem die Anwendung laufen soll. ProjectExplorer::Internal::DeviceInformationConfigWidget - The device to run the applications on. - Das Gerät, auf dem die Anwendung laufen soll. + Device + Gerät - Device: - Gerät: + The device to run the applications on. + Das Gerät, auf dem die Anwendung laufen soll. @@ -21056,14 +20714,6 @@ gehören nicht zu den verifizierten Remotes in %3. Anderen Ordner angeben? RemoteLinux::RemoteLinuxCheckForFreeDiskSpaceService - - Remote process failed to start. - Der entfernte Prozess konnte nicht gestartet werden. - - - Remote process crashed. - Der entfernte Prozess ist abgestürzt. - Unexpected output from remote process: "%1" Unerwartete Ausgabe des entfernten Prozesses: "%1" @@ -21079,6 +20729,10 @@ gehören nicht zu den verifizierten Remotes in %3. Anderen Ordner angeben?Das entfernte Dateisystem hat nur %n Megabytes freien Speicherplatz; es sind aber %1 Megabytes erforderlich. + + Remote process failed: %1 + Der entfernte Prozess schlug fehl: %1 + The remote file system has %n megabytes of free space, going ahead. @@ -21353,6 +21007,18 @@ hinzufügen, um dem QML-Editor den wahrscheinlichen URI mitzuteilen.Deploy Public Key... Öffentlichen Schlüssel senden... + + Open Remote Shell + Entfernte Shell starten + + + Error running remote shell: %1 + Fehler bei der Ausführung der entfernten Shell: %1 + + + Error starting remote shell. + Fehler beim Start der entfernten Shell. + ClearCase::Internal::CheckOutDialog @@ -21722,18 +21388,6 @@ hinzufügen, um dem QML-Editor den wahrscheinlichen URI mitzuteilen.Check In Einchecken - - Closing ClearCase Editor - ClearCase-Editor schließen - - - Do you want to check in the files? - Möchten Sie die Dateien einchecken? - - - The comment check failed. Do you want to check in the files? - Die Überprüfung der Beschreibung schlug fehl. Möchten Sie die Dateien trotzdem einchecken? - Updating ClearCase Index Aktualisiere ClearCase Index @@ -21963,14 +21617,6 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve Connection failure: %1 Fehler beim Herstellen der Verbindung: %1 - - Error: Process listing command failed to start: %1 - Fehler: Das Kommando zur Auflistung der Prozesse konnte nicht gestartet werden: %1 - - - Error: Process listing command crashed: %1 - Fehler: Das Kommando zur Auflistung der Prozesse ist abgestürzt : %1 - Process listing command failed with exit code %1. Das Kommando zur Auflistung der Prozesse schlug mit Rückgabewert %1 fehl. @@ -22026,6 +21672,10 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve Debugger::Internal::DebuggerKitConfigWidget + + Debugger + Debugger + None Keine @@ -22034,10 +21684,6 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve The debugger to use for this kit. Der für dieses Kit zu verwendende Debugger. - - Debugger: - Debugger: - Debugger::DebuggerKitInformation @@ -22358,6 +22004,10 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve QtSupport::Internal::QtKitConfigWidget + + Qt version + Qt-Version + The Qt library to use for all projects using this kit.<br>A Qt version is required for qmake-based projects and optional when using other build systems. Die für alle Projekte, die dieses Kit verwenden, zu benutzende Qt-Bibliothek.<br>Für qmake-basierende Projekte ist diese Angabe erforderlich, für andere Build-Systeme optional. @@ -22366,10 +22016,6 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve None Keine - - Qt version: - Qt-Version: - %1 (invalid) %1 (ungültig) @@ -22588,6 +22234,18 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve %1 %2/%n Dateien + + Update in progress + Aktualisierung läuft + + + Description is empty + Beschreibung ist leer + + + No files checked + Keine Dateien ausgewählt + &Commit &Commit @@ -23139,6 +22797,26 @@ Entfernt: %4 Reset Zurücksetzen + + Timeline + Timeline + + + Copy All Keyframes + Alle Keyframes kopieren + + + Paste Keyframes + Keyframes einfügen + + + Add Keyframes at Current Frame + Keyframes am aktuellen Frame einfügen + + + Delete All Keyframes + Alle Keyframes löschen + QmlDesigner::Internal::MetaInfoPrivate @@ -23663,12 +23341,16 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code Might make your application vulnerable. Only use in a safe environment. - Potentielle Sicherheitslücke, sollte nur in einer sicheren Umgebung benutzt werden. + Potenzielle Sicherheitslücke, sollte nur in einer sicheren Umgebung benutzt werden. Could not split properties. Die Eigenschaften konnten nicht aufgeteilt werden. + + Property "%1" cannot be set here. Please use the dedicated UI element. + Die Eigenschaft "%1" kann hier nicht gesetzt werden. Bitte verwenden Sie dafür das zugehörige Element der Benutzeroberfläche. + No ":" found in property definition. Die Eigenschaftsdefinition enthält kein ":"-Zeichen. @@ -23744,10 +23426,6 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code Dry run Probelauf - - <b>Qbs:</b> %1 - <b>Qbs:</b> %1 - Keep going Fortsetzen @@ -23825,6 +23503,22 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code Qbs Clean Qbs Clean + + Dry run + Probelauf + + + Keep going + Fortsetzen + + + Equivalent command line: + Entsprechende Kommandozeile: + + + <b>Qbs:</b> %1 + <b>Qbs:</b> %1 + QbsProjectManager::Internal::QbsProject @@ -24798,10 +24492,25 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. SnippetProvider C++ + + Header/Source + text on macOS touch bar + Header-/Quelldatei + + + Follow + text on macOS touch bar + Folgen + Switch Between Function Declaration/Definition Wechsel zwischen Deklaration und Definition der Funktion + + Decl/Def + text on macOS touch bar + Dekl/Def + Open Function Declaration/Definition in Next Split Funktionsdeklaration beziehungsweise -definition im nächsten geteilten Fenster anzeigen @@ -24814,14 +24523,6 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. Ctrl+E, Shift+F2 Ctrl+E, Shift+F2 - - Find Usages - Verwendungen suchen - - - Ctrl+Shift+U - Ctrl+Shift+U - Open Type Hierarchy Klassenhierarchie öffnen @@ -24940,13 +24641,6 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. Hinzugefügte Entsprechungen von "override" entfernen - - Qbs - - Qbs Install - Qbs-Installation - - Debugger::Internal::SymbolPathsDialog @@ -25173,6 +24867,26 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. Qnx::Internal::QnxDeviceTester + + Checking that files can be created in /var/run... + Prüfe, ob Dateien in /var/run angelegt werden können... + + + Files can be created in /var/run. + Dateien können in /var/run angelegt werden. + + + Files cannot be created in /var/run. + Dateien können nicht in /var/run angelegt werden. + + + An error occurred while checking that files can be created in /var/run. + Beim Prüfen, ob Dateien in /var/run angelegt werden können, ist ein Fehler aufgetreten. + + + An error occurred while checking for %1. + Bei der Prüfung von %1 trat ein Fehler auf. + %1 found. %1 gefunden. @@ -25181,10 +24895,6 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. %1 not found. %1 nicht gefunden. - - An error occurred checking for %1. - Bei der Prüfung von %1 trat ein Fehler auf. - SSH connection error: %1 SSH-Verbindungsfehler: %1 @@ -25556,29 +25266,6 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen. ABI: - - AndroidDeployQtWidget - - Clean Temporary Libraries Directory on Device - Verzeichnis mit temporären Bibliotheken auf dem Gerät leeren - - - Install Ministro from APK - Ministro aus APK installieren - - - Reset Default Devices - Geräteauswahl zurücksetzen - - - Deploy options - Deployment-Einstellungen - - - Uninstall previous package - Vorheriges Paket entfernen - - Android::Internal::AndroidDeviceDialog @@ -25711,6 +25398,10 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen. Clang Code Model Clang Codemodell + + The selected configuration has potentially expensive Clang-Tidy or Clazy checks enabled.<br/>Consider to run these in a separate <a href="target">Clang-Tidy and Clazy analyzer</a> run. + Die gewählte Konfiguration enthält potenziell aufwändige Prüfungen mit Clang Tidy oder Clazy.<br/>Vielleicht sollten Sie diese in einem separaten Lauf des <a href="target">Clang Tidy- und Clazy-Analyzers</a> ausführen. + Ios::Internal::IosBuildStep @@ -25903,10 +25594,6 @@ benötigt wird, was meist die Geschwindigkeit erhöht. No Android arch set by the .pro file. Die .pro-Datei setzt keine Android-Architektur. - - initializing deployment to Android device/simulator - Initialisiere Deployment zu Android-Gerät oder -Simulator - Cannot find the android build step. Kann den Android-Erstellungsschritt nicht finden. @@ -25963,6 +25650,34 @@ benötigt wird, was meist die Geschwindigkeit erhöht. Deploy to Android device or emulator Deployment auf Android-Gerät oder Emulator + + Uninstall previous package + Vorheriges Paket entfernen + + + Reset Default Devices + Geräteauswahl zurücksetzen + + + Clean Temporary Libraries Directory on Device + Verzeichnis mit temporären Bibliotheken auf dem Gerät leeren + + + Install Ministro from APK + Ministro aus APK installieren + + + Qt Android Smart Installer + Qt Android Smart Installer + + + Android package (*.apk) + Android-Paket (*.apk) + + + Initializing deployment to Android device/simulator + Initialisiere Deployment zu Android-Gerät oder -Simulator + Deployment failed with the following errors: @@ -25984,21 +25699,6 @@ Möchten Sie das vorhandene Paket deinstallieren? Die für das Debuggen erforderlichen Dateien werden installiert. - - Android::Internal::AndroidDeployQtWidget - - <b>Deploy configurations</b> - <b>Deployment-Konfigurationen</b> - - - Qt Android Smart Installer - Qt Android Smart Installer - - - Android package (*.apk) - Android-Paket (*.apk) - - Android::Internal::AndroidPotentialKitWidget @@ -26097,6 +25797,10 @@ Möchten Sie das vorhandene Paket deinstallieren? Deployment failed. No iOS device found. Deployment schlug fehl: Es wurde kein iOS-Gerät gefunden. + + Transferring application + Übertrage Anwendung + Deployment failed. The settings in the Devices window of Xcode might be incorrect. Deployment schlug fehl: Möglicherweise sind die Einstellungen im Fenster "Devices" von Xcode fehlerhaft. @@ -27175,8 +26879,8 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D QmakeProjectManager::Internal::QmakeKitConfigWidget - Qt mkspec: - Qt-mkspec: + Qt mkspec + Qt-mkspec The mkspec to use when building the project with qmake.<br>This setting is ignored when using other build systems. @@ -27241,7 +26945,7 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D Might make your application vulnerable. Only use in a safe environment. - Potentielle Sicherheitslücke, sollte nur in einer sicheren Umgebung benutzt werden. + Potenzielle Sicherheitslücke, sollte nur in einer sicheren Umgebung benutzt werden. Enable Qt Quick Compiler: @@ -27598,6 +27302,10 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü No Qt version set in kit. Im Kit ist keine Qt-Version gesetzt. + + Qt version is invalid. + Ungültige Qt-Version. + No C++ compiler set in kit. Im Kit ist kein C++-Compiler eingerichtet. @@ -28160,7 +27868,7 @@ Check 'General Messages' output pane for details. Führende 10 Zeilen der Ausgabe beziehungsweise Fehlermeldungen: %1 -Das Panel 'Allgemeine Ausgaben' enthält weitere Informationen. +Der Ausgabebereich 'Allgemeine Ausgaben' enthält weitere Informationen. @@ -28867,6 +28575,10 @@ Möchten Sie es beenden? Run windeployqt windeployqt ausführen + + Arguments: + Argumente: + No executable to deploy found in %1. Keine ausführbare Datei für Deployment gefunden in %1. @@ -28887,6 +28599,10 @@ Möchten Sie es beenden? Cannot open mapping file %1 for writing. Die Zuordnungs-Datei %1 kann nicht zum Schreiben geöffnet werden. + + Restore Default Arguments + Standardargumente wiederherstellen + WinRt::Internal::WinRtQtVersion @@ -28941,17 +28657,6 @@ Möchten Sie es beenden? Fehler - - WinRt::Internal::WinRtPackageDeploymentStepWidget - - Arguments: - Argumente: - - - Restore Default Arguments - Standardargumente wiederherstellen - - AnchorRow @@ -30000,29 +29705,6 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Meine Aufgaben - - TextEditor::Internal::MultiDefinitionDownloader - - Downloading Highlighting Definitions - Lade Hervorhebungsdefinitionen herunter - - - Error downloading selected definition(s). - Fehler beim Herunterladen der ausgewählten Definitionen. - - - Error downloading one or more definitions. - Fehler beim Herunterladen einer oder mehrerer Definitionen. - - - Please check the directory's access rights. - Bitte prüfen Sie die Zugriffsrechte des Verzeichnisses. - - - Download Error - Fehler beim Herunterladen - - WinRt::Internal::WinRtDebugSupport @@ -30369,6 +30051,18 @@ Der vom Kit mindestens benötigte API-Level ist %1. Starting Android virtual device failed. Das Starten des virtuellen Android-Geräts schlug fehl. + + Cleaning Qt libraries on device failed. +%1 + Qt-Bibliotheken konnten nicht vom Gerät entfernt werden. +%1 + + + Android package installation failed. +%1 + Android-Paketinstallation gescheitert. +%1 + Bazaar::Internal::BazaarEditorWidget @@ -30978,6 +30672,12 @@ Möchten Sie sie jetzt auschecken? <html><head/><body><p>You are trying to run the tool "%1" on an application in %2 mode. The tool is designed to be used %3.</p><p>Run-time characteristics differ significantly between optimized and non-optimized binaries. Analytical findings for one mode may or may not be relevant for the other.</p><p>Running tools that need debug symbols on binaries that don't provide any may lead to missing function names or otherwise insufficient output.</p><p>Do you want to continue and run the tool in %2 mode?</p></body></html> <html><head/><body><p>Sie versuchen das Werkzeug "%1" für eine Anwendung im %2-Modus auszuführen. Das Werkzeug ist dafür vorgesehen %3 ausgeführt zu werden.</p><p>Die Laufzeitcharakteristik von optimierten und nicht optimierten Maschinenprogrammen unterscheidet sich stark. Ergebnisse einer Analyse des einen Modus können, müssen aber nicht auf den anderen Modus übertragbar sein.</p><p>Werkzeuge, die Debug-Symbole benötigen, auf Dateien auszuführen, die diese nicht enthalten, kann zu fehlenden Funktionsnamen oder anderweitig unbrauchbaren Ergebnissen führen.</p><p>Wollen Sie fortfahren und das Werkzeug im %2-Modus ausführen?</p></body></html> + + %1 is a 64 bit executable which can not be debugged by a 32 bit Debugger. +Please select a 64 bit Debugger in the kit settings for this kit. + %1 ist eine 64-bit-Anwendung, die nicht mit einem 32-bit-Debugger untersucht werden kann. +Bitte wählen Sie einen 64-bit-Debugger in den Kit-Einstellungen für dieses Kit. + Unable to create a debugging engine. Please select a Debugger Setting from the Run page of the project mode. Eine Debugging-Engine kann nicht erzeugt werden. Bitte wählen Sie in der Ausführungskonfiguration im Projekte-Modus eine Debuggereinstellung. @@ -31673,6 +31373,10 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Qt 5.8 Qt 5.8 + + Creates a Qt for Python application that contains only the main code for a QApplication. + Erstellt eine Anwendung für Qt for Python, die nur den grundlegenden Quelltext für eine QApplication enthält. + Default Vorgabe @@ -31826,6 +31530,10 @@ Benutzen Sie dies nur für Prototypen. Sie können damit keine vollständige Anw Qt Quick Test Qt Quick Test + + Python module: + Python-Modul: + Qt 5.11 Qt 5.11 @@ -31838,6 +31546,18 @@ Benutzen Sie dies nur für Prototypen. Sie können damit keine vollständige Anw Scratch Model Modellentwurf + + Qt for Python - Empty + Qt for Python - Leer + + + Creates a Qt for Python application that contains an empty window. + Erstellt eine Anwendung für Qt for Python, die ein leeres Fenster enthält. + + + Qt for Python - Window + Qt for Python - Fenster + Creates a Qt Quick application that contains an empty window. Erstellt eine Qt Quick-Anwendung, die ein leeres Fenster enthält. @@ -32775,8 +32495,8 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. Ändern... - Environment: - Umgebung: + Environment + Umgebung Additional build environment settings when using this kit. @@ -32903,6 +32623,10 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. TextEditor::TextEditorWidget + + Other annotations + Andere Annotationen + Print Document Dokument drucken @@ -32923,10 +32647,6 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. Select Encoding Zeichenkodierung auswählen - - Other annotations: - Andere Annotationen: - Zoom: %1% Vergrößerung: %1% @@ -33256,10 +32976,6 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. Build Progress Erstellungsfortschritt - - Build Adapter for the current Qt. Happens only once for every Qt installation. - Erstelle Adapter für aktuelles Qt. Dies geschieht nur einmal für jede Qt-Installation. - Open error output file Fehlerausgabedatei öffnen @@ -33272,6 +32988,10 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. OK OK + + Building Adapter for the current Qt. Happens only once for every Qt installation. + Erstelle Adapter für das aktuelle Qt. Dies geschieht nur einmal für jede Qt-Installation. + QmlDesigner::PuppetDialog @@ -33397,6 +33117,10 @@ Senden selbst auch Zeit benötigt. Maximum size of an item in a layout. Höchstgröße eines Items im Layout. + + Margins + Ränder + Row span Zeilen verbinden @@ -33850,8 +33574,8 @@ Senden selbst auch Zeit benötigt. CMakeProjectManager::Internal::CMakeKitConfigWidget - CMake Tool: - CMake-Werkzeug: + CMake Tool + CMake-Werkzeug The CMake Tool to use when building a project with CMake.<br>This setting is ignored when using other build systems. @@ -35046,13 +34770,6 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl Qbs-Dateien - - QbsProjectManager::Internal::QbsManager - - Failed to set up kit for Qbs: %1 - Das Kit für Qbs konnte nicht eingerichtet werden: %1 - - ModelNodeOperations @@ -35354,37 +35071,6 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl %1 Präfix: %2 - - GenericHighlighter - - Element name is empty. - Elementname ist leer. - - - Duplicate element name "%1". - Doppelter Elementname "%1". - - - Name "%1" not found. - Name "%1" nicht gefunden. - - - Generic highlighter error: - Fehler in generischer Syntaxhervorhebung: - - - Generic highlighter error: %1 - Fehler in generischer Syntaxhervorhebung: %1 - - - Reached empty context. - Leerer Kontext erreicht. - - - Generic highlighter warning: %1 - Warnung in generischer Syntaxhervorhebung: %1 - - TextEditor::Internal::TextEditorActionHandler @@ -35523,6 +35209,14 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl Ctrl+E, F2 Ctrl+E, F2 + + Find References to Symbol Under Cursor + Verweise auf Symbol unter Einfügemarke finden + + + Ctrl+Shift+U + Ctrl+Shift+U + Jump to File Under Cursor Gehe zu Datei unter Einfügemarke @@ -36079,6 +35773,10 @@ Warnung: Dies ist eine experimentelle Funktion und könnte dazu führen, dass di Reset Cached Choices Gespeicherte Auswahlen zurücksetzen + + Group results by application + Ergebnisse nach Anwendung gruppieren + ClangCodeModel::Internal::ClangProjectSettingsWidget @@ -36150,6 +35848,20 @@ Allerdings führt die Anwendung der weniger strikten und erweiterten Regeln dazu View Checks as String... Prüfungen als Zeichenkette anzeigen... + + Checks (%n enabled, some are filtered out) + + Prüfungen (eine aktiviert, einige ausgefiltert) + Prüfungen (%n aktiviert, einige ausgefiltert) + + + + Checks (%n enabled) + + Prüfungen (eine aktiviert) + Prüfungen (%n aktiviert) + + Configuration passes sanity checks. https://de.wikipedia.org/wiki/Sanity_Check @@ -36955,6 +36667,14 @@ Ausführbare Datei: %2 Check All Filters Alle Filter auswählen + + Uncheck All Filters + Alle Filter abwählen + + + Test summary + Testzusammenfassung + passes bestanden @@ -36980,8 +36700,12 @@ Ausführbare Datei: %2 indiziert - , %1 disabled - , %1 abgeschaltet + skipped + übersprungen + + + disabled + deaktiviert Copy @@ -37249,8 +36973,8 @@ Dies könnte Probleme während der Ausführung verursachen. Ändern... - CMake generator: - CMake Generator: + CMake generator + CMake-Generator %1 - %2, Platform: %3, Toolset: %4 @@ -37466,6 +37190,10 @@ Dies könnte Probleme während der Ausführung verursachen. Clang-Tidy and Clazy preselected checks Vorausgewählte Prüfungen mit Clang-Tidy und Clazy + + Build-system warnings + Warnungen des Build-Systems + %1 [built-in] %1 [eingebaut] @@ -37531,8 +37259,8 @@ Dies könnte Probleme während der Ausführung verursachen. Kann nur während einer Debugsitzung ermittelt werden. - Debugger Console - Debuggerkonsole + QML Debugger Console + QML-Debuggerkonsole @@ -37683,6 +37411,10 @@ Leer lassen, um das Dateisystem zu durchsuchen. ProjectExplorer::Internal::ClangClToolChainConfigWidget + + Initialization: + Initialisierung: + &Compiler path: &Compiler-Pfad: @@ -37706,17 +37438,17 @@ Leer lassen, um das Dateisystem zu durchsuchen. Auswertung beginnen - Show files matching: - Zeige passende Dateien: + Select files matching: + Passende Dateien auswählen: + + + Apply Filters + Filter anwenden Hide files matching: Verstecke übereinstimmende Dateien: - - Apply Filter - Filter anwenden - Generating file list... @@ -37820,6 +37552,10 @@ Sie werden erhalten. Load External Log File Externe Logdatei laden + + Open results in KCachegrind. + Ergebnisse in KCachegrind öffnen. + Request the dumping of profile information. This will update the Callgrind visualization. Fordere das Ausschreiben der Profiler-Informationen an. Die Callgrind-Visualisierung wird dadurch aktualisiert. @@ -38630,7 +38366,7 @@ Siehe auch die Einstellungen für Google Test. ClangCodeModel::Internal::ClangDiagnosticManager Inspect available fixits - Verfügbare "fixits" untersuchen + Verfügbare Korrekturen untersuchen @@ -38703,13 +38439,6 @@ Siehe auch die Einstellungen für Google Test. Spotlight-Dateinamensindex - - CppEditor::CppIncludeHierarchy - - No include hierarchy available - Keine Include-Hierarchie verfügbar - - ModelEditor @@ -38773,8 +38502,16 @@ Siehe auch die Einstellungen für Google Test. Nim::NimBuildConfigurationFactory - Build - Erstellen + Debug + Debug + + + Profile + Profile + + + Release + Release @@ -38938,6 +38675,10 @@ Siehe auch die Einstellungen für Google Test. Show Full Range Ganzen Bereich anzeigen + + Reset Flame Graph + Flame Graph zurücksetzen + QmlProfiler::Internal::InputEventsModel @@ -40355,25 +40096,6 @@ Fehler: %5 Dateiversion %1 ist nicht nutzbar. - - QSsh::Internal::SshAgent - - Cannot connect to ssh-agent: SSH_AUTH_SOCK is not set. - Verbindung zu ssh-agent ist nicht möglich: SSH_AUTH_SOCK is nicht gesetzt. - - - Lost connection to ssh-agent for unknown reason. - Verbindung zu ssh-agent aus unbekanntem Grund verloren. - - - ssh-agent failed to retrieve keys. - ssh-agent konnte keine Schlüssel abrufen. - - - Protocol error when talking to ssh-agent. - Protokollfehler bei der Kommunikation mit ssh-agent. - - Utils::FileSaverBase @@ -40430,40 +40152,40 @@ Fehler: %5 Auf dem Host sind nicht genügend freie Ports für das QML-Debuggen vorhanden. - Failed to get process path. Reason: %1. - Der Pfad des Prozesses konnte nicht ermittelt werden. Grund: %1. + Failed to find application directory. + Anwendungsverzeichnis wurde nicht gefunden. - Failed to start C++ debugger. - Der C++-Debugger konnte nicht gestartet werden. + Cannot find or copy C++ debug server. + Kann C++-Debug-Server nicht finden oder kopieren. - Failed to forward C++ debugging ports. Reason: %1. - Die C++-Debuggerports konnten nicht übermittelt werden. Grund: %1. + Failed to forward QML debugging ports. + Die Ports des QML-Debuggers konnten nicht übermittelt werden. - Failed to forward jdb debugging ports. Reason: %1. - jdb-Debugging-Ports konnten nicht weitergeleitet werden. Grund: %1. + Failed to start the activity. + Die Aktivität konnte nicht gestartet werden. - Cannot find/copy C++ debug server. - Kann C++-Debug-Server nicht finden/kopieren. + Failed to forward JDB debugging ports. + JDB-Debugging-Ports konnten nicht weitergeleitet werden. - Failed to forward QML debugging ports. Reason: %1. - Die QML-Debuggerports konnten nicht übermittelt werden. Grund: %1. + Failed to start JDB. + JDB konnte nicht gestartet werden. - Failed to start the activity. Reason: %1. - Die Aktivität konnte nicht gestartet werden: Grund: %1. + Cannot attach JDB to the running application. + JDB konnte sich nicht mit der laufenden Anwendung verbinden. - Failed to start jdb. - jdb konnte nicht gestartet werden. + Failed to start debugger server. + Der Debugger-Server konnte nicht gestartet werden. - Cannot attach jdb to the running application. Reason: %1. - jdb konnte sich nicht mit der laufenden Anwendung verbinden. Grund: %1. + Failed to forward C++ debugging ports. + Die Ports des C++-Debuggers konnten nicht übermittelt werden. "%1" died. @@ -40645,6 +40367,10 @@ Fehler: %5 Set Data Breakpoint on Selection Datenhaltepunkt bei Auswahl setzen + + Copy 0x%1 + 0x%1 kopieren + Jump to Address in This Window Gehe zu Adresse in diesem Fenster @@ -40653,6 +40379,10 @@ Fehler: %5 Jump to Address in New Window Gehe zu Adresse in neuem Fenster + + Copy Value + Wert kopieren + Jump to Address 0x%1 in This Window Gehe zu Adresse 0x%1 in diesem Fenster @@ -41374,17 +41104,6 @@ Ablaufdatum: %3 Status - - Mercurial::Internal::MercurialDiffConfig - - Ignore Whitespace - Leerzeichen nicht berücksichtigen - - - Ignore Blank Lines - Leerzeilen nicht berücksichtigen - - ModelEditor::Internal::ElementTasks @@ -41440,15 +41159,6 @@ Ablaufdatum: %3 Leerzeichen nicht berücksichtigen - - ProjectExplorer::Internal::AbstractMsvcToolChain - - Failed to retrieve MSVC Environment from "%1": -%2 - Die MSVC-Umgebung konnte nicht per "%1" bestimmt werden: -%2 - - ProjectExplorer::BuildStep @@ -42803,6 +42513,10 @@ Zeile: %4, Spalte: %5 SilverSearcher::FindInFilesSilverSearcher + + Search Options (optional) + Sucheinstellungen (optional) + Silver Searcher is not available on the system. Silver Searcher ist auf dem System nicht verfügbar. @@ -43927,32 +43641,28 @@ Breche ausstehende Operationen ab... CppTools::ClazyChecks - Each level adds checks to the previous level. For more information, see <a href="https://github.com/KDE/clazy">clazy's homepage</a>. - Jede Stufe fügt der niedrigeren Prüfungen hinzu. Weitere Informationen finden Sie auf der <a href="https://github.com/KDE/clazy">Homepage von Clazy</a>. + Topic Filter + Themenfilter - Disabled - Deaktiviert + Reset to All + Auf alle zurücksetzen - Level 0: No false positives - Stufe 0: Keine Fehlalarme + Checks + Prüfungen - Level 1: Very few false positives - Stufe 1: Sehr wenige Fehlalarme + When enabling a level explicitly, also enable lower levels (Clazy semantic). + Wenn Sie eine Stufe explizit aktivieren, auch die niedrigeren Stufen aktivieren (Clazy-Semantik). - Level 2: More false positives - Stufe 2: Mehr Fehlalarme + Enable lower levels automatically + Niedrigere Stufen automatisch aktivieren - Not always correct, possibly very noisy, might require a knowledgeable developer to review, might have a very big rate of false-positives, might have bugs. - Nicht immer korrekt, möglicherweise sehr viele Meldungen, könnte die Prüfung durch einen erfahrenen Entwickler benötigen, könnte eine sehr hohe Rate von Fehlalarmen haben, könnte Fehler enthalten. - - - Level 3: Experimental checks - Stufe 3: Experimentelle Prüfungen + See <a href="https://github.com/KDE/clazy">Clazy's homepage</a> for more information. + Weitere Informationen finden Sie auf der <a href="https://github.com/KDE/clazy">Homepage von Clazy</a>. @@ -44126,6 +43836,22 @@ Breche ausstehende Operationen ab... Cppcheck Cppcheck + + All syntax definitions are up-to-date. + Alle Syntaxdefinitionen sind aktuell. + + + Downloading new syntax definition for '%1'... + Lade neue Syntaxdefinition für "%1" herunter... + + + Updating syntax definition for '%1' to version %2... + Aktualisiere Syntaxdefinition für "%1" auf Version %2... + + + Frame %1 + Frame %1 + CppEditor::CppQuickFixFactory @@ -44220,14 +43946,13 @@ Breche ausstehende Operationen ab... For appropriate options, consult the GCC or Clang manual pages or the <a href="https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html">GCC online documentation</a>. Für passende Optionen lesen Sie das GCC- oder Clang-Handbuch oder auch die <a href="https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html">GCC-Onlinedokumentation</a>. + + Use diagnostic flags from build system + Diagnose-Flags des Build-Systems verwenden + TextEditor::Internal::Snippets - - - Snippets are text fragments that can be inserted into an editor via the usual completion mechanics using a trigger text. The translated text (trigger variant) is used to disambiguate between snippets with the same trigger. - - derived from QObject group:'C++' trigger:'class' @@ -44248,6 +43973,11 @@ Breche ausstehende Operationen ab... group:'C++' trigger:'else' mit if + + range-based + group:'C++' trigger:'for' + auf Elementen + and else group:'C++' trigger:'if' @@ -44349,13 +44079,6 @@ Breche ausstehende Operationen ab... Analysieren - - ClangTools::ClangToolsBasicSettings - - Build the project before analysis - Projekt vor der Analyse erstellen - - ClangTools::Internal::ClangToolsConfigWidget @@ -44585,10 +44308,6 @@ Die Trace-Daten sind verloren. ClangTools::Internal::ClangTidyClazyTool - - Clang-Tidy and Clazy Issues - Clang-Tidy- und Clazy-Probleme - Go to previous diagnostic. Gehe zum vorherigen Eintrag. @@ -44599,11 +44318,7 @@ Die Trace-Daten sind verloren. Apply Fixits - Lösungen anwenden - - - Clang-Tidy and Clazy use a customized Clang executable from the Clang project to search for errors and warnings. - Clang-Tidy und Clazy benutzen ein angepasstes Clang-Programm vom Clang-Projekt, um nach Fehlern und Warnungen zu suchen. + Korrekturen anwenden Clang-Tidy and Clazy @@ -44613,6 +44328,30 @@ Die Trace-Daten sind verloren. Clang-Tidy and Clazy... Clang-Tidy und Clazy... + + Clang-Tidy and Clazy Diagnostics + Diagnose von Clang-Tidy und Clazy + + + Clear + Löschen + + + Expand All + Alles aufklappen + + + Collapse All + Alle einklappen + + + Filter Diagnostics + Meldungen filtern + + + Clang-Tidy and Clazy use a customized Clang executable from the Clang project to search for diagnostics. + Clang-Tidy und Clazy benutzen eine angepasste Version der Anwendung Clang vom Clang-Projekt, um nach Problemen zu suchen. + Clang-Tidy and Clazy tool stopped by user. Der Benutzer hat Clang-Tidy und Clazy abgebrochen. @@ -44629,25 +44368,28 @@ Die Trace-Daten sind verloren. This is not a C++ project. Dies ist kein C++-Projekt. - - Clang-Tidy and Clazy are running. - Clang-Tidy und Clazy laufen gerade. + + Running - %n diagnostics + + Läuft - eine Meldung + Läuft - %n Meldungen + - Clang-Tidy and Clazy finished. - Clang-Tidy und Clazy sind fertig. - - - No issues found. - Keine Probleme gefunden. + Running - No diagnostics + Läuft - keine Meldungen - %n issues found. + Finished - %n diagnostics - Ein Treffer gefunden. - %n Treffer gefunden. + Beendet - eine Meldung + Beendet - %n Meldungen + + Finished - No diagnostics + Beendet - keine Meldungen + ClangTools::Internal::ClangToolRunControl @@ -44732,20 +44474,12 @@ Ausgabe: ClangTools::Internal::ClangToolsDiagnosticModel - Issue - Problem - - - Location - Ort - - - Fixit Status - Zustand der Lösung + Diagnostic + Diagnose No Fixits - Keine Lösungen + Keine Korrekturen Not Scheduled @@ -44790,6 +44524,10 @@ Ausgabe: Location: Ort: + + Fixit status: + Zustand der Korrekturen: + ClangTools::ExplainingStep @@ -44884,13 +44622,6 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?Verwalten... - - CppTools::TidyChecksTreeModel - - Web Page - Webseite - - CppTools::OverviewModel @@ -44964,13 +44695,6 @@ Would you like to overwrite them? Möchten Sie sie überschreiben? - - Ios::Internal::IosDeployConfiguration - - Deploy on iOS - Deployment auf iOS - - Nim::NimRunConfiguration @@ -45112,6 +44836,14 @@ Möchten Sie sie überschreiben? Failed to flush temporary trace file. Das Schreiben in eine temporäre Trace-Datei konnte nicht beendet werden. + + Cannot re-open temporary trace file. + Eine temporäre Trace-Datei konnte nicht neu geöffnet werden. + + + Read past end from temporary trace file. + Über das Ende der temporären Trace-Datei hinaus gelesen. + Could not re-open temporary trace file. Eine temporäre Trace-Datei konnte nicht neu geöffnet werden. @@ -45215,8 +44947,8 @@ Speichern fehlgeschlagen. SerialTerminal::Internal::SerialControl - Unable to open port %1. - Port %1 konnte nicht geöffnet werden. + Unable to open port %1: %2. + Port %1 konnte nicht geöffnet werden: %2. Session resumed. @@ -45469,21 +45201,33 @@ Speichern fehlgeschlagen. ClangFormat::ClangFormatConfigWidget - - Create Clang Format Configuration File - Clang-Format-Konfigurationsdatei erzeugen - Apply Anwenden - No .clang-format file for the project. - Keine .clang-format-Datei für das Projekt. + Current project has its own overridden .clang-format file and can be configured in Projects > Code Style > C++. + Das aktuelle Projekt hat seine eigene überschriebene .clang-format-Datei und kann in Projekte > Coding-Stil > C++ konfiguriert werden. - Current project has its own .clang-format file and can be configured in Projects > Clang Format. - Das aktuelle Projekt hat seine eigene .clang-format-Datei und kann in Projekte > Clang-Format konfiguriert werden. + Error in ClangFormat configuration + Fehler in der Konfiguration von ClangFormat + + + Format instead of indenting + Formatieren statt einzurücken + + + Format while typing + Bei der Eingabe formatieren + + + Format edited code on file save + Bearbeiteten Quelltext beim Speichern der Datei formatieren + + + Override Clang Format configuration file + Clang-Format-Konfigurationsdatei überschreiben @@ -45680,18 +45424,11 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni "%1" muss durch "%2" ersetzt werden - - ClangFormat::Internal::ClangFormatOptionsPage - - Clang Format - Clang Format - - ClangFormat::ClangFormatPlugin - Clang Format - Clang Format + Open Used .clang-format Configuration File + Verwendete .clang-format-Konfigurationsdatei öffnen @@ -45816,12 +45553,12 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Debugger::Internal::EngineManager - Name - Name + Perspective + Perspektive - File - Datei + Debugged Application + Zu debuggende Anwendung Debugger Preset @@ -45877,68 +45614,68 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Branch hinzufügen... - Add... - Hinzufügen... + &Add... + &Hinzufügen... - Fetch - Fetch + &Fetch + &Fetch - Manage Remotes... - Remotes verwalten... + Manage &Remotes... + &Remotes verwalten... - Remove... - Entfernen... + Rem&ove... + En&tfernen... - Rename... - Umbenennen... + Re&name... + Umbe&nennen... - Checkout - Auschecken + &Checkout + Aus&checken - Diff - Diff + &Diff + &Diff - Log - Log + &Log + &Log - Reset - Zurücksetzen + Re&set + Zurück&setzen - Merge (Fast-Forward) - Merge (Fast-Forward) + &Merge (Fast-Forward) + &Merge (Fast-Forward) - Merge (No Fast-Forward) - Merge (kein Fast-Forward) + Merge (No &Fast-Forward) + Merge (kein &Fast-Forward) - Merge - Merge + &Merge + &Merge - Rebase - Rebase + &Rebase + &Rebase - Cherry Pick - Cherry-Pick + Cherry &Pick + Cherry-&Pick - Track - Folgen + &Track + &Folgen - Checkout branch? - Branch auschecken? + &Push + &Push Would you like to delete the tag "%1"? @@ -45991,44 +45728,6 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Dokumentation aktualisieren - - LanguageClient::BaseClient - - Invalid parameter in "%1": %2 - Ungültiger Parameter in "%1": %2 - - - Language Server "%1" Initialize Error - Fehler bei Initialisierung von Language Server "%1" - - - Initialize error: - Fehler bei Initialisierung: - - - No initialize result. - Initialisierung ohne Ergebnis. - - - Initialize result is not valid: - Ergebnis der Initialisierung ist ungültig: - - - Cannot handle content of type: %1 - Kann Inhalt des Typs "%1" nicht verwenden. - - - - LanguageClient::StdIOClient - - Cannot send data to unstarted server %1 - Kann keine Daten an den nicht gestarteten Server %1 schicken - - - Crashed with exit code %1: %2 - Mit dem Rückgabewert %1 abgestürzt: %2 - - LanguageClient @@ -46046,9 +45745,25 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Unexpectedly finished. Unerwartet beendet. + + Find References with %1 for: + Referenzen mit %1 finden für: + LanguageClient::BaseSettingsWidget + + Name + Name + + + Value + Wert + + + Type + Typ + Name: Name: @@ -46065,6 +45780,14 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni File pattern Suchmuster für Dateinamen + + Available after server was initialized + Verfügbar, nachdem der Server initialisiert wurde + + + Capabilities: + Fähigkeiten: + LanguageClient::StdIOSettingsWidget @@ -46276,7 +45999,7 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Nicht aufgerufene Funktionen - Missing include + Missing includes Fehlende Includes @@ -46376,4 +46099,1653 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Ausführbare Datei: + + ClangTools::Internal::ClangToolsBasicSettings + + Build the project before analysis + Projekt vor der Analyse erstellen + + + + CppCodeModelInspectorDialog + + Compiler Flags + Compiler-Flags + + + + Nim::NimToolsSettingsWidget + + Nimsuggest + Nimsuggest + + + Path + Pfad + + + + PerfProfiler::Internal::PerfConfigWidget + + Stack snapshot size (kB): + Größe des Stack-Abbilds (kB): + + + Call graph mode: + Aufrufgraph-Modus: + + + Additional arguments: + Zusätzliche Argumente: + + + Use Trace Points + Tracepoints verwenden + + + Add Event + Ereignis hinzufügen + + + Remove Event + Ereignis entfernen + + + Reset + Zurücksetzen + + + dwarf + dwarf + + + frame pointer + frame pointer + + + last branch record + last branch record + + + frequency (Hz) + Frequenz (Hz) + + + event count + Ereigniszähler + + + Replace events with trace points read from the device? + Ereignisse mit vom Gerät gelesenen Trace Points ersetzen? + + + No Trace Points Found + Keine Trace Points gefunden + + + Trace points can be defined with "perf probe -a". + Tracepoints können mit "perf probe -a" definiert werden. + + + Cannot List Trace Points + Trace Points können nicht aufgelistet werden + + + "perf probe -l" failed to start. Is perf installed? + "perf probe -l" konnte nicht gestartet werden. Ist perf installiert? + + + Sample mode: + Aufnahmemodus: + + + Sample period: + Aufnahmehäufigkeit: + + + + PerfProfiler::Internal::PerfLoadDialog + + Load Perf Trace + Perf-Trace laden + + + &Browse... + &Auswählen... + + + B&rowse... + Aus&wählen... + + + Kit: + Kit: + + + Choose Perf Trace + Perf-Trace auswählen + + + Perf traces (*%1) + Perf-Traces (*%1) + + + Choose Directory of Executable + Verzeichnis oder ausführbare Datei auswählen + + + &Trace file: + &Trace-Datei: + + + Directory of &executable: + Verzeichnis der &ausführbaren Datei: + + + + PerfProfilerFlameGraphView + + Samples + Samples + + + Function + Funktion + + + Source + Quelltext + + + Binary + Binärdatei + + + Allocations + Allokationen + + + observed + beobachtet + + + guessed + geschätzt + + + Releases + Freigaben + + + Peak Usage + Spitzenwert + + + Various + Verschiedene + + + + PerfProfiler::Internal::PerfTracePointDialog + + Run the following script as root to create trace points? + Soll das folgende Skript als root ausgeführt werden, um Tracepoints zu erzeugen? + + + Error: No device available for active target. + Fehler: Für das aktive Ziel ist kein Gerät verfügbar. + + + Error: Failed to load trace point script %1: %2. + Fehler: Das Tracepoint-Skript %1 konnte nicht geladen werden: %2. + + + Executing script... + Führe Skript aus... + + + Failed to create trace points. + Tracepoints konnten nicht erzeugt werden. + + + Created trace points for: %1 + Tracepoints für %1 erzeugt. + + + Failed to run trace point script: %1 + Tracepoint-Skript konnte nicht ausgeführt werden: %1 + + + Creating Memory Trace Points + Trace Points für Speicher-Profiling erzeugen + + + Elevate privileges using: + Rechte ausweiten mit: + + + + QmlDesigner::SetFrameValueDialog + + Dialog + Dialog + + + Value + Wert + + + Change %1 + %1 ändern + + + + QmlDesigner::TimelineAnimationForm + + Continuous + Fortlaufend + + + none + Keine + + + Animation Settings + Animationseinstellungen + + + animation02 + animation02 + + + Invalid Id + Ungültige ID + + + %1 is an invalid id. + %1 ist keine gültige ID. + + + %1 already exists. + %1 existiert bereits. + + + Base State + Grundzustand + + + Loops: + Wiederholungen: + + + Animation ID: + ID der Animation: + + + Finished: + Beendet: + + + Ping pong + Ping Pong + + + Transition to state: + Übergang zu Status: + + + Running in base state + Läuft im Grundzustand + + + Start frame: + Erster Frame: + + + Duration: + Dauer: + + + End frame: + Letzter Frame: + + + + QmlDesigner::TimelineForm + + Duration + Dauer + + + Animation + Animation + + + Timeline Settings + Timeline-Einstellungen + + + Invalid Id + Ungültige ID + + + %1 is an invalid id. + %1 ist keine gültige ID. + + + %1 already exists. + %1 existiert bereits. + + + Expression binding: + Binding durch einen Ausdruck: + + + End frame: + Letzter Frame: + + + Expression binding + Binding durch einen Ausdruck + + + Timeline ID: + ID der Timeline: + + + Start frame: + Erster Frame: + + + + QmlDesigner::TimelineSettingsDialog + + Timeline Settings + Timeline-Einstellungen + + + Add Timeline + Timeline hinzufügen + + + Remove Timeline + Timeline entfernen + + + Add Animation + Animation hinzufügen + + + Remove Animation + Animation entfernen + + + No Timeline + Keine Timeline + + + No Animation + Keine Animation + + + + SyntaxHighlightingCLI + + Command line syntax highlighter using Kate syntax definitions. + Kommandozeilen-Syntaxhervorhebung mit Hilfe von Kate-Syntaxdefinitionen. + + + source + Quelldatei + + + The source file to highlight. + Die Quelltextdatei, deren Syntax hervorgehoben werden soll. + + + List all available syntax definitions. + Alle verfügbaren Syntaxdefinitionen auflisten. + + + List all available themes. + Alle verfügbaren Farbschemata auflisten. + + + Download new/updated syntax definitions. + Neue oder aktualisierte Syntaxdefinitionen herunterladen. + + + File to write HTML output to (default: stdout). + Datei, in die die HTML-Ausgabe geschrieben werden soll (Vorgabe: Standardausgabe). + + + output + Ausgabedatei + + + Highlight using this syntax definition (default: auto-detect based on input file). + Mit Hilfe dieser Syntaxdefinition hervorheben (Vorgabe: Anhand der Eingabedatei automatisch erkennen). + + + syntax + Syntax + + + Color theme to use for highlighting. + Farbschema für die Syntaxhervorhebung. + + + theme + Farbschema + + + Set HTML page's title +(default: the filename or "Kate Syntax Highlighter" if reading from stdin). + Titel der HTML-Seite setzen +(Vorgabe: Der Dateiname oder "Kate Syntax Highlighter", wenn von der Standardeingabe gelesen wird). + + + title + Titel + + + Read file from stdin. The -s option must also be used. + Die Datei aus der Standardeingabe lesen. Die Option "-s" muss auch verwendet werden. + + + + Syntax highlighting + + None + Keine + + + + QSsh::SftpSession + + sftp failed to start: %1 + sftp konnte nicht gestartet werden: %1 + + + sftp crashed. + sftp ist abgestürzt. + + + Cannot establish SFTP session: sftp binary "%1" does not exist. + SFTP-Sitzung kann nicht aufgebaut werden: Eine ausführbare SFTP-Datei "%1" existiert nicht. + + + + QSsh::SftpTransfer + + sftp failed to start: %1 + sftp konnte nicht gestartet werden: %1 + + + sftp crashed. + sftp ist abgestürzt. + + + sftp binary "%1" does not exist. + Eine ausführbare SFTP-Datei "%1" existiert nicht. + + + Could not create temporary file: %1 + Es konnte keine temporäre Datei erstellt werden: %1 + + + Failed to create local directory "%1". + Das lokale Verzeichnis "%1" konnte nicht erstellt werden. + + + File transfer failed: %1 + Dateiübertragung gescheitert: %1 + + + + QSsh::SshConnection + + Cannot establish SSH connection: Control process failed to start: %1 + SSH-Verbindung kann nicht aufgebaut werden: Der Steuerprozess konnte nicht gestartet werden: %1 + + + SSH connection failure. + SSH-Verbindungsfehler. + + + Cannot establish SSH connection: ssh binary "%1" does not exist. + SSH-Verbindung kann nicht aufgebaut werden: Eine ausführbare SSH-Datei "%1" existiert nicht. + + + Cannot establish SSH connection: Failed to create temporary directory for control socket: %1 + SSH-Verbindung kann nicht aufgebaut werden: Es konnte kein temporäres Verzeichnis für den Steuer-Socket angelegt werden: %1 + + + + QSsh::SshRemoteProcess + + The ssh process crashed: %1 + Der SSH-Prozess ist abgestürzt: %1 + + + Remote process crashed. + Der entfernte Prozess ist abgestürzt. + + + + JsonTreeModelItem + + Null + Null + + + Bool + Bool + + + Double + Double + + + String + String + + + Array + Array + + + Object + Object + + + Undefined + Undefined + + + %n Items + + ein Element + %n Elemente + + + + + Android::Internal + + Deploy to Android device + Deployment auf Android-Gerät + + + + ClangDiagnosticConfig + + Project: %1 (based on %2) + Projekt: %1 (basierend auf %2) + + + Changes applied in Projects Mode > Clang Code Model + Änderungen in "Projekte"-Modus > Clang Codemodell + + + + ClangPchProgressManager + + Creating PCHs + PCH stands for precompiled header + PCHs erzeugen + + + Creating Dependencies + Abhängigkeiten erzeugen + + + + ClangRefactoringProgressManager + + C++ Indexing + Indiziere C++ + + + + CppEditor::Internal::CppIncludeHierarchyWidget + + No include hierarchy available + Keine Include-Hierarchie verfügbar + + + Synchronize with Editor + Mit Editor synchronisieren + + + + CppTools::BaseChecksTreeModel + + Web Page + Webseite + + + + CppTools::ClazyChecksTreeModel + + Manual Level: Very few false positives + Manuelle Stufe: Sehr wenige Fehlalarme + + + Level 0: No false positives + Stufe 0: Keine Fehlalarme + + + Level 1: Very few false positives + Stufe 1: Sehr wenige Fehlalarme + + + Level 2: More false positives + Stufe 2: Mehr Fehlalarme + + + Level 3: Experimental checks + Stufe 3: Experimentelle Prüfungen + + + Level %1 + Stufe %1 + + + + Ios::Internal + + Deploy on iOS + Deployment auf iOS + + + + LanguageClient::Client + + Cannot handle content of type: %1 + Kann Inhalt des Typs "%1" nicht verwenden. + + + Invalid parameter in "%1": %2 + Ungültiger Parameter in "%1": %2 + + + Language Server "%1" Initialize Error + Fehler bei Initialisierung von Language Server "%1" + + + Initialize error: + Fehler bei Initialisierung: + + + No initialize result. + Initialisierung ohne Ergebnis. + + + Initialize result is not valid: + Ergebnis der Initialisierung ist ungültig: + + + + LanguageClient::StdIOClientInterface + + Cannot send data to unstarted server %1 + Kann keine Daten an den nicht gestarteten Server %1 schicken + + + Crashed with exit code %1: %2 + Mit dem Rückgabewert %1 abgestürzt: %2 + + + + NimToolsSettingsPage + + Tools + Werkzeuge + + + Nim + Nim + + + + Nim::NimToolsSettingsPage + + Nim + Nim + + + + PerfProfiler::Internal::PerfConfigEventsModel + + Event Type + Ereignistyp + + + Counter + Zähler + + + Operation + Operation + + + Result + Ergebnis + + + + PerfProfiler::Internal::PerfDataReader + + Perf Data Parser Failed + Perf-Daten konnten nicht ausgewertet werden + + + The Perf data parser failed to process all the samples. Your trace is incomplete. The exit code was %1. + Der Perf Daten-Parser konnte nicht alle Samples auswerten. Ihr Trace ist unvollständig. Der Rückgabewert war %1. + + + perfparser failed to start. + perfparser konnte nicht gestartet werden. + + + Could not start the perfparser utility program. Make sure a working Perf parser is available at the location given by the PERFPROFILER_PARSER_FILEPATH environment variable. + perfparser konnte nicht gestartet werden. Stellen Sie sicher, dass die Umgebungsvariable PERFPROFILER_PARSER_FILEPATH auf einen funktionierenden Perf-Parser verweist. + + + Perf Data Parser Crashed + Der Perf Daten-Parser ist abgestürzt + + + This is a bug. Please report it. + Das ist ein Fehler. Bitte melden Sie ihn. + + + Skipping Processing Delay + Überspringe Verarbeitungsverzögerung + + + Cancel this to ignore the processing delay and immediately start recording. + Brechen Sie dies ab, um die Verarbeitungsverzögerung zu ignorieren und sofort mit der Aufzeichnung zu beginnen. + + + Cancel this to ignore the processing delay and immediately stop recording. + Brechen Sie dies ab, um die Verarbeitungsverzögerung zu ignorieren und die Aufzeichnung sofort zu beenden. + + + Cannot Send Data to Perf Data Parser + Daten können nicht an den Perf Daten-Parser gesendet werden + + + The Perf data parser does not accept further input. Your trace is incomplete. + Der Perf Daten-Parser nimmt keine weiteren Eingabedaten an. Ihr Trace ist unvollständig. + + + + PerfProfiler::PerfOptionsPage + + CPU Usage + Prozessorauslastung + + + + PerfProfiler::Internal::PerfProfilerFlameGraphModel + + [unknown] + [unbekannt] + + + + PerfProfilerStatisticsView + + Address + Adresse + + + Function + Funktion + + + Source Location + Position im Quelltext + + + Binary Location + Position in der Binärdatei + + + Caller + Aufrufende Funktion + + + Callee + Aufgerufene Funktion + + + Occurrences + Vorkommen + + + Occurrences in Percent + Vorkommen in Prozent + + + Recursion in Percent + Rekursion in Prozent + + + Samples + Samples + + + Samples in Percent + Samples in Prozent + + + Self Samples + Eigene Samples + + + Self in Percent + Eigene Samples in Prozent + + + + ProjectExplorer::Internal::SshSettingsPage + + SSH + SSH + + + + ProjectExplorer::Internal::SshSettingsWidget + + Enable connection sharing: + Verbindungsfreigabe aktivieren: + + + Connection sharing timeout: + Zeitlimit für die Verbindungsfreigabe: + + + Path to ssh executable: + Pfad zum Programm ssh: + + + Path to sftp executable: + Pfad zum Programm sftp: + + + Path to ssh-askpass executable: + Pfad zum Programm ssh-askpass: + + + Path to ssh-keygen executable: + Pfad zum Programm ssh-keygen: + + + minutes + Minuten + + + + ProjectExplorer::Internal::ClangToolChainConfigWidget + + Parent toolchain: + Basis-Toolchain: + + + + ProjectExplorer::Internal::MsvcToolChain + + Failed to retrieve MSVC Environment from "%1": +%2 + Die MSVC-Umgebung konnte nicht per "%1" bestimmt werden: +%2 + + + + QmlDesigner::PresetList + + Add Preset + Voreinstellung hinzufügen + + + Delete Selected Preset + Ausgewählte Voreinstellung löschen + + + + QmlDesigner::PresetEditor + + Save Preset + Voreinstellung speichern + + + Name + Name + + + + QmlDesigner::SplineEditor + + Delete Point + Punkt löschen + + + Smooth Point + Kontrollpunkt stetig machen + + + Corner Point + Kontrollpunkt unstetig machen + + + Add Point + Punkt hinzufügen + + + Reset Zoom + Vergrößerung zurücksetzen + + + + QmlDesignerTimeline + + Frame %1 + Frame %1 + + + + QmlDesigner::TimelinePropertyItem + + Previous Frame + Voriger Frame + + + Next Frame + Nächster Frame + + + Auto Record + Automatisch aufnehmen + + + Insert Keyframe + Keyframe einfügen + + + Delete Keyframe + Keyframe löschen + + + Edit Easing Curve... + Easing Curve bearbeiten... + + + Edit Value for Keyframe... + Wert für Keyframe bearbeiten... + + + Remove Property + Eigenschaft entfernen + + + + QmlDesigner::TimelineSettingsModel + + None + Keine + + + State + State + + + Timeline + Timeline + + + Animation + Animation + + + Fixed Frame + Fester Frame + + + Base State + Grundzustand + + + Error + Fehler + + + + QmlDesigner::TimelineToolBar + + Base State + Grundzustand + + + Timeline Settings + Timeline-Einstellungen + + + To Start + Zum Beginn + + + Previous + Vorige + + + Play + Abspielen + + + Next + Nächste + + + To End + Zum Ende + + + Loop + Wiederholen + + + Auto Key + Auto Key + + + Curve Picker + Kurvenauswahl + + + Curve Editor + Kurveneditor + + + Zoom Out + Verkleinern + + + Zoom In + Vergrößern + + + + QmlDesigner::TimelineView + + Timeline + Timeline + + + + QmlDesigner::TimelineWidget + + Timeline + Title of timeline view + Timeline + + + Add Timeline + Timeline hinzufügen + + + + QmlPreview::Internal::QmlPreviewPlugin + + QML Preview + QML-Vorschau + + + Preview File + Datei in Vorschau anzeigen + + + + RemoteLinux::GenericLinuxDeviceConfigurationWizardKeyDeploymentPage + + Key Deployment + Schlüssel-Deployment + + + We recommend that you log into your device using public key authentication. +If your device is already set up for this, you do not have to do anything here. +Otherwise, please deploy the public key for the private key with which to connect in the future. +If you do not have a private key yet, you can also create one here. + Wir empfehlen Ihnen, sich per Public Key-Authentifizierung mit Ihrem Gerät zu verbinden. +Wenn dies bereits auf Ihrem Gerät eingerichtet ist, müssen Sie nichts weiter tun. +Wenn nicht, übertragen Sie bitte den öffentlichen Schlüssel, der zu dem privaten Schlüssel gehört, der verwendet werden soll. +Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen erzeugen. + + + Choose a Private Key File + Datei mit privatem Schlüssel auswählen + + + Deploy Public Key + Öffentlichen Schlüssel übertragen + + + Create New Key Pair + Neues Schlüsselpaar erzeugen + + + Private key file: + Private Schlüsseldatei: + + + + RemoteLinux::X11ForwardingAspect + + X11 Forwarding + X11-Weiterleitung + + + Forward to local display + Auf lokalen Bildschirm weiterleiten + + + + RemoteLinux::Internal::RsyncDeployService + + Failed to create remote directories: %1 + Entfernte Verzeichnisse konnten nicht erstellt werden: %1 + + + rsync failed to start: %1 + rsync konnte nicht gestartet werden: %1 + + + rsync crashed. + rsync ist abgestürzt. + + + rsync failed with exit code %1. + rsync scheiterte mit dem Rückgabewert %1. + + + + RemoteLinux::RsyncDeployStep + + Ignore missing files + Fehlende Dateien ignorieren + + + Deploy files via rsync + Dateien mit Hilfe von rsync übertragen + + + + TextEditor::Highlighter + + Highlighter updates: done + Aktualisierungen der Syntaxhervorhebung: abgeschlossen + + + Highlighter updates: + Aktualisierungen der Syntaxhervorhebung: + + + + Welcome::Internal::IntroductionWidget + + Take a UI Tour + Die Oberfläche vorführen lassen + + + Do you want to take a quick UI tour? This shows where the most important user interface elements are, and how they are used, and will only take a minute. You can also take the tour later by selecting Help > UI Tour. + Wollen Sie sich kurz die Oberfläche vorführen lassen? Dabei wird gezeigt, wo die wichtigsten Bedienelemente sind und wie man sie benutzt. Es dauert nur eine Minute. Sie können die Vorführung auch später über "Hilfe" > "Oberfläche vorführen" starten. + + + Take UI Tour + Oberfläche vorführen + + + Mode Selector + Moduswahl + + + Select different modes depending on the task at hand. + Wählen Sie verschiedene Modi abhängig von der zu erledigenden Aufgabe. + + + <p style="margin-top: 30px"><table><tr><td style="padding-right: 20px">Welcome:</td><td>Open examples, tutorials, and recent sessions and projects.</td></tr><tr><td>Edit:</td><td>Work with code and navigate your project.</td></tr><tr><td>Design:</td><td>Work with UI designs for Qt Widgets or Qt Quick.</td></tr><tr><td>Debug:</td><td>Analyze your application with a debugger or other analyzers.</td></tr><tr><td>Projects:</td><td>Manage project settings.</td></tr><tr><td>Help:</td><td>Browse the help database.</td></tr></table></p> + <p style="margin-top: 30px"><table><tr><td style="padding-right: 20px">Willkommen:</td><td>Beispiele, Anleitungen, sowie kürzlich verwendete Sitzungen und Projekte öffnen.</td></tr><tr><td>Editieren:</td><td>Am Quelltext arbeiten und im Projekt navigieren.</td></tr><tr><td>Design:</td><td>Mit Oberflächendesigns für Qt Widgets oder Qt Quick arbeiten.</td></tr><tr><td>Debug:</td><td>Ihre Anwendung mit einem Debugger oder anderen Werkzeugen analysieren.</td></tr><tr><td>Projekte:</td><td>Projekteinstellungen verwalten.</td></tr><tr><td>Hilfe:</td><td>Die Hilfedatenbank durchsehen.</td></tr></table></p> + + + Kit Selector + Kit-Auswahl + + + Select the active project or project configuration. + Wählen Sie das aktive Projekt oder die aktive Projektkonfiguration. + + + Run Button + "Ausführen"-Schaltfläche + + + Run the active project. By default this builds the project first. + Führen Sie das aktive Projekt aus. Wenn nicht anders eingestellt, wird das Projekt zunächst erstellt. + + + Debug Button + "Debug"-Schaltfläche + + + Run the active project in a debugger. + Führen Sie das aktive Projekt in einem Debugger aus. + + + Build Button + "Erstellen"-Schaltfläche + + + Build the active project. + Erstellen Sie das aktive Projekt. + + + Locator + Locator + + + Type here to open a file from any open project. + Tippen Sie hier, um Dateien aus den offenen Projekten zu öffnen. + + + Or:<ul><li>type <code>c&lt;space&gt;&lt;pattern&gt;</code> to jump to a class definition</li><li>type <code>f&lt;space&gt;&lt;pattern&gt;</code> to open a file from the file system</li><li>click on the magnifier icon for a complete list of possible options</li></ul> + Oder:<ul><li>Tippen Sie <code>c&lt;Leerzeichen&gt;&lt;Suchmuster&gt;</code>, um eine Klassendefinition zu öffnen</li><li>Tippen Sie <code>f&lt;Leerzeichen&gt;&lt;Suchmuster&gt;</code>, um eine Datei aus dem Dateisystem zu öffnen</li><li>Klicken Sie auf das Lupensymbol, um eine vollständige Liste der Möglichkeiten anzuzeigen.</li></ul> + + + Output Panes + Ausgabebereiche + + + Find compile and application output here, as well as a list of configuration and build issues, and the panel for global searches. + Hier werden die Ausgaben der Kompilierung und Ausführung, eine Liste von Konfigurations- und Kompilierungsproblemen, sowie globale Suchergebnisse angezeigt. + + + Progress Indicator + Fortschrittsanzeige + + + Progress information about running tasks is shown here. + Hier wird der Fortschritt laufender Aufgaben angezeigt. + + + Escape to Editor + Zurück zum Editor + + + Pressing the Escape key brings you back to the editor. Press it multiple times to also hide output panes and context help, giving the editor more space. + Wenn Sie die "Escape"-Taste betätigen, kommen Sie zurück zum Editor. Betätigen Sie sie mehrmals, um auch Ausgabebereiche sowie Kontexthilfe auszublenden und dem Editor mehr Platz zu geben. + + + The End + Ende + + + You have now completed the UI tour. To learn more about the highlighted controls, see <a style="color: #41CD52" href="qthelp://org.qt-project.qtcreator/doc/creator-quick-tour.html">User Interface</a>. + Die Vorführung der Oberfläche endet hier. Unter <a style="color: #41CD52" href="qthelp://org.qt-project.qtcreator/doc/creator-quick-tour.html">User Interface</a> können Sie mehr erfahren. + + + UI Introduction %1/%2 > + Vorführung der Oberfläche %1/%2 > + + + + Welcome::Internal::WelcomePlugin + + UI Tour + Oberfläche vorführen + + + + PerfProfiler::Internal::PerfProfilerRunner + + Failed to transfer Perf data to perfparser. + Perf-Daten konnten nicht zum perfparser übertragen werden. + + + + PythonEditor::Internal::PythonProject + + Unable to open "%1" for reading: %2 + "%1" konnte nicht zum Lesen geöffnet werden: %2 + + + Unable to read "%1": The file is empty. + "%1" konnte nicht gelesen werden: Die Datei ist leer. + + + Unable to parse "%1":%2: %3 + "%1" konnte nicht ausgewertet werden: %2: %3 + + + + TimelineKeyframeItem + + Delete Keyframe + Keyframe löschen + + + Edit Easing Curve... + Easing Curve bearbeiten... + + + Edit Value for Keyframe... + Wert für Keyframe bearbeiten... + + + + TimelineBarItem + + Range from %1 to %2 + Bereich von %1 bis %2 + + + Override Color + Farbe überschreiben + + + Reset Color + Farbe zurücksetzen + + + + PerfProfiler::Internal::LocalPerfRecordWorker + + Could not start device process. + Der Prozess auf dem Gerät konnte nicht gestartet werden. + + + Perf Process Failed to Start + Der Perf-Prozess konnte nicht gestartet werden + + + Make sure that you are running a recent Linux kernel and that the "perf" utility is available. + Stellen Sie sicher, dass Sie einen aktuellen Linux-Kernel verwenden und das Programm "perf" verfügbar ist. + + + + PerfProfiler::Internal::PerfProfilerTool + + Performance Analyzer Options + Einstellungen zur Leistungsanalyse + + + Load perf.data File + Datei perf.data laden + + + Load Trace File + Trace-Datei laden + + + Save Trace File + Trace-Datei speichern + + + Limit to Range Selected in Timeline + Auf in der Zeitleiste markierten Bereich einschränken + + + Show Full Range + Ganzen Bereich anzeigen + + + Create Memory Trace Points + Trace Points für Speicher-Profiling erzeugen + + + Create trace points for memory profiling on the target device. + Trace Points für Speicher-Profiling auf dem Gerät erzeugen. + + + Performance Analyzer + Leistungsanalyse + + + Finds performance bottlenecks. + Findet Leistungsengpässe. + + + Timeline + Zeitleiste + + + Statistics + Statistik + + + Flame Graph + Flame Graph + + + Discard data. + Daten verwerfen. + + + Limit to Selected Range + Auf markierten Bereich einschränken + + + Reset Zoom + Vergrößerung zurücksetzen + + + Copy Table + Tabelle kopieren + + + Copy Row + Zeile kopieren + + + Reset Flame Graph + Flame Graph zurücksetzen + + + No Data Loaded + Keine Daten geladen + + + The profiler did not produce any samples. Make sure that you are running a recent Linux kernel and that the "perf" utility is available and generates useful call graphs. + Der Profiler hat keine Samples erzeugt. Stellen Sie sicher, dass Sie einen aktuellen Linux-Kernel verwenden, das Programm "perf" verfügbar ist und nutzbare Aufrufgraphen erzeugt. + + + A performance analysis is still in progress. + Eine Leistungsanalyse läuft noch. + + + Start a performance analysis. + Eine Leistungsanalyse beginnen. + + + Enable All + Alle aktivieren + + + Disable All + Alle deaktivieren + + + Trace File (*.ptr) + Trace-Datei (*.ptr) + + + Show all addresses. + Alle Adressen anzeigen. + + + Aggregate by functions. + Nach Funktionen zusammenfassen. + + + Stop collecting profile data. + Aufzeichnen von Profiling-Daten beenden. + + + Collect profile data. + Profiling-Daten aufzeichnen. + + + Recorded: %1.%2s + Aufgezeichnet: %1,%2s + + + Processing delay: %1.%2s + Verarbeitungsverzögerung: %1,%2s + + + + PerfProfiler::Internal::PerfProfilerTraceFile + + Invalid data format + Ungültiges Datenformat + + + + PerfProfiler::Internal::PerfProfilerTraceManager + + Thread started + Thread gestartet + + + Thread ended + Thread beendet + + + Samples lost + Samples verloren + + + Failed to replay Perf events from stash file. + Perf-Ereignisse aus der Stash-Datei konnten nicht wieder abgespielt werden. + + + Loading Trace Data + Lade Trace-Daten + + + Saving Trace Data + Speichere Trace-Daten + + + + PerfProfiler::PerfRunConfigurationAspect + + Performance Analyzer Settings + Einstellungen zur Leistungsanalyse + + + + PerfProfiler::Internal::PerfTimelineModel + + sample collected + Sample aufgezeichnet + + + [unknown] + [unbekannt] + + + Details + Details + + + Timestamp + Zeitstempel + + + Guessed + Geschätzt + + + %1 frames + %1 Frames + + + Weight + Gewichtung + + + Period + Periode + + + System + System + + + Name + Name + + + Resource Usage + Ressourcenverbrauch + + + Resource Change + Änderung der Ressourcen + + + thread started + Thread gestartet + + + thread ended + Thread beendet + + + lost sample + Sample verloren + + + Duration + Dauer + + + Samples + Samples + + + Binary + Binärdatei + + + (guessed from context) + (aus dem Kontext geschlossen) + + + Address + Adresse + + + Source + Quelltext + + + Total Samples + Samples insgesamt + + + Total Unique Samples + Verschiedene Samples insgesamt + + + Resource Peak + Ressourcenspitzenwert + + + Resource Guesses + Ressourcenschätzungen + + From 312c4a14339655ca6c80de0f8444ccf54931f68c Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 15 Mar 2019 13:11:57 +0100 Subject: [PATCH 04/36] QbsProjectManager: Fix default build directory Commit a43331ba67 broke the build, and commit 4a3546f58a fixed it, but used the wrong function. Fixes: QTCREATORBUG-22142 Change-Id: I8a66bc8a4501f017726149544d73a728ab753e32 Reviewed-by: Eike Ziller --- src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp | 2 +- src/plugins/qbsprojectmanager/qbsprojectimporter.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index 21e24cffa80..43ac1608f6e 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -71,7 +71,7 @@ static FileName defaultBuildDirectory(const QString &projectFilePath, const Kit const QString projectName = QFileInfo(projectFilePath).completeBaseName(); ProjectMacroExpander expander(projectFilePath, projectName, k, bcName, buildType); QString projectDir = Project::projectDirectory(FileName::fromString(projectFilePath)).toString(); - QString buildPath = expander.expand(ProjectExplorerPlugin::defaultBuildDirectoryTemplate()); + QString buildPath = expander.expand(ProjectExplorerPlugin::buildDirectoryTemplate()); return FileName::fromString(FileUtils::resolvePath(projectDir, buildPath)); } diff --git a/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp b/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp index 7e3f37d0a88..b1d5adb8494 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp @@ -94,7 +94,7 @@ static QString buildDir(const QString &projectFilePath, const Kit *k) BuildConfiguration::Unknown); const QString projectDir = Project::projectDirectory(FileName::fromString(projectFilePath)).toString(); - const QString buildPath = expander.expand(ProjectExplorerPlugin::defaultBuildDirectoryTemplate()); + const QString buildPath = expander.expand(ProjectExplorerPlugin::buildDirectoryTemplate()); return FileUtils::resolvePath(projectDir, buildPath); } From 85dcfafe5ba27b4bfb20d9cf19dbbd340e081838 Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Fri, 15 Mar 2019 13:19:15 +0100 Subject: [PATCH 05/36] ClangFormat: Split formatting on save into a separate editor action Do not combine formatting on save with other action happening before it. Fixes: QTCREATORBUG-22145 Change-Id: I435115400b9bef1377fac992b4952d3701fca3ac Reviewed-by: Eike Ziller --- src/plugins/cppeditor/cppeditordocument.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/cppeditor/cppeditordocument.cpp b/src/plugins/cppeditor/cppeditordocument.cpp index 8a584915103..6da4ac43fc6 100644 --- a/src/plugins/cppeditor/cppeditordocument.cpp +++ b/src/plugins/cppeditor/cppeditordocument.cpp @@ -475,7 +475,7 @@ bool CppEditorDocument::save(QString *errorString, const QString &fileName, bool if (!editedRanges.empty()) { QTextCursor cursor(document()); - cursor.joinPreviousEditBlock(); + cursor.beginEditBlock(); indenter()->format(editedRanges); cursor.endEditBlock(); } From b29296e9e0265b9b9d6d0b17fa2b91408943a967 Mon Sep 17 00:00:00 2001 From: Michael Weghorn Date: Fri, 15 Mar 2019 12:45:15 +0100 Subject: [PATCH 06/36] Escape GDB pretty printer output Hexencode the output from GDB pretty printer, since Double quotes ('"') and potentially more characters need to be escaped in order for the variable values to be properly displayed in the variable pane while debugging. The 'utf8:1:0' parameter to 'putValue' (as compared to just 'utf8') makes sure that no extra quotes are displayed at the beginning and end of the value. Fixes: QTCREATORBUG-22135 Change-Id: I4ad9fdc75d8f389cc4cdd18d5da1eec242f8a329 Reviewed-by: hjk --- share/qtcreator/debugger/gdbbridge.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 295d178d585..6b37da43b78 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -141,7 +141,8 @@ class PlainDumper: d.putType(value.nativeValue.type.name) val = printer.to_string() if isinstance(val, str): - d.putValue(val) + # encode and avoid extra quotes ('"') at beginning and end + d.putValue(d.hexencode(val), 'utf8:1:0') elif sys.version_info[0] <= 2 and isinstance(val, unicode): d.putValue(val) else: # Assuming LazyString From 0dbdc520a4f8e318de8f070f4039c9f1a0082041 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 15 Mar 2019 11:22:00 +0100 Subject: [PATCH 07/36] Debugger: Fix some perspective selection issue Previously: - start combined debugging, stop anywhere - switch to QML debugger sub-perspective - switch to any other analyzer main perspective - switch back to debugger main perspective -> QML debugger was selected in the sub-perspective chooser combobox, but the visible views were the ones of the the C++ debugger. With this patch, the visible views match the selected QML debugger. Change-Id: I20e4bd6c07acb5e55c02f0a0ef042986f2e3f1f4 Reviewed-by: Christian Stenger --- src/plugins/debugger/debuggerengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 7399c99b7f9..5f89c07875e 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -554,7 +554,7 @@ void DebuggerEnginePrivate::setupViews() QTC_CHECK(!m_perspective); - m_perspective = new Perspective("Debugger.Perspective." + m_runId, + m_perspective = new Perspective("Debugger.Perspective." + m_runId + '.' + m_debuggerName, m_engine->displayName(), Debugger::Constants::PRESET_PERSPECTIVE_ID, m_debuggerName); From 85f91c45f7eaad1e72c5235b30c0932678761ba0 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 15 Mar 2019 11:21:11 +0100 Subject: [PATCH 08/36] Doc: Replace "Find Usages" with "Find References to Symbol Under Cursor" The string has been changed in the UI. Change-Id: Icb273cb1069827a3b94b6d211d80ef524f0f9b92 Reviewed-by: Eike Ziller --- doc/src/editors/creator-code-refactoring.qdoc | 8 +++++--- doc/src/howto/creator-keyboard-shortcuts.qdoc | 4 ++-- doc/src/howto/creator-only/qtcreator-faq.qdoc | 6 +++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/doc/src/editors/creator-code-refactoring.qdoc b/doc/src/editors/creator-code-refactoring.qdoc index f763923ec34..8120a0543cd 100644 --- a/doc/src/editors/creator-code-refactoring.qdoc +++ b/doc/src/editors/creator-code-refactoring.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -49,7 +49,8 @@ To find instances of a specific symbol in your Qt C++ project, place the cursor on the symbol in the editor and select \uicontrol Tools > - \uicontrol {C++} > \uicontrol {Find Usages} or press \key {Ctrl+Shift+U}. + \uicontrol {C++} > \uicontrol {Find References to Symbol Under Cursor} or + press \key {Ctrl+Shift+U}. \note You can also select \uicontrol Edit > \uicontrol {Find/Replace} > \uicontrol {Advanced Find} > \uicontrol {C++ Symbols} to search for @@ -63,7 +64,8 @@ To find instances of a specific QML type in a project, place the cursor on the type and select \uicontrol Tools > \uicontrol {QML/JS} > - \uicontrol {Find Usages} or press \key {Ctrl+Shift+U}. + \uicontrol {Find References to Symbol Under Cursor} or press + \key {Ctrl+Shift+U}. \section1 Viewing Search Results diff --git a/doc/src/howto/creator-keyboard-shortcuts.qdoc b/doc/src/howto/creator-keyboard-shortcuts.qdoc index 6c7908e5f3b..bf47b2dabf3 100644 --- a/doc/src/howto/creator-keyboard-shortcuts.qdoc +++ b/doc/src/howto/creator-keyboard-shortcuts.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -427,7 +427,7 @@ \li Alt+C, Alt+P \endif \row - \li Find usages + \li Find references to symbol under cursor \li Ctrl+Shift+U \row \li Follow symbol under cursor diff --git a/doc/src/howto/creator-only/qtcreator-faq.qdoc b/doc/src/howto/creator-only/qtcreator-faq.qdoc index fd41a869a11..712d81aedac 100644 --- a/doc/src/howto/creator-only/qtcreator-faq.qdoc +++ b/doc/src/howto/creator-only/qtcreator-faq.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -327,8 +327,8 @@ Typically, users also work on multiple classes or functions that are related, even though they are defined or declared in different files. - \QC provides two shortcuts for that: \key F2 to follow the symbol - and \key Ctrl+Shift+U to find usages. + \QC provides two shortcuts for that: \key F2 to follow the symbol under + cursor and \key Ctrl+Shift+U to find references to it. In addition, developers can: From f3922acc717f517c3cbcea45e57afef9b5181479 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 15 Mar 2019 13:55:28 +0100 Subject: [PATCH 09/36] Doc: Update options for moving between definitions and declarations Change-Id: I28ad8c157f4cdd1824c2c96f7253fd8a87262d21 Reviewed-by: Eike Ziller --- doc/src/editors/creator-coding-edit-mode.qdoc | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/doc/src/editors/creator-coding-edit-mode.qdoc b/doc/src/editors/creator-coding-edit-mode.qdoc index 5657b04c839..903bfc9b4b8 100644 --- a/doc/src/editors/creator-coding-edit-mode.qdoc +++ b/doc/src/editors/creator-coding-edit-mode.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -192,16 +192,25 @@ \uicontrol Options > \uicontrol {Text Editor} > \uicontrol Behavior > \uicontrol {Enable mouse navigation}. - You can also select the symbol and press \key F2, or right-click the symbol + There are several additional ways of moving between symbol definitions and + declarations. All the functions described below are also available from the + \uicontrol Tools > \uicontrol C++ menu. The functions supported for QML and + JavaScript code are available from the \uicontrol Tools > \uicontrol QML/JS + menu. + + You can select the symbol and press \key F2, or right-click the symbol and select \uicontrol {Follow Symbol Under Cursor} to move to its definition - or declaration. This feature is supported for namespaces, classes, - functions, variables, include statements, and macros. + or declaration. To follow the symbol in the next split, select + \uicontrol {Follow Symbol Under Cursor in Next Split}. Following symbols is + supported for namespaces, classes, functions, variables, include statements, + and macros. To switch between the definition and declaration of a function, place the cursor on either and press \key {Shift+F2} or right-click and select - \uicontrol {Switch Between Function Declaration/Definition}. For example, - this allows you to navigate from anywhere within a function body directly to - the function declaration. + \uicontrol {Switch Between Function Declaration/Definition} or + \uicontrol {Open Function Declaration/Definition in Next Split}. + For example, this allows you to navigate from anywhere within a function + body directly to the function declaration. Links are opened in the same split by default. To open links in the next split, prepend \key {Ctrl+E} to the shortcut. For example, press @@ -214,6 +223,11 @@ another split. If you change the default behavior, the shortcuts for opening link targets in the next split are used to open them in the current split. + To switch between C++ header and source files, right-click anywhere in a + file and select \uicontrol {Switch Header/Source} or + \uicontrol {Open Corresponding Header/Source in Next Split}. You can also + press \key F4 or \key {Ctrl+E,F4}, respectively. + \section1 Reparsing Externally Changed Files If source files are modified from outside \QC, the opened files will be From 4d5da2938a1f9be9469f31cabadf8f684c8bbe95 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 14 Mar 2019 12:21:47 +0100 Subject: [PATCH 10/36] Debugger: Move perspective saving to a time where mode is active It should not make and I do not observe a difference, but it seems the better thing to do. Change-Id: I1f1f9fba72c2b20f24ebde04cf4ec3711d77d476 Reviewed-by: Eike Ziller --- src/plugins/debugger/debuggermainwindow.cpp | 53 +++++++++++---------- src/plugins/debugger/debuggermainwindow.h | 3 +- src/plugins/debugger/debuggerplugin.cpp | 29 +++++------ 3 files changed, 42 insertions(+), 43 deletions(-) diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index 641b6a7f058..7d4175fc956 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -306,35 +306,36 @@ void DebuggerMainWindow::showStatusMessage(const QString &message, int timeoutMS theMainWindow->d->m_statusLabel->showStatusMessage(message, timeoutMS); } -void DebuggerMainWindow::onModeChanged(Core::Id mode) +void DebuggerMainWindow::enterDebugMode() { - if (mode == Debugger::Constants::MODE_DEBUG) { - theMainWindow->setDockActionsVisible(true); - Perspective *perspective = theMainWindow->d->m_currentPerspective; - if (!perspective) { - const QSettings *settings = ICore::settings(); - const QString lastPerspectiveId = settings->value(LAST_PERSPECTIVE_KEY).toString(); - perspective = Perspective::findPerspective(lastPerspectiveId); - // If we don't find a perspective with the stored name, pick any. - // This can happen e.g. when a plugin was disabled that provided - // the stored perspective, or when the save file was modified externally. - if (!perspective && !theMainWindow->d->m_perspectives.isEmpty()) - perspective = theMainWindow->d->m_perspectives.first(); - } - // There's at least the debugger preset perspective that should be found above. - QTC_ASSERT(perspective, return); - perspective->select(); - } else { - if (Perspective *perspective = theMainWindow->d->m_currentPerspective) - perspective->d->saveLayout(); + theMainWindow->setDockActionsVisible(true); + Perspective *perspective = theMainWindow->d->m_currentPerspective; + if (!perspective) { + const QSettings *settings = ICore::settings(); + const QString lastPerspectiveId = settings->value(LAST_PERSPECTIVE_KEY).toString(); + perspective = Perspective::findPerspective(lastPerspectiveId); + // If we don't find a perspective with the stored name, pick any. + // This can happen e.g. when a plugin was disabled that provided + // the stored perspective, or when the save file was modified externally. + if (!perspective && !theMainWindow->d->m_perspectives.isEmpty()) + perspective = theMainWindow->d->m_perspectives.first(); + } + // There's at least the debugger preset perspective that should be found above. + QTC_ASSERT(perspective, return); + perspective->select(); +} - theMainWindow->setDockActionsVisible(false); +void DebuggerMainWindow::leaveDebugMode() +{ + if (Perspective *perspective = theMainWindow->d->m_currentPerspective) + perspective->d->saveLayout(); - // Hide dock widgets manually in case they are floating. - for (QDockWidget *dockWidget : theMainWindow->dockWidgets()) { - if (dockWidget->isFloating()) - dockWidget->hide(); - } + theMainWindow->setDockActionsVisible(false); + + // Hide dock widgets manually in case they are floating. + for (QDockWidget *dockWidget : theMainWindow->dockWidgets()) { + if (dockWidget->isFloating()) + dockWidget->hide(); } } diff --git a/src/plugins/debugger/debuggermainwindow.h b/src/plugins/debugger/debuggermainwindow.h index 2b99e201a8e..98ff0a37d1d 100644 --- a/src/plugins/debugger/debuggermainwindow.h +++ b/src/plugins/debugger/debuggermainwindow.h @@ -126,7 +126,8 @@ public: static void doShutdown(); static void showStatusMessage(const QString &message, int timeoutMS); - static void onModeChanged(Core::Id mode); + static void enterDebugMode(); + static void leaveDebugMode(); static QWidget *centralWidgetStack(); void addSubPerspectiveSwitcher(QWidget *widget); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 8c9f0e96ffd..44ce9a03d82 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -696,7 +696,6 @@ public: int lineNumber, QMenu *menu); void toggleBreakpointHelper(); - void onModeChanged(Id mode); void updateDebugWithoutDeployMenu(); void startRemoteCdbSession(); @@ -1352,8 +1351,19 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments, addCdbOptionPages(&m_optionPages); m_optionPages.append(new LocalsAndExpressionsOptionsPage); - connect(ModeManager::instance(), &ModeManager::currentModeChanged, - this, &DebuggerPluginPrivate::onModeChanged); + connect(ModeManager::instance(), &ModeManager::currentModeAboutToChange, this, [] { + if (ModeManager::currentModeId() == MODE_DEBUG) + DebuggerMainWindow::leaveDebugMode(); + }); + + connect(ModeManager::instance(), &ModeManager::currentModeChanged, this, [](Id mode) { + if (mode == MODE_DEBUG) { + DebuggerMainWindow::enterDebugMode(); + if (IEditor *editor = EditorManager::currentEditor()) + editor->widget()->setFocus(); + } + }); + connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged, this, &DebuggerPluginPrivate::updateDebugWithoutDeployMenu); @@ -2283,19 +2293,6 @@ void DebuggerPlugin::extensionsInitialized() dd->extensionsInitialized(); } -void DebuggerPluginPrivate::onModeChanged(Id mode) -{ - DebuggerMainWindow::onModeChanged(mode); - // FIXME: This one gets always called, even if switching between modes - // different then the debugger mode. E.g. Welcome and Help mode and - // also on shutdown. - - if (mode == MODE_DEBUG) { - if (IEditor *editor = EditorManager::currentEditor()) - editor->widget()->setFocus(); - } -} - } // namespace Internal static bool buildTypeAccepted(QFlags toolMode, BuildConfiguration::BuildType buildType) From b96bd8b19d5b44d3380775e0734e784c3eb7ea5a Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 18 Mar 2019 11:24:30 +0100 Subject: [PATCH 11/36] App: Add a -temporarycleansettings (-tcs) command line option For people that are too lazy to think about currently unused throw-away temporary directory names. Change-Id: I0c52f3ea2b0dac4ef6cf3f9db646fd5107fa7977 Reviewed-by: Eike Ziller --- src/app/main.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index 0400f523c36..d946f1f201c 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -81,6 +81,7 @@ const char fixedOptionsC[] = " -client Attempt to connect to already running first instance\n" " -settingspath Override the default path where user settings are stored\n" " -installsettingspath Override the default path from where user-independent settings are read\n" +" -temporarycleansetting Use clean settings for debug or testing reasons\n" " -pid Attempt to connect to instance given by pid\n" " -block Block until editor is closed\n" " -pluginpath Add a custom search path for plugins\n"; @@ -94,6 +95,8 @@ const char CLIENT_OPTION[] = "-client"; const char SETTINGS_OPTION[] = "-settingspath"; const char INSTALL_SETTINGS_OPTION[] = "-installsettingspath"; const char TEST_OPTION[] = "-test"; +const char TEMPORARY_CLEAN_SETTINGS1[] = "-temporarycleansettings"; +const char TEMPORARY_CLEAN_SETTINGS2[] = "-tcs"; const char PID_OPTION[] = "-pid"; const char BLOCK_OPTION[] = "-block"; const char PLUGINPATH_OPTION[] = "-pluginpath"; @@ -348,6 +351,7 @@ struct Options std::vector appArguments; Utils::optional userLibraryPath; bool hasTestOption = false; + bool wantsCleanSettings = false; }; Options parseCommandLine(int argc, char *argv[]) @@ -372,6 +376,8 @@ Options parseCommandLine(int argc, char *argv[]) } else if (arg == USER_LIBRARY_PATH_OPTION && hasNext) { ++it; options.userLibraryPath = nextArg; + } else if (arg == TEMPORARY_CLEAN_SETTINGS1 || arg == TEMPORARY_CLEAN_SETTINGS2) { + options.wantsCleanSettings = true; } else { // arguments that are still passed on to the application if (arg == TEST_OPTION) options.hasTestOption = true; @@ -424,7 +430,7 @@ int main(int argc, char **argv) #endif QScopedPointer temporaryCleanSettingsDir; - if (options.settingsPath.isEmpty() && options.hasTestOption) { + if (options.settingsPath.isEmpty() && (options.hasTestOption || options.wantsCleanSettings)) { temporaryCleanSettingsDir.reset(new Utils::TemporaryDirectory("qtc-test-settings")); if (!temporaryCleanSettingsDir->isValid()) return 1; From 5a37385852ba55412912c19829f78c5c6ea6c1ad Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 18 Mar 2019 12:36:38 +0100 Subject: [PATCH 12/36] App: Fix typo in the -temporarycleansettings description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And mention the option in the ChangeLog. Change-Id: I7cce04ec1ad8b3f89b4a4f6c24f2a8d2da9381a0 Reviewed-by: André Hartmann Reviewed-by: Leena Miettinen Reviewed-by: Eike Ziller --- dist/changes-4.9.0.md | 1 + doc/src/howto/creator-only/creator-cli.qdoc | 5 +++++ src/app/main.cpp | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dist/changes-4.9.0.md b/dist/changes-4.9.0.md index 1397bfe03c2..8feed6ec314 100644 --- a/dist/changes-4.9.0.md +++ b/dist/changes-4.9.0.md @@ -14,6 +14,7 @@ General * Added option to run external tools in build or run environment of active project (QTCREATORBUG-18394, QTCREATORBUG-19892) * Improved selection colors in dark themes (QTCREATORBUG-18888) +* Added -temporarycleansettings (alias -tcs) command line option Editing diff --git a/doc/src/howto/creator-only/creator-cli.qdoc b/doc/src/howto/creator-only/creator-cli.qdoc index 8fec7376783..0e3114dad5a 100644 --- a/doc/src/howto/creator-only/creator-cli.qdoc +++ b/doc/src/howto/creator-only/creator-cli.qdoc @@ -151,6 +151,11 @@ \li Override the default path from where user-independent settings are read (for example written by the installer). + \row + \li -temporarycleansettings + \li Use clean settings for debug or testing reasons. The settings + will be deleted when \QC exits. + \row \li -color \li Core plugin: override the selected UI color. diff --git a/src/app/main.cpp b/src/app/main.cpp index d946f1f201c..27412c3d062 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -81,7 +81,7 @@ const char fixedOptionsC[] = " -client Attempt to connect to already running first instance\n" " -settingspath Override the default path where user settings are stored\n" " -installsettingspath Override the default path from where user-independent settings are read\n" -" -temporarycleansetting Use clean settings for debug or testing reasons\n" +" -temporarycleansettings Use clean settings for debug or testing reasons\n" " -pid Attempt to connect to instance given by pid\n" " -block Block until editor is closed\n" " -pluginpath Add a custom search path for plugins\n"; From a6712b75a356d4c3025b9662919449c933d22a6e Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 15 Mar 2019 16:25:21 +0100 Subject: [PATCH 13/36] Doc: Describe new context menu commands in Projects sidebar view "Expand All" and "Close All Files in Project" Change-Id: Ia96f5a91f5a74a575173cba14a85b345a4f340be Reviewed-by: Christian Kandeler --- doc/src/howto/creator-sidebar-views.qdocinc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/src/howto/creator-sidebar-views.qdocinc b/doc/src/howto/creator-sidebar-views.qdocinc index aaff3986dd8..f28e7411fbc 100644 --- a/doc/src/howto/creator-sidebar-views.qdocinc +++ b/doc/src/howto/creator-sidebar-views.qdocinc @@ -182,6 +182,9 @@ \li Add and remove subprojects. \endif \li Search from the selected directory. + \li Expand or collapse the tree view to show or hide all files and + folders. + \li Close all files in a project. \li Close projects. \endlist From 8294802e88ef5da6a9ba141690ff60c6e7b60f2a Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 18 Mar 2019 13:20:38 +0100 Subject: [PATCH 14/36] Doc: Run settings are now displayed in Application Output pane MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I249a0ad515e4548ea5b7d34a5c63cc0188b3e7ae Reviewed-by: André Hartmann Reviewed-by: Christian Kandeler --- doc/src/howto/creator-only/creator-ui.qdoc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/src/howto/creator-only/creator-ui.qdoc b/doc/src/howto/creator-only/creator-ui.qdoc index a9b6af4390e..6b80944189d 100644 --- a/doc/src/howto/creator-only/creator-ui.qdoc +++ b/doc/src/howto/creator-only/creator-ui.qdoc @@ -255,6 +255,11 @@ \image qtcreator-application-output.png + If you specify command line arguments in the run settings that are passed + to the application when running it, they are displayed as a part of the + application output. For more information, see + \l{Specifying Run Settings for Desktop Device Types}. + Select toolbar buttons to run applications, to attach the debugger to the running application, and to stop running or debugging. From ded650108c3b23c133f103b46adf2ae42af64b74 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 18 Mar 2019 13:04:47 +0100 Subject: [PATCH 15/36] Remove icon from UI Tour dialog Not needed, and can look ugly in certain setups Change-Id: I3d0a6774f660a58ce697c1072065c3801629945e Fixes: QTCREATORBUG-22132 Reviewed-by: Robert Loehning --- src/plugins/welcome/introductionwidget.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/welcome/introductionwidget.cpp b/src/plugins/welcome/introductionwidget.cpp index c4b194c2cec..e931975f6fe 100644 --- a/src/plugins/welcome/introductionwidget.cpp +++ b/src/plugins/welcome/introductionwidget.cpp @@ -51,7 +51,6 @@ void IntroductionWidget::askUserAboutIntroduction(QWidget *parent, QSettings *se return; auto messageBox = new CheckableMessageBox(parent); messageBox->setWindowTitle(tr("Take a UI Tour")); - messageBox->setIconPixmap(QMessageBox::standardIcon(QMessageBox::Question)); messageBox->setText( tr("Do you want to take a quick UI tour? This shows where the most important user " "interface elements are, and how they are used, and will only take a minute. You can " From a19be8b0919ac76f0d41463ca267aa6e2315cbd7 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 18 Mar 2019 12:25:30 +0100 Subject: [PATCH 16/36] Welcome: Add a -notour argument MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Helpful for a quick startup, e.g. in cases of forced clean settings. Change-Id: I5b247d77e1157448187453c71b6c2a07b77f3889 Reviewed-by: André Hartmann Reviewed-by: Eike Ziller --- src/plugins/welcome/Welcome.json.in | 6 ++++++ src/plugins/welcome/welcomeplugin.cpp | 26 ++++++++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/plugins/welcome/Welcome.json.in b/src/plugins/welcome/Welcome.json.in index 993c09f983a..8cdf438151d 100644 --- a/src/plugins/welcome/Welcome.json.in +++ b/src/plugins/welcome/Welcome.json.in @@ -14,6 +14,12 @@ ], \"Category\" : \"Core\", \"Description\" : \"Secondary Welcome Screen Plugin.\", + \"Arguments\" : [ + { + \"Name\" : \"-notour\", + \"Description\" : \"Do not ask for taking a UI tour on startup\" + } + ], \"Url\" : \"http://www.qt.io\", $$dependencyList } diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp index dea242a8108..88a8a1ace4a 100644 --- a/src/plugins/welcome/welcomeplugin.cpp +++ b/src/plugins/welcome/welcomeplugin.cpp @@ -132,16 +132,10 @@ class WelcomePlugin : public ExtensionSystem::IPlugin public: ~WelcomePlugin() final { delete m_welcomeMode; } - bool initialize(const QStringList &, QString *) final + bool initialize(const QStringList &arguments, QString *) final { m_welcomeMode = new WelcomeMode; - return true; - } - void extensionsInitialized() final - { - m_welcomeMode->initPlugins(); - ModeManager::activateMode(m_welcomeMode->id()); auto introAction = new QAction(tr("UI Tour"), this); connect(introAction, &QAction::triggered, this, []() { auto intro = new IntroductionWidget(ICore::mainWindow()); @@ -151,9 +145,21 @@ public: ActionContainer *mhelp = ActionManager::actionContainer(Core::Constants::M_HELP); if (QTC_GUARD(mhelp)) mhelp->addAction(cmd, Core::Constants::G_HELP_HELP); - connect(ICore::instance(), &ICore::coreOpened, this, []() { - IntroductionWidget::askUserAboutIntroduction(ICore::mainWindow(), ICore::settings()); - }, Qt::QueuedConnection); + + if (!arguments.contains("-notour")) { + connect(ICore::instance(), &ICore::coreOpened, this, []() { + IntroductionWidget::askUserAboutIntroduction(ICore::mainWindow(), + ICore::settings()); + }, Qt::QueuedConnection); + } + + return true; + } + + void extensionsInitialized() final + { + m_welcomeMode->initPlugins(); + ModeManager::activateMode(m_welcomeMode->id()); } WelcomeMode *m_welcomeMode = nullptr; From 098fa184bc092cec4d0d314c0cbf757f8fbd12d3 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 18 Mar 2019 12:25:30 +0100 Subject: [PATCH 17/36] Welcome: Add a -notour argument Helpful for a quick startup, e.g. in cases of forced clean settings. Change-Id: Iab247d77e1157448187453c71b6c2a07b77f3889 Reviewed-by: Leena Miettinen --- doc/src/howto/creator-only/creator-cli.qdoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/src/howto/creator-only/creator-cli.qdoc b/doc/src/howto/creator-only/creator-cli.qdoc index 0e3114dad5a..1982c00655d 100644 --- a/doc/src/howto/creator-only/creator-cli.qdoc +++ b/doc/src/howto/creator-only/creator-cli.qdoc @@ -170,6 +170,10 @@ \li Core plugin: apply a dark color theme to \QC, without using stylesheets. + \row + \li -notour + \li Welcome plugin: Skip the UI tour on startup. + \row \li -debug \li Debugger plugin: attach to the process with the given process From fe18585ad97556cc84b9857b79ca2370f546512f Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 18 Mar 2019 15:20:11 +0100 Subject: [PATCH 18/36] Update qbs submodule To HEAD of 1.13 branch. Change-Id: I17cd0f91b79c202fe409d93c14e895ecd1e3bb80 Reviewed-by: Joerg Bornemann --- src/shared/qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qbs b/src/shared/qbs index 50eb4d183cc..e0ada9c8aee 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 50eb4d183ccb526874cefe73c7f4c2129769aa4a +Subproject commit e0ada9c8aeef0a1adc2328c622c1a7aba6a93aff From a0a871f6e8370f760641b7404cb0751c84c985fe Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Fri, 15 Mar 2019 11:30:41 +0100 Subject: [PATCH 19/36] Remove wrong comma from German translation Change-Id: Iec1a6037634ef45d28db034ad6dd8c2d125520b4 Reviewed-by: Friedemann Kleint --- share/qtcreator/translations/qtcreator_de.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 1c7c577e0a0..038851e51d4 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -47368,7 +47368,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Find compile and application output here, as well as a list of configuration and build issues, and the panel for global searches. - Hier werden die Ausgaben der Kompilierung und Ausführung, eine Liste von Konfigurations- und Kompilierungsproblemen, sowie globale Suchergebnisse angezeigt. + Hier werden die Ausgaben der Kompilierung und Ausführung, eine Liste von Konfigurations- und Kompilierungsproblemen sowie globale Suchergebnisse angezeigt. Progress Indicator From 2b33d15bbc680f50ffab612236588a71c828a664 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Mon, 18 Mar 2019 18:50:35 +0100 Subject: [PATCH 20/36] Squish: Update menu entry for QML Debugger Console Change-Id: I0079bfcc22a0d45da72bd8b8ee2728a49d73ef4f Reviewed-by: Christian Stenger --- tests/system/suite_debugger/tst_qml_js_console/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system/suite_debugger/tst_qml_js_console/test.py b/tests/system/suite_debugger/tst_qml_js_console/test.py index 03c250dd6de..18987d050c2 100644 --- a/tests/system/suite_debugger/tst_qml_js_console/test.py +++ b/tests/system/suite_debugger/tst_qml_js_console/test.py @@ -146,7 +146,7 @@ def main(): mainRect = getQModelIndexStr("text='Rectangle'", rootIndex) doubleClick(waitForObject(mainRect)) if not object.exists(":DebugModeWidget_Debugger::Internal::ConsoleView"): - invokeMenuItem("Window", "Output Panes", "Debugger Console") + invokeMenuItem("Window", "Output Panes", "QML Debugger Console") progressBarWait() # color and float values have additional ZERO WIDTH SPACE (\u200b), different usage of # whitespaces inside expressions is part of the test From c212c3c72c7e775e6a50e519d15d548aefc34e21 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 19 Mar 2019 14:48:22 +0100 Subject: [PATCH 21/36] QmlDesigner: Workaround for regression in Qt Editing finished is emitted, when we show an error dialog, and the TextFiled looses focus. Even if the value did not change. This triggers a second error dialog and hangs on macOS. This is a regression from Qt 5.11 to Qt 5.12.x. The workaround is to check for the value change manually. Task-number: QDS-519 Change-Id: Ie8a3f342bc0b81941d07773d52947ad76ae27205 Reviewed-by: Tim Jenssen --- .../statesEditorQmlSources/StatesDelegate.qml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml index 0d2d46f867b..26d4c21cc90 100644 --- a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml +++ b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml @@ -154,11 +154,17 @@ Rectangle { __panel.visible = false } - onEditingFinished: { - if (text != delegateStateName) - statesEditorModel.renameState(internalNodeId, text) - } + property string oldValue + onEditingFinished: { + if (stateNameField.oldValue === stateNameField.text) + return + + stateNameField.oldValue = stateNameField.text + + if (stateNameField.text != delegateStateName) + statesEditorModel.renameState(internalNodeId, stateNameField.text) + } } Item { From 7a4d4c2c0e875eb64388995e5cb2cc04d2d2af68 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 19 Mar 2019 17:11:51 +0100 Subject: [PATCH 22/36] QmlDesigner.Timeline: Change method name The name setRecording() was missleading. The mehtod sets if a timeline is generally active or not. Change-Id: I3e7369ad21a06a032e231e71e838b3e531cfe848 Reviewed-by: Tim Jenssen --- .../qmldesignerextension/timelineeditor/timelinewidget.cpp | 6 +++--- .../qmldesignerextension/timelineeditor/timelinewidget.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelinewidget.cpp b/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelinewidget.cpp index 14780137e1d..8a58eb7dcf5 100644 --- a/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelinewidget.cpp +++ b/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelinewidget.cpp @@ -260,7 +260,7 @@ void TimelineWidget::connectToolbar() } } - setRecording(false); + setTimelineActive(false); } int TimelineWidget::adjacentFrame(const std::function &, qreal)> &fun) const @@ -393,7 +393,7 @@ void TimelineWidget::setupScrollbar(int min, int max, int current) void TimelineWidget::setTimelineId(const QString &id) { - setRecording(!m_timelineView->getTimelines().isEmpty()); + setTimelineActive(!m_timelineView->getTimelines().isEmpty()); if (m_timelineView->isAttached()) { m_toolbar->setCurrentTimeline(m_timelineView->modelNodeForId(id)); m_toolbar->setCurrentState(m_timelineView->currentState().name()); @@ -401,7 +401,7 @@ void TimelineWidget::setTimelineId(const QString &id) } } -void TimelineWidget::setRecording(bool b) +void TimelineWidget::setTimelineActive(bool b) { if (b) { m_toolbar->setVisible(true); diff --git a/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelinewidget.h b/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelinewidget.h index 8ee43098809..3fd299a88a7 100644 --- a/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelinewidget.h +++ b/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelinewidget.h @@ -68,7 +68,7 @@ public: void setupScrollbar(int min, int max, int current); void setTimelineId(const QString &id); - void setRecording(bool b); + void setTimelineActive(bool b); public slots: void selectionChanged(); From 05e68db284da9eadbd0ab05c95099987560a7e39 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 19 Mar 2019 17:12:31 +0100 Subject: [PATCH 23/36] QmlDesigner.Timeline: Avoid phantom timeline Task-number: QDS-285 Change-Id: I9f642363ea50a3a5120ff76b0b5b99e2396bd863 Reviewed-by: Tim Jenssen --- .../qmldesignerextension/timelineeditor/timelineview.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelineview.cpp b/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelineview.cpp index 0428401013d..faf18972ebd 100644 --- a/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelineview.cpp +++ b/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelineview.cpp @@ -87,9 +87,11 @@ void TimelineView::nodeAboutToBeRemoved(const ModelNode &removedNode) toolBar->removeTimeline(QmlTimeline(removedNode)); QString currentId = toolBar->currentTimelineId(); + removedNode.setAuxiliaryData("removed", true); + if (currentId.isEmpty()) m_timelineWidget->graphicsScene()->clearTimeline(); - else if (lastId != currentId) + if (lastId != currentId) m_timelineWidget->setTimelineId(currentId); } } @@ -397,7 +399,7 @@ QList TimelineView::getTimelines() const return timelines; for (const ModelNode &modelNode : allModelNodes()) { - if (QmlTimeline::isValidQmlTimeline(modelNode)) { + if (QmlTimeline::isValidQmlTimeline(modelNode) && !modelNode.hasAuxiliaryData("removed")) { timelines.append(modelNode); } } From 5c5ae209f0333cf7fefd855135d4fef85ace17eb Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Tue, 19 Mar 2019 17:27:10 +0100 Subject: [PATCH 24/36] German translation: wenigstens -> mindestens Change-Id: I723493fcd48e9e1b0405ba764516efb07c0ff709 Fixes: QTCREATORBUG-22172 Reviewed-by: Oswald Buddenhagen Reviewed-by: Friedemann Kleint --- share/qtcreator/translations/qtcreator_de.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 038851e51d4..9ae78512074 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -3376,8 +3376,8 @@ markers in the source code editor. <at least %n items> - <wenigstens ein Element> - <wenigstens %n Elemente> + <mindestens ein Element> + <mindestens %n Elemente> From 89c86cee8d30f6492b587b7e57273825fb8200a4 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 19 Mar 2019 15:00:57 +0100 Subject: [PATCH 25/36] Squish: Add exception logging Might help to figure out a problem on the build machines. Change-Id: I1483a508d490e3cd4312d91c62d3e4a2891d0b10 Reviewed-by: Robert Loehning --- tests/system/shared/editor_utils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/system/shared/editor_utils.py b/tests/system/shared/editor_utils.py index a6cf0cea4cb..1afd10bdc93 100644 --- a/tests/system/shared/editor_utils.py +++ b/tests/system/shared/editor_utils.py @@ -85,6 +85,8 @@ def menuVisibleAtEditor(editor, menuInList): menuInList[0] = menu return success except: + t, v = sys.exc_info()[:2] + test.log("Exception: %s" % str(t), str(v)) return False # this function checks whether the given global point (QPoint) From 25f5c26306b3b12928d71a862c9189c492fbe551 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 19 Mar 2019 15:00:35 +0100 Subject: [PATCH 26/36] Squish: Remove unreachable code Change-Id: Idc9ced7cbac247cd9333e56be6f78bab70b542f9 Reviewed-by: Robert Loehning --- tests/system/shared/editor_utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/system/shared/editor_utils.py b/tests/system/shared/editor_utils.py index 1afd10bdc93..d59280f161b 100644 --- a/tests/system/shared/editor_utils.py +++ b/tests/system/shared/editor_utils.py @@ -78,8 +78,6 @@ def menuVisibleAtEditor(editor, menuInList): return True return False menu = waitForObject("{type='QMenu' unnamed='1' visible='1'}", 500) - if platform.system() == 'Darwin': - menu.activateWindow() success = menu.visible and widgetContainsPoint(editor, menu.mapToGlobal(QPoint(0, 0))) if success: menuInList[0] = menu From 220ca90b3e3be1dc700a2ac9a915701c144aedc7 Mon Sep 17 00:00:00 2001 From: Xiaofeng Wang Date: Sat, 16 Mar 2019 22:07:02 +0800 Subject: [PATCH 27/36] ProjectExplorer: level-up m_openTerminalHere action MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With Q_OS_UNIX && QT < 5.10, the m_openTerminalHereBuildEnv and m_openTerminalHereRunEnv is disabled, there is only an action of m_openTerminalHere in the m_openTerminalMenu, so let's just level it up. Change-Id: Ia37364dca7f80cedd02ef89de86b6d66c70cd4af Reviewed-by: Eike Ziller Reviewed-by: Christian Stenger Reviewed-by: André Hartmann Reviewed-by: Orgad Shaneh --- src/plugins/projectexplorer/projectexplorer.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index d458c6bd7f8..160b0cb65eb 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -807,11 +807,13 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er mfileContextMenu->appendGroup(Constants::G_PROJECT_TREE); // Open Terminal submenu +#if !defined(Q_OS_UNIX) || QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) ActionContainer * const openTerminal = ActionManager::createMenu(ProjectExplorer::Constants::M_OPENTERMINALCONTEXT); openTerminal->setOnAllDisabledBehavior(ActionContainer::Show); dd->m_openTerminalMenu = openTerminal->menu(); dd->m_openTerminalMenu->setTitle(FileUtils::msgTerminalAction()); +#endif // "open with" submenu ActionContainer * const openWith = @@ -879,6 +881,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er mfileContextMenu->addAction(cmd, Constants::G_FILE_OPEN); mfolderContextMenu->addAction(cmd, Constants::G_FOLDER_FILES); +#if !defined(Q_OS_UNIX) || QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) // Open Terminal Here menu mfileContextMenu->addMenu(openTerminal, Constants::G_FILE_OPEN); mfolderContextMenu->addMenu(openTerminal, Constants::G_FOLDER_FILES); @@ -887,6 +890,14 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er cmd = ActionManager::registerAction(dd->m_openTerminalHere, Constants::OPENTERMINALHERE, projecTreeContext); dd->m_openTerminalMenu->addAction(dd->m_openTerminalHere); +#else + dd->m_openTerminalHere = new QAction(FileUtils::msgTerminalAction(), this); + cmd = ActionManager::registerAction(dd->m_openTerminalHere, Constants::OPENTERMINALHERE, + projecTreeContext); + + mfileContextMenu->addAction(cmd, Constants::G_FILE_OPEN); + mfolderContextMenu->addAction(cmd, Constants::G_FOLDER_FILES); +#endif dd->m_openTerminalHereBuildEnv = new QAction(tr("Build Environment"), this); dd->m_openTerminalHereRunEnv = new QAction(tr("Run Environment"), this); From e91edfe34d88f2b2549dbcf194a7e69c963d4737 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 20 Mar 2019 12:17:48 +0100 Subject: [PATCH 28/36] QmlDesigner: Make error message selectable There is no immediate solution for the status bar, but texts from status bars are generally not selectable and cannot be copied. Task-number: QDS-518 Change-Id: Ide699c7ad26642ac716ab4ce7b315263d60facae Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/documentwarningwidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qmldesigner/documentwarningwidget.cpp b/src/plugins/qmldesigner/documentwarningwidget.cpp index a159e12f869..bab42723957 100644 --- a/src/plugins/qmldesigner/documentwarningwidget.cpp +++ b/src/plugins/qmldesigner/documentwarningwidget.cpp @@ -62,6 +62,7 @@ DocumentWarningWidget::DocumentWarningWidget(QWidget *parent) m_headerLabel->setFont(boldFont); m_messageLabel->setForegroundRole(QPalette::ToolTipText); m_messageLabel->setWordWrap(true); + m_messageLabel->setTextInteractionFlags(Qt::TextSelectableByMouse); m_ignoreWarningsCheckBox->setText(tr("Always ignore these warnings about features " "not supported by Qt Quick Designer.")); From 9e3b6d77e1bbd396e0527afe85fa9b52cc4609a4 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 19 Mar 2019 17:53:26 +0100 Subject: [PATCH 29/36] QmlDesigner.Timeline: Add internal flag to aux property The node is removed anyway, but aux properties that are not suppossed to be persistent should have this flag. Change-Id: I67fcfdeab21c66f4121fb8a03acc17538bbc7b89 Reviewed-by: Thomas Hartmann --- .../qmldesignerextension/timelineeditor/timelineview.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelineview.cpp b/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelineview.cpp index faf18972ebd..e063f1fced2 100644 --- a/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelineview.cpp +++ b/src/plugins/qmldesigner/qmldesignerextension/timelineeditor/timelineview.cpp @@ -87,7 +87,7 @@ void TimelineView::nodeAboutToBeRemoved(const ModelNode &removedNode) toolBar->removeTimeline(QmlTimeline(removedNode)); QString currentId = toolBar->currentTimelineId(); - removedNode.setAuxiliaryData("removed", true); + removedNode.setAuxiliaryData("removed@Internal", true); if (currentId.isEmpty()) m_timelineWidget->graphicsScene()->clearTimeline(); @@ -399,7 +399,7 @@ QList TimelineView::getTimelines() const return timelines; for (const ModelNode &modelNode : allModelNodes()) { - if (QmlTimeline::isValidQmlTimeline(modelNode) && !modelNode.hasAuxiliaryData("removed")) { + if (QmlTimeline::isValidQmlTimeline(modelNode) && !modelNode.hasAuxiliaryData("removed@Internal")) { timelines.append(modelNode); } } From 4c746531d8be01ee58bcae721cd7618e919b7cf2 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 20 Mar 2019 12:56:12 +0100 Subject: [PATCH 30/36] QmlDesigner: Add support for Dialog Change-Id: I8a2972f80ae79835018870eda7b11a817353bf94 Task-numbner: QTCREATORBUG-22120 Reviewed-by: Tim Jenssen --- .../qml/qmlpuppet/mockfiles/Dialog.qml | 51 +++++++++++++++++++ .../instances/objectnodeinstance.cpp | 4 +- share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc | 1 + .../stateseditor/stateseditorview.cpp | 1 + .../designercore/metainfo/nodemetainfo.cpp | 1 + .../designercore/model/qmlitemnode.cpp | 3 ++ 6 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 share/qtcreator/qml/qmlpuppet/mockfiles/Dialog.qml diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/Dialog.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/Dialog.qml new file mode 100644 index 00000000000..13eed9be1e3 --- /dev/null +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/Dialog.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +import QtQuick 2.1 + +Rectangle { + property string title + + property var clickedButton + + property var modality + property var standardButtons + + property alias contentItem: contentArea + + property int maximumWidth: 0 + property int minimumWidth: 0 + + property int maximumHeight: 0 + property int minimumHeight: 0 + + Item { + id: contentArea + anchors.top: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.top + } +} diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp index dd4a0adbd10..5f88683ffa2 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp @@ -622,10 +622,12 @@ QObject *ObjectNodeInstance::createPrimitive(const QString &typeName, int majorN || typeName == "QtQuick.Controls/Drawer" || typeName == "QtQuick.Controls/Dialog" || typeName == "QtQuick.Controls/Menu" + || typeName == "QtQuick.Controls/Pane" || typeName == "QtQuick.Controls/ToolTip") polishTypeName = "QtQuick/Item"; - const QHash mockHash = {{"QtQuick.Controls/SwipeView","qrc:/qtquickplugin/mockfiles/SwipeView.qml"}}; + const QHash mockHash = {{"QtQuick.Controls/SwipeView","qrc:/qtquickplugin/mockfiles/SwipeView.qml"}, + {"QtQuick.Dialogs/Dialog","qrc:/qtquickplugin/mockfiles/Dialog.qml"}}; QObject *object = nullptr; diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc b/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc index 4e02e48869e..5b4d0c39a29 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc @@ -6,5 +6,6 @@ mockfiles/Window.qml mockfiles/SwipeView.qml mockfiles/GenericBackend.qml + mockfiles/Dialog.qml diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index e7d930a82b1..67f20b8461f 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -204,6 +204,7 @@ void StatesEditorView::checkForWindow() { if (m_statesEditorWidget) m_statesEditorWidget->showAddNewStatesButton(!rootModelNode().metaInfo().isSubclassOf("QtQuick.Window.Window") + && !rootModelNode().metaInfo().isSubclassOf("QtQuick.Dialogs.Dialog") && !rootModelNode().metaInfo().isSubclassOf("QtQuick.Window.Popup")); } diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 40d21beb1a9..7f2279ce4c7 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -1550,6 +1550,7 @@ bool NodeMetaInfo::isGraphicalItem() const { return isSubclassOf("QtQuick.Item") || isSubclassOf("QtQuick.Window.Window") + || isSubclassOf("QtQuick.Dialogs.Dialog") || isSubclassOf("QtQuick.Controls.Popup"); } diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 6e5ed46d0f9..5ff63f1f1f3 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -54,6 +54,9 @@ bool QmlItemNode::isItemOrWindow(const ModelNode &modelNode) if (modelNode.metaInfo().isSubclassOf("QtQuick.Window.Window") && modelNode.isRootNode()) return true; + if (modelNode.metaInfo().isSubclassOf("QtQuick.Dialogs.Dialog") && modelNode.isRootNode()) + return true; + if (modelNode.metaInfo().isSubclassOf("QtQuick.Controls.Popup")) return true; From 75043690e3bca1784bc3a72fbeb88087635ca515 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 6 Mar 2019 16:42:28 +0100 Subject: [PATCH 31/36] QmlDesigner: Add QTC_ASSERT This might avoid a rare crash on macOS. Change-Id: I9ea7be826aeaaf571041c0f729bb1fc691e46687 Reviewed-by: Tim Jenssen --- .../qmldesigner/components/itemlibrary/itemlibrarywidget.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 7d2f8db95ca..d4dea983c0e 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -318,6 +318,8 @@ void ItemLibraryWidget::setupImportTagWidget() void ItemLibraryWidget::updateModel() { + QTC_ASSERT(m_itemLibraryModel, return); + m_itemLibraryModel->update(m_itemLibraryInfo.data(), m_model.data()); updateImports(); updateSearch(); From 613e15dba6a92b56d05c2e76c43cb682ceaa5952 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 20 Mar 2019 13:20:00 +0100 Subject: [PATCH 32/36] QmlDesigner: Remove redundancy Remove redudant occurrences of QtQuick.Window.Window/QtQuick.Dialogs.Dialog Change-Id: I6d3c37f2badfc90d53993d55679e1bc97d70705f Reviewed-by: Tim Jenssen --- .../components/stateseditor/stateseditorview.cpp | 10 ++++------ .../components/stateseditor/stateseditorview.h | 2 +- .../qmldesigner/designercore/model/qmlitemnode.cpp | 8 +------- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index 67f20b8461f..1d9f1eec84f 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -72,7 +72,7 @@ WidgetInfo StatesEditorView::widgetInfo() void StatesEditorView::rootNodeTypeChanged(const QString &/*type*/, int /*majorVersion*/, int /*minorVersion*/) { - checkForWindow(); + checkForStatesAvailability(); } void StatesEditorView::toggleStatesViewExpanded() @@ -200,12 +200,10 @@ void StatesEditorView::duplicateCurrentState() setCurrentState(newState); } -void StatesEditorView::checkForWindow() +void StatesEditorView::checkForStatesAvailability() { if (m_statesEditorWidget) - m_statesEditorWidget->showAddNewStatesButton(!rootModelNode().metaInfo().isSubclassOf("QtQuick.Window.Window") - && !rootModelNode().metaInfo().isSubclassOf("QtQuick.Dialogs.Dialog") - && !rootModelNode().metaInfo().isSubclassOf("QtQuick.Window.Popup")); + m_statesEditorWidget->showAddNewStatesButton(rootModelNode().metaInfo().isSubclassOf("QtQuick.Item")); } void StatesEditorView::setCurrentState(const QmlModelState &state) @@ -315,7 +313,7 @@ void StatesEditorView::modelAttached(Model *model) if (m_statesEditorWidget) m_statesEditorWidget->setNodeInstanceView(nodeInstanceView()); - checkForWindow(); + checkForStatesAvailability(); resetModel(); } diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h index 155029ede06..2f8bc566507 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h @@ -93,7 +93,7 @@ private: void resetModel(); void addState(); void duplicateCurrentState(); - void checkForWindow(); + void checkForStatesAvailability(); private: QPointer m_statesEditorModel; diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 5ff63f1f1f3..f02ca1ead73 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -51,13 +51,7 @@ bool QmlItemNode::isItemOrWindow(const ModelNode &modelNode) if (modelNode.metaInfo().isSubclassOf("QtQuick.Item")) return true; - if (modelNode.metaInfo().isSubclassOf("QtQuick.Window.Window") && modelNode.isRootNode()) - return true; - - if (modelNode.metaInfo().isSubclassOf("QtQuick.Dialogs.Dialog") && modelNode.isRootNode()) - return true; - - if (modelNode.metaInfo().isSubclassOf("QtQuick.Controls.Popup")) + if (modelNode.metaInfo().isGraphicalItem() && modelNode.isRootNode()) return true; return false; From 72e3a803d402924952f83794cbadf43c1b482aac Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 20 Mar 2019 15:14:40 +0100 Subject: [PATCH 33/36] Doc: Describe forwarding command line flags to Clang code model ...for generic projects. Change-Id: Icf0a159dffba7870a584174a013dafcf3c0c67ee Reviewed-by: Marco Bubke --- .../creator-only/creator-projects-generic.qdoc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/src/projects/creator-only/creator-projects-generic.qdoc b/doc/src/projects/creator-only/creator-projects-generic.qdoc index 15567d67a19..2a387de1a71 100644 --- a/doc/src/projects/creator-only/creator-projects-generic.qdoc +++ b/doc/src/projects/creator-only/creator-projects-generic.qdoc @@ -71,6 +71,10 @@ \li .creator + \li \l{Forwarding Flags to Clang Code Model}{.cflags} + + \li \l{Forwarding Flags to Clang Code Model}{.cxxflags} + \endlist \endlist @@ -126,6 +130,14 @@ #define NAME value \endcode + \section1 Forwarding Flags to Clang Code Model + + The \c {.cxxflags} and \c {.cflags} files contain command line flags for the + Clang code model, one flag per line. + + For example, specify the \c {-std=c++11} to set the language version + for parsing as C++11. + \section1 Providing Deployment Information If you want to run your application on an embedded Linux device, you first need to From e8305b7e99e0e14caeb1854c2592b390586c7c78 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 20 Mar 2019 16:14:42 +0100 Subject: [PATCH 34/36] Doc: Describe synchronizing Include Hierarchy view with editor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2d77b5d92922235a5c847bd1ee10429eb467a647 Reviewed-by: André Hartmann --- doc/src/howto/creator-sidebar-views.qdocinc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/src/howto/creator-sidebar-views.qdocinc b/doc/src/howto/creator-sidebar-views.qdocinc index f28e7411fbc..5269e5f0ee2 100644 --- a/doc/src/howto/creator-sidebar-views.qdocinc +++ b/doc/src/howto/creator-sidebar-views.qdocinc @@ -315,5 +315,8 @@ the current file, right-click in the editor and select \uicontrol {Open Include Hierarchy} or press \key {Ctrl+Shift+I}. + To keep the view synchronized with the file currently opened in the editor, + select \uicontrol {Synchronize with Editor}. + //! [include hierarchy view] */ From 52ec46345b9ab52ab355ed10fa8973828a1b52ba Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 19 Mar 2019 09:39:50 +0100 Subject: [PATCH 35/36] Android: Use QPalette::window() instead of background() To avoid deprecation warnings. Change-Id: I802375afa8b0e717ab16fb209e719348900d0604 Reviewed-by: Eike Ziller --- src/plugins/android/androiddevicedialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/android/androiddevicedialog.cpp b/src/plugins/android/androiddevicedialog.cpp index db70967727d..529b2a066a3 100644 --- a/src/plugins/android/androiddevicedialog.cpp +++ b/src/plugins/android/androiddevicedialog.cpp @@ -131,7 +131,7 @@ public: palette.setCurrentColorGroup(QPalette::Active); bool selected = opt.state & QStyle::State_Selected; QColor backgroundColor = selected ? palette.highlight().color() - : palette.background().color(); + : palette.window().color(); painter->setBrush(backgroundColor); painter->drawRect(0, opt.rect.top(), opt.rect.width() + opt.rect.left(), opt.rect.height()); From 88855cefcd750138892c126ca15177d9bd81dcb4 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 20 Mar 2019 16:57:39 +0100 Subject: [PATCH 36/36] Doc: Describe changes in ClangFormat plugin Recursively searches for a .clang-format file from project folder up to root. The settings are now displayed on the C++ page if the plugin is enabled. Change-Id: I15d24478b4d2e8063bef83a314f2299b020027ba Reviewed-by: Marco Bubke --- doc/images/qtcreator-clang-format-options.png | Bin 49932 -> 108052 bytes .../qtcreator-code-style-clang-format.png | Bin 0 -> 61275 bytes doc/src/editors/creator-clangformat.qdocinc | 53 +++++++++++++----- 3 files changed, 38 insertions(+), 15 deletions(-) create mode 100644 doc/images/qtcreator-code-style-clang-format.png diff --git a/doc/images/qtcreator-clang-format-options.png b/doc/images/qtcreator-clang-format-options.png index cce8d09fa4f7c99b34569fd22fde7eb758bffb2b..63855cd1c8239de0bf7efd6b91d8a79815135a77 100644 GIT binary patch literal 108052 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

c7)z%vzF~CIso1k?`~I!H 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 diff --git a/doc/images/qtcreator-code-style-clang-format.png b/doc/images/qtcreator-code-style-clang-format.png new file mode 100644 index 0000000000000000000000000000000000000000..f44c0ea47b7ead81b72b94f2749d7d70ad7a4520 GIT binary patch literal 61275 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%0Dr7XJ=^-QsjA-JsH_!ch^_ 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

Cm-#kC>LLAI~y4pZD+K{{N<%w)B~A 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 literal 0 HcmV?d00001 diff --git a/doc/src/editors/creator-clangformat.qdocinc b/doc/src/editors/creator-clangformat.qdocinc index 3ba9984f9f7..8a4b7573992 100644 --- a/doc/src/editors/creator-clangformat.qdocinc +++ b/doc/src/editors/creator-clangformat.qdocinc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -26,29 +26,56 @@ /*! //! [clang format] - \section2 Automatic Indentation + \section2 Automatic Formatting and Indentation The experimental Clang Format plugin uses the \l{https://clang.llvm.org/docs/LibFormat.html}{LibFormat} - library for automatic indentation. + library for automatic formatting and indentation. To enable the plugin, select \uicontrol Help > \uicontrol {About Plugins} > \uicontrol {C++} > \uicontrol {ClangFormat}. Then restart \QC to load the plugin. - To specify global settings for Clang Format: + \note If you enable the plugin, do not use the \l{Beautifying Source Code} + {Beautifier}, because combining the two can provide unexpected results. + + You can use Clang Format to enforce a coding style for a project or the + whole organization. Create a \c {.clang-format} file that contains the + \l{https://clang.llvm.org/docs/ClangFormatStyleOptions.html} + {Clang Format Style Options} to use and save it in the root folder of the + project or one of its parent folders. The plugin searches for the Clang + format file recursively from the directory that contains the source file + up to the file system root. + + To specify settings for automatic formatting and indentation: \list 1 - \li Select \uicontrol Tools > \uicontrol Options > \uicontrol {C++} > - \uicontrol {Clang Format}. + \li Select \uicontrol Tools > \uicontrol Options > \uicontrol {C++}. \image qtcreator-clang-format-options.png "C++ Clang Format options" - \li Double-click a value to modify it. + \li Select the \uicontrol {Format instead of indenting} check box to + use the \key {Ctrl+I} keyboard shortcut to format code instead of + indenting it. + \li Select the \uicontrol {Format while typing} check box to apply the + formatting while you type code. + \li Select the \uicontrol {Format edited code on file save} check box + to apply the formatting to the edited code when you save the file. + \li Select the \uicontrol {Override Clang Format configuration file} + check box to create a local configuration file that overrides the + one stored in the file system. + \note This is not recommended, because it defeats the purpose of + a Clang format file. + \li To modify the values in the file, select them in the left-side + column and enter the new values. + \li To view examples of the new values in the right-hand column, select + \uicontrol Apply. \endlist - You can also specify formatting separately for each project. - Create a \c {.clang-format} file that contains the - \l{https://clang.llvm.org/docs/ClangFormatStyleOptions.html} - {Clang Format Style Options} to use and save it in the project directory. + To override the \c {.clang-format} file for a project, select + \uicontrol Projects > \uicontrol {Project Settings} > + \uicontrol {Code Style} > + \uicontrol {Override Clang Format configuration file}. + + \image qtcreator-code-style-clang-format.png You can create \c {.clang-format} files that contain the configuration options of a certain predefined style from the command line. For example, @@ -58,9 +85,5 @@ clang-format -style=llvm -dump-config > .clang-format \endcode - To view the \c {.clang-format} file for a project, select - \uicontrol Projects > \uicontrol {Project Settings} > - \uicontrol {Clang Format}. - //! [clang format] */