diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 59f68968298abe6f602cc0185e7b650c88c0f26d..c657df160584eda2c252ae272bc09b1f6b54b059 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -52,7 +52,7 @@ <message> <location/> <source>Filter:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Filter:</translation> </message> <message> <location/> @@ -75,7 +75,7 @@ <message> <location/> <source>Filter:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Filter:</translation> </message> <message> <location/> @@ -106,12 +106,12 @@ <message> <location/> <source>Bookmark:</source> - <translation type="unfinished"></translation> + <translation>Lesezeichen:</translation> </message> <message> <location/> <source>Add in Folder:</source> - <translation type="unfinished"></translation> + <translation>Im Ordner:</translation> </message> <message> <location/> @@ -121,7 +121,7 @@ <message> <location/> <source>New Folder</source> - <translation type="unfinished"></translation> + <translation>Neuer Ordner</translation> </message> <message> <location filename="../../../src/shared/help/bookmarkmanager.cpp" line="+173"/> @@ -135,12 +135,12 @@ <message> <location line="-69"/> <source>Delete Folder</source> - <translation type="unfinished"></translation> + <translation>Ordner löschen</translation> </message> <message> <location line="+1"/> <source>Rename Folder</source> - <translation type="unfinished"></translation> + <translation>Ordner umbenennen</translation> </message> </context> <context> @@ -149,7 +149,7 @@ <location line="+404"/> <location line="+1"/> <source>Bookmark</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Lesezeichen</translation> </message> <message> <location line="+45"/> @@ -159,66 +159,70 @@ <message> <location line="+36"/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> <message> - <location line="+1"/> <source>You are going to delete a Folder, this will also<br>remove it's content. Are you sure to continue?</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Beim Löschen eines Ordners wird auch der Inhalt gelöscht.<br>Möchten Sie trotzdem fortsetzen?</translation> </message> <message> - <location line="+109"/> + <location line="+110"/> <location line="+9"/> <source>New Folder</source> - <translation type="unfinished"></translation> + <translation>Neuer Ordner</translation> + </message> + <message> + <location line="-118"/> + <source>You are going to delete a Folder which will also<br>remove its content. Are you sure to continue?</source> + <translation>Beim Löschen eines Ordners wird auch dessen Inhalt gelöscht.<br>Möchten Sie trotzdem fortsetzen?</translation> </message> </context> <context> <name>BookmarkWidget</name> <message> - <location line="-437"/> + <location line="-319"/> <source>Delete Folder</source> - <translation type="unfinished"></translation> + <translation>Ordner löschen</translation> </message> <message> <location line="+1"/> <source>Rename Folder</source> - <translation type="unfinished"></translation> + <translation>Ordner umbenennen</translation> </message> <message> <location line="+2"/> <source>Show Bookmark</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Lesezeichen anzeigen</translation> </message> <message> <location line="+1"/> <source>Show Bookmark in New Tab</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Lesezeichen in neuem Reiter anzeigen</translation> </message> <message> <location line="+3"/> <source>Delete Bookmark</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Lesezeichen löschen</translation> </message> <message> <location line="+1"/> <source>Rename Bookmark</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Lesezeichen umbenennen</translation> </message> <message> <location line="+38"/> <source>Filter:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Filter:</translation> </message> <message> <location line="+23"/> <source>Add</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Hinzufügen</translation> </message> <message> <location line="+9"/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> </context> <context> @@ -231,12 +235,12 @@ <message> <location line="+23"/> <source>&Remove Bookmark</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Lesezeichen &Löschen</translation> </message> <message> <location line="+1"/> <source>Remove all Bookmarks</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Alle Lesezeichen löschen</translation> </message> </context> <context> @@ -244,13 +248,13 @@ <message> <location filename="../../../src/plugins/bookmarks/bookmarksplugin.cpp" line="+82"/> <source>&Bookmarks</source> - <translation type="unfinished"></translation> + <translation>&Lesezeichen</translation> </message> <message> <location line="+4"/> <location line="+79"/> <source>Toggle Bookmark</source> - <translation type="unfinished"></translation> + <translation>Lesezeichen umschalten</translation> </message> <message> <location line="-75"/> @@ -265,17 +269,17 @@ <message> <location line="+10"/> <source>Move Up</source> - <translation type="unfinished"></translation> + <translation>Nach oben</translation> </message> <message> <location line="+5"/> <source>Move Down</source> - <translation type="unfinished"></translation> + <translation>Nach unten</translation> </message> <message> <location line="+10"/> <source>Previous Bookmark</source> - <translation type="unfinished"></translation> + <translation>Vorhergehendes Lesezeichen</translation> </message> <message> <location line="+3"/> @@ -290,7 +294,7 @@ <message> <location line="+5"/> <source>Next Bookmark</source> - <translation type="unfinished"></translation> + <translation>Nächstes Lesezeichen</translation> </message> <message> <location line="+3"/> @@ -305,12 +309,12 @@ <message> <location line="+10"/> <source>Previous Bookmark In Document</source> - <translation type="unfinished"></translation> + <translation>Vorhergehendes Lesezeichen im Dokument</translation> </message> <message> <location line="+5"/> <source>Next Bookmark In Document</source> - <translation type="unfinished"></translation> + <translation>Nächstes Lesezeichen im Dokument</translation> </message> </context> <context> @@ -355,7 +359,7 @@ <context> <name>CMakeProjectManager::Internal::CMakeRunConfiguration</name> <message> - <location filename="../../../src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp" line="+132"/> + <location filename="../../../src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp" line="+133"/> <source>Arguments:</source> <translation type="unfinished"></translation> </message> @@ -396,7 +400,7 @@ <context> <name>CMakeProjectManager::Internal::CMakeSettingsPage</name> <message> - <location filename="../../../src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp" line="+338"/> + <location filename="../../../src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp" line="+264"/> <location line="+10"/> <source>CMake</source> <translation type="unfinished"></translation> @@ -465,17 +469,17 @@ <context> <name>CdbDumperHelper</name> <message> - <location filename="../../../src/plugins/debugger/cdb/cdbdumperhelper.cpp" line="+253"/> + <location filename="../../../src/plugins/debugger/cdb/cdbdumperhelper.cpp" line="+196"/> <source>Loading dumpers...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> + <location line="+9"/> <source>The debugger does not appear to be Qt application.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> + <location line="+10"/> <source>The dumper module appears to be already loaded.</source> <translation type="unfinished"></translation> </message> @@ -491,18 +495,10 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> - <source><none></source> + <location line="+186"/> + <source>Querying dumpers for '%1'/'%2' (%3)</source> <translation type="unfinished"></translation> </message> - <message numerus="yes"> - <location line="+1"/> - <source>%n known types, Qt version: %1, Qt namespace: %2</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - </translation> - </message> </context> <context> <name>CdbOptionsPageWidget</name> @@ -983,7 +979,7 @@ Sollen sie überschrieben werden?</translation> <message> <location line="+5"/> <source>Split</source> - <translation type="unfinished"></translation> + <translation>Teilen</translation> </message> <message> <location line="+3"/> @@ -1117,7 +1113,7 @@ Sollen sie überschrieben werden?</translation> <translation>Abbrechen</translation> </message> <message> - <location line="+52"/> + <location line="+54"/> <source><table border=1 cellspacing=0 cellpadding=3><tr><th>Variable</th><th>Expands to</th></tr><tr><td>%f</td><td>file name</td></tr><tr><td>%l</td><td>current line number</td></tr><tr><td>%c</td><td>current column number</td></tr><tr><td>%x</td><td>editor's x position on screen</td></tr><tr><td>%y</td><td>editor's y position on screen</td></tr><tr><td>%w</td><td>editor's width in pixels</td></tr><tr><td>%h</td><td>editor's height in pixels</td></tr><tr><td>%W</td><td>editor's width in characters</td></tr><tr><td>%H</td><td>editor's height in characters</td></tr><tr><td>%%</td><td>%</td></tr></table></source> <translation type="unfinished"></translation> </message> @@ -1125,7 +1121,7 @@ Sollen sie überschrieben werden?</translation> <context> <name>Core::FileManager</name> <message> - <location filename="../../../src/plugins/coreplugin/filemanager.cpp" line="+304"/> + <location filename="../../../src/plugins/coreplugin/filemanager.cpp" line="+303"/> <source>Can't save file</source> <translation>Die Datei kann nicht gespeichert werden</translation> </message> @@ -1161,9 +1157,9 @@ Sollen sie überschrieben werden?</translation> <context> <name>Core::Internal::CommandPrivate</name> <message> - <location filename="../../../src/plugins/coreplugin/actionmanager/command.cpp" line="+131"/> + <location filename="../../../src/plugins/coreplugin/actionmanager/command.cpp" line="+130"/> <source>Other</source> - <translation type="unfinished"></translation> + <translation>Andere</translation> </message> </context> <context> @@ -1179,37 +1175,37 @@ Sollen sie überschrieben werden?</translation> <message> <location filename="../../../src/plugins/coreplugin/editormanager/editorsplitter.cpp" line="+75"/> <source>Split Left/Right</source> - <translation type="unfinished"></translation> + <translation>Links/rechts teilen</translation> </message> <message> <location line="+7"/> <source>Split Top/Bottom</source> - <translation type="unfinished"></translation> + <translation>Open/unten teilen</translation> </message> <message> <location line="+7"/> <source>Unsplit</source> - <translation type="unfinished"></translation> + <translation>Teilung aufheben</translation> </message> <message> <location line="+11"/> <source>Default Splitter Layout</source> - <translation type="unfinished"></translation> + <translation>Vorgabe wiederherstellen</translation> </message> <message> <location line="+3"/> <source>Save Current as Default</source> - <translation type="unfinished"></translation> + <translation>Gegenwärtige Anordnung als Vorgabe speichern</translation> </message> <message> <location line="+7"/> <source>Restore Default Layout</source> - <translation type="unfinished"></translation> + <translation>Vorgabe wiederherstellen</translation> </message> <message> <location line="+11"/> <source>Previous Document</source> - <translation type="unfinished"></translation> + <translation>Voriges Dokument</translation> </message> <message> <location line="+2"/> @@ -1219,7 +1215,7 @@ Sollen sie überschrieben werden?</translation> <message> <location line="+5"/> <source>Next Document</source> - <translation type="unfinished"></translation> + <translation>Nächstes Dokument</translation> </message> <message> <location line="+2"/> @@ -1229,22 +1225,22 @@ Sollen sie überschrieben werden?</translation> <message> <location line="+6"/> <source>Previous Group</source> - <translation type="unfinished"></translation> + <translation>Vorige Gruppe</translation> </message> <message> <location line="+6"/> <source>Next Group</source> - <translation type="unfinished"></translation> + <translation>Nächste Gruppe</translation> </message> <message> <location line="+6"/> <source>Move Document to Previous Group</source> - <translation type="unfinished"></translation> + <translation>Dokument in vorige Gruppe verschieben</translation> </message> <message> <location line="+6"/> <source>Move Document to Next Group</source> - <translation type="unfinished"></translation> + <translation>Dokument in nächste Gruppe verschieben</translation> </message> </context> <context> @@ -1253,7 +1249,7 @@ Sollen sie überschrieben werden?</translation> <location filename="../../../src/plugins/coreplugin/editormanager/editorview.cpp" line="+384"/> <location line="+35"/> <source>Placeholder</source> - <translation type="unfinished"></translation> + <translation>Platzhalter</translation> </message> <message> <location line="-29"/> @@ -1281,11 +1277,51 @@ Sollen sie überschrieben werden?</translation> <message> <location line="+10"/> <source>Environment</source> - <translation type="unfinished"></translation> + <translation>Allgemeine Einstellungen</translation> </message> <message> <location line="+75"/> <source>Variables</source> + <translation>Variablen</translation> + </message> + <message> + <location filename="../../../src/plugins/coreplugin/generalsettings.ui"/> + <source>Form</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>General settings</source> + <translation>Allgemeine Einstellungen</translation> + </message> + <message> + <location/> + <source>User &interface color:</source> + <translation>Farbe der Benutzeroberfläche:</translation> + </message> + <message> + <location/> + <source>Reset to default</source> + <translation>Zurücksetzen</translation> + </message> + <message> + <location/> + <source>R</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Terminal:</source> + <translation>Terminal:</translation> + </message> + <message> + <location/> + <source>External editor:</source> + <translation>'Externer Editor:</translation> + </message> + <message> + <location/> + <source>?</source> <translation type="unfinished"></translation> </message> </context> @@ -1494,7 +1530,7 @@ Sollen sie überschrieben werden?</translation> <message> <location line="-149"/> <source>Split</source> - <translation type="unfinished"></translation> + <translation>Teilen</translation> </message> <message> <location line="+1"/> @@ -1555,7 +1591,7 @@ Sollen sie überschrieben werden?</translation> <context> <name>Core::Internal::OutputPaneManager</name> <message> - <location filename="../../../src/plugins/coreplugin/outputpane.cpp" line="+167"/> + <location filename="../../../src/plugins/coreplugin/outputpane.cpp" line="+171"/> <source>Output</source> <translation>Ausgaben</translation> </message> @@ -1565,9 +1601,19 @@ Sollen sie überschrieben werden?</translation> <translation>Löschen</translation> </message> <message> - <location line="+52"/> + <location line="+6"/> + <source>Next Item</source> + <translation>Nächstes Element</translation> + </message> + <message> + <location line="+6"/> + <source>Previous Item</source> + <translation>Voriges Element</translation> + </message> + <message> + <location line="+56"/> <source>Output &Panes</source> - <translation>Ausgabe&panels</translation> + <translation>Ausgabe&panele</translation> </message> </context> <context> @@ -1640,28 +1686,28 @@ Sollen sie überschrieben werden?</translation> <message> <location filename="../../../src/plugins/coreplugin/dialogs/shortcutsettings.cpp" line="+70"/> <source>Keyboard</source> - <translation type="unfinished"></translation> + <translation>Tastatur</translation> </message> <message> <location line="+10"/> <source>Environment</source> - <translation type="unfinished"></translation> + <translation>Umgebung</translation> </message> <message> <location line="+160"/> <source>Import Keyboard Mapping Scheme</source> - <translation type="unfinished"></translation> + <translation>Tastaturschema importieren</translation> </message> <message> <location line="+2"/> <location line="+32"/> <source>Keyboard Mapping Scheme (*.kms)</source> - <translation type="unfinished"></translation> + <translation>Tastaturschema-Datei (*.kms)</translation> </message> <message> <location line="-2"/> <source>Export Keyboard Mapping Scheme</source> - <translation type="unfinished"></translation> + <translation>Tastaturschema exportieren</translation> </message> </context> <context> @@ -1669,7 +1715,7 @@ Sollen sie überschrieben werden?</translation> <message> <location filename="../../../src/plugins/coreplugin/sidebar.cpp" line="-131"/> <source>Split</source> - <translation type="unfinished"></translation> + <translation>Teilen</translation> </message> <message> <location line="+6"/> @@ -1697,7 +1743,12 @@ Sollen sie überschrieben werden?</translation> <translation type="obsolete"> (letzte Sitzung)</translation> </message> <message> - <location filename="../../../src/plugins/coreplugin/welcomemode.cpp" line="+169"/> + <location filename="../../../src/plugins/coreplugin/welcomemode.cpp" line="+123"/> + <source>Welcome</source> + <translation>Willkommen</translation> + </message> + <message> + <location line="+46"/> <source>%1 (last session)</source> <translation>%1 (zuletzt benutzt)</translation> </message> @@ -1750,27 +1801,38 @@ p { <p>Qt Creator ist eine intuitive, moderne cross-platform IDE, die</p> <p>es Entwicklern ermöglicht, graphisch ansprechende</p> <p>Anwendungen für die Bereiche Desktop und Embedded sowie</p> -<p>mobile Geräte zu erstellen. Klicken Sie auf <strong>Start</strong>,</p> +<p>mobile Geräte zu erstellen. Klicken Sie auf <strong>Schnelleinstieg</strong>,</p> <p> um die Entwicklung mit Qt Creator zu beginnen.</p> <hr style="margin-top:15px"/></translation> </message> <message> <location/> <source>* { - background-image: url(":/core/images/welcomemode/btn_getting_started.png"); + border-image: url(:/core/images/welcomemode/btn_27.png) 7; + border-width: 7; + padding: -2px 0; + font-size: 12px; + font-family: lucida sans, dejavu sans, sans serif; + color: black; } *:hover { - background-image: url(:/core/images/welcomemode/btn_getting_started_hover.png) + border-image: url(:/core/images/welcomemode/btn_27_hover.png) 7; + color: white; } </source> <translation type="unfinished"></translation> </message> + <message> + <location/> + <source><qt>Getting Started &gt;&gt;</source> + <translation><qt>Schnelleinstieg &gt;&gt;</translation> + </message> <message> <location/> <source>#recentSessionsFrame { -border-image: url(:/core/images/welcomemode/rc_combined.png) 8 8 8 8 stretch stretch; -border-width: 8 8 8 8; + border-image: url(:/core/images/welcomemode/rc_combined.png) 8; + border-width: 8; } </source> <translation type="unfinished"></translation> @@ -1778,19 +1840,30 @@ border-width: 8 8 8 8; <message> <location/> <source>* { - background-image: url(":/core/images/welcomemode/btn_restore_session.png"); + border-image: url(:/core/images/welcomemode/btn_26.png) 7; + border-width: 7; + padding: -2px 0; + font-size: 12px; + font-family: lucida sans, dejavu sans, sans serif; + color: black; } *:hover { - background-image: url(:/core/images/welcomemode/btn_restore_session_hover.png) + border-image: url(:/core/images/welcomemode/btn_26_hover.png) 7; + color: white; } </source> <translation type="unfinished"></translation> </message> + <message> + <location/> + <source><qt>Restore Last Session &gt;&gt;</source> + <translation><qt>Zuletzt benutzt &gt;&gt;</translation> + </message> <message> <location/> <source>#bottomWidget { -background-image: url(:/core/images/welcomemode/feedback-bar-background.png); + background-image: url(:/core/images/welcomemode/feedback-bar-background.png); } </source> <translation type="unfinished"></translation> @@ -1798,15 +1871,30 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location/> <source>* { - background-image: url(":/core/images/welcomemode/btn_feedback.png"); + border-image: url(:/core/images/welcomemode/btn_26.png) 7; + border-width: 7; + padding: -2px 2px; + font-size: 12px; + font-family: lucida sans, dejavu sans, sans serif; } *:hover { - background-image: url(:/core/images/welcomemode/btn_feedback_hover.png) + border-image: url(:/core/images/welcomemode/btn_26_hover.png) 7; + color: white; } </source> <translation type="unfinished"></translation> </message> + <message> + <location/> + <source><qt>Feedback&nbsp;&nbsp;<img src=":/core/images/welcomemode/feedback_arrow.png" /></source> + <translation><qt>Rückmeldung&nbsp;&nbsp;<img src=":/core/images/welcomemode/feedback_arrow.png" /></translation> + </message> + <message> + <location/> + <source>Help us make Qt Creator even better</source> + <translation>Helfen Sie uns, Qt Creator zu verbessern</translation> + </message> </context> <context> <name>Core::ModeManager</name> @@ -1859,76 +1947,88 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); </context> <context> <name>Core::Utils::ConsoleProcess</name> + <message> + <source>Cannot set up comm channel: %1</source> + <translation type="obsolete">Es konnte kein Kommunikationskanal hergestellt werden: %1</translation> + </message> + <message> + <source>Cannot create temp file: %1</source> + <translation type="obsolete">Es konnte keine temporäre Datei erstellt werden: %1</translation> + </message> <message> <location filename="../../../src/libs/utils/consoleprocess_unix.cpp" line="+74"/> <location filename="../../../src/libs/utils/consoleprocess_win.cpp" line="+72"/> - <source>Cannot set up comm channel: %1</source> - <translation type="unfinished"></translation> + <source>Cannot set up communication channel: %1</source> + <translation>Es konnte kein Kommunikationskanal hergestellt werden: %1</translation> </message> <message> <location line="+8"/> + <location line="+66"/> <location filename="../../../src/libs/utils/consoleprocess_win.cpp" line="+8"/> - <source>Cannot create temp file: %1</source> - <translation type="unfinished"></translation> + <source>Cannot create temporary file: %1</source> + <translation>Es konnte keine temporäre Datei erstellt werden: %1</translation> </message> <message> - <location line="+21"/> + <location line="-45"/> <location filename="../../../src/libs/utils/consoleprocess_win.cpp" line="+30"/> <source>Press <RETURN> to close this window...</source> - <translation type="unfinished"></translation> + <translation>Betätigen Sie die <RETURN> Taste, um das Fenster zu schließen...</translation> </message> <message> <location line="+9"/> - <source>Cannot start terminal emulator %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+36"/> - <source>Cannot create temporary file: %2</source> - <translation type="unfinished"></translation> + <source>Cannot start the terminal emulator '%1'.</source> + <translation>Der Terminal-Emulator '%1' konnte nicht gestartet werden.</translation> </message> <message> - <location line="+8"/> - <source>Cannot create temporary directory %1: %2</source> - <translation type="unfinished"></translation> + <location line="+44"/> + <source>Cannot create temporary directory '%1': %2</source> + <translation>Das temporäre Verzeichnis '%1' konnte nicht erstellt werden: %2</translation> </message> <message> <location line="+5"/> - <source>Cannot create socket %1: %2</source> - <translation type="unfinished"></translation> + <source>Cannot create socket '%1': %2</source> + <translation>Der Socket '%1' konnte nicht erstellt werden: %2</translation> </message> <message> <location line="+32"/> <location filename="../../../src/libs/utils/consoleprocess_win.cpp" line="+73"/> - <source>Cannot change to working directory %1: %2</source> - <translation type="unfinished"></translation> + <source>Cannot change to working directory '%1': %2</source> + <translation>Es konnte nicht zum Arbeitsverzeichnis '%1' gewechselt werden: %2</translation> </message> <message> <location line="+3"/> <location filename="../../../src/libs/utils/consoleprocess_win.cpp" line="+3"/> - <source>Cannot execute %1: %2</source> - <translation type="unfinished"></translation> + <source>Cannot execute '%1': %2</source> + <translation>Das Kommando '%1' konnte nicht ausgeführt werden: %2</translation> + </message> + <message> + <source>Cannot start terminal emulator %1.</source> + <translation type="obsolete">E</translation> + </message> + <message> + <source>Cannot create temporary file: %2</source> + <translation type="obsolete">Es konnte keine temporäre Datei erstellt werden: %1</translation> </message> <message> <location line="+20"/> <location filename="../../../src/libs/utils/consoleprocess_win.cpp" line="+21"/> <source>Unexpected output from helper program.</source> - <translation type="unfinished"></translation> + <translation>Die Ausgabe des Hilfsprogrammes kann nicht ausgewertet werden.</translation> </message> <message> <location filename="../../../src/libs/utils/consoleprocess_win.cpp" line="-81"/> <source>The process '%1' could not be started: %2</source> - <translation type="unfinished"></translation> + <translation>Der Prozess '%1; konnte nicht gestartet werden: %2</translation> </message> <message> <location line="+72"/> <source>Cannot obtain a handle to the inferior: %1</source> - <translation type="unfinished"></translation> + <translation>Der zu debuggende Prozess konnte nicht angesprochen werden: %1</translation> </message> <message> <location line="+30"/> <source>Cannot obtain exit status from inferior: %1</source> - <translation type="unfinished"></translation> + <translation>Der Rückgabewert des zu debuggenden Prozesses konnte nicht erhalten werden: %1</translation> </message> </context> <context> @@ -1954,6 +2054,33 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <translation>Namen von Windows-Geräten dürfen nicht verwendet werden (%1).</translation> </message> </context> +<context> + <name>Core::Utils::FileSearch</name> + <message numerus="yes"> + <location filename="../../../src/libs/utils/filesearch.cpp" line="+46"/> + <source>%1: canceled. %n occurrences found in %2 files.</source> + <translation> + <numerusform>%1: Abgebrochen. Eine Fundstelle in %2 Dateien.</numerusform> + <numerusform>%1: Abgebrochen. %n Fundstellen in %2 Dateien.</numerusform> + </translation> + </message> + <message numerus="yes"> + <location line="+8"/> + <source>%1: %n occurrences found in %2 files.</source> + <translation> + <numerusform>%1: Eine Fundstelle in %2 Dateien.</numerusform> + <numerusform>%1: %n Fundstellen in %2 Dateien.</numerusform> + </translation> + </message> + <message numerus="yes"> + <location line="+8"/> + <source>%1: %n occurrences found in %2 of %3 files.</source> + <translation> + <numerusform>%1: Eine Fundstelle in %2 von %3 Dateien.</numerusform> + <numerusform>%1: %n Fundstelle in %2 von %3 Dateien.</numerusform> + </translation> + </message> +</context> <context> <name>Core::Utils::NewClassWidget</name> <message> @@ -2022,12 +2149,12 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location filename="../../../src/libs/utils/pathchooser.cpp" line="+49"/> <source>Choose...</source> - <translation type="unfinished"></translation> + <translation>Auswählen...</translation> </message> <message> <location line="+3"/> <source>Browse...</source> - <translation type="unfinished"></translation> + <translation>Auswählen...</translation> </message> <message> <location line="+117"/> @@ -2162,7 +2289,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location filename="../../../src/plugins/cppeditor/cppeditor.cpp" line="+258"/> <source>Sort alphabetically</source> - <translation type="unfinished"></translation> + <translation>Alphabetisch sortieren</translation> </message> </context> <context> @@ -2227,32 +2354,32 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location line="+3"/> <source>Creates a new C++ source file.</source> - <translation type="unfinished"></translation> + <translation>Erzeugt eine neue C++-Quelldatei</translation> </message> <message> <location line="+1"/> <source>C++ Source File</source> - <translation type="unfinished"></translation> + <translation>C++-Quelldatei</translation> </message> <message> <location line="+4"/> <source>C++ Class</source> - <translation type="unfinished"></translation> + <translation>C++-Klasse</translation> </message> <message> <location line="+1"/> <source>Creates a header and a source file for a new class.</source> - <translation type="unfinished"></translation> + <translation>Erzeugt C++-Header- und Quelldatei für eine neue Klasse</translation> </message> <message> <location line="+11"/> <source>Follow Symbol under Cursor</source> - <translation type="unfinished"></translation> + <translation>Symbol unter Einfügemarke verfolgen</translation> </message> <message> <location line="+9"/> <source>Switch between Method Declaration/Definition</source> - <translation type="unfinished"></translation> + <translation>Wechsel zwischen Deklaration und Definition der Methode.</translation> </message> </context> <context> @@ -2265,22 +2392,22 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location/> <source>Header suffix:</source> - <translation type="unfinished"></translation> + <translation>Endung für Header-Dateien:</translation> </message> <message> <location/> <source>This determines how the file names of the class wizards are generated ("MyClass.h" versus "myclass.h").</source> - <translation type="unfinished"></translation> + <translation>Legt fest, wie die Dateinamen aus dem Klassennamen generiert werden ("MyClass.h" beziehungsweise "myclass.h").</translation> </message> <message> <location/> <source>Lower case file names:</source> - <translation type="unfinished"></translation> + <translation>Kleinbuchstaben für Dateinamen verwenden:</translation> </message> <message> <location/> <source>Source suffix:</source> - <translation type="unfinished"></translation> + <translation>Endung für Quelldateien:</translation> </message> </context> <context> @@ -2288,7 +2415,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location filename="../../../src/plugins/cpptools/cppmodelmanager.cpp" line="+474"/> <source>%1: No such file or directory</source> - <translation type="unfinished"></translation> + <translation>%1: Es existiert keine Datei oder kein Verzeichnis dieses Namens</translation> </message> </context> <context> @@ -2296,7 +2423,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location filename="../../../src/plugins/cpptools/cpptoolsconstants.h" line="+51"/> <source>File naming conventions</source> - <translation type="unfinished"></translation> + <translation>Konventionen für die Bildung von Dateinamen</translation> </message> <message> <location line="+1"/> @@ -2309,7 +2436,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location filename="../../../src/plugins/cpptools/completionsettingspage.cpp" line="+57"/> <source>Completion</source> - <translation type="unfinished"></translation> + <translation>Ergänzung</translation> </message> <message> <location line="+10"/> @@ -2322,7 +2449,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location filename="../../../src/plugins/cpptools/cppclassesfilter.h" line="+46"/> <source>Classes</source> - <translation type="unfinished"></translation> + <translation>Klassen</translation> </message> </context> <context> @@ -2330,7 +2457,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location filename="../../../src/plugins/cpptools/cppfunctionsfilter.h" line="+46"/> <source>Methods</source> - <translation type="unfinished"></translation> + <translation>Methoden</translation> </message> </context> <context> @@ -2338,7 +2465,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location filename="../../../src/plugins/cpptools/cppmodelmanager.cpp" line="+253"/> <source>Indexing</source> - <translation type="unfinished"></translation> + <translation>Indizierung</translation> </message> </context> <context> @@ -2346,20 +2473,20 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location filename="../../../src/plugins/cpptools/cppquickopenfilter.h" line="+53"/> <source>Classes and Methods</source> - <translation type="unfinished"></translation> + <translation>Klassen und Methoden</translation> </message> </context> <context> <name>CppTools::Internal::CppToolsPlugin</name> <message> - <location filename="../../../src/plugins/cpptools/cpptoolsplugin.cpp" line="+100"/> + <location filename="../../../src/plugins/cpptools/cpptoolsplugin.cpp" line="+102"/> <source>&C++</source> - <translation type="unfinished"></translation> + <translation>&C++</translation> </message> <message> <location line="+8"/> <source>Switch Header/Source</source> - <translation type="unfinished"></translation> + <translation>Zwischen Header- und Quelldatei wechseln</translation> </message> </context> <context> @@ -2367,7 +2494,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location filename="../../../src/plugins/cpptools/cppcodecompletion.cpp" line="+391"/> <source>%1 of %2</source> - <translation type="unfinished"></translation> + <translation>%1 von %2</translation> </message> </context> <context> @@ -2382,6 +2509,11 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <source>Debugger</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../../src/plugins/debugger/watchutils.cpp" line="+364"/> + <source><Encoding error></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Debugger::Internal::AttachCoreDialog</name> @@ -2416,7 +2548,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location line="+163"/> <source>Refresh</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Aktualisieren</translation> </message> </context> <context> @@ -2424,13 +2556,13 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <message> <location line="+81"/> <source>Refresh</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Aktualisieren</translation> </message> </context> <context> <name>Debugger::Internal::BreakHandler</name> <message> - <location filename="../../../src/plugins/debugger/breakhandler.cpp" line="+365"/> + <location filename="../../../src/plugins/debugger/breakhandler.cpp" line="+387"/> <source>Number</source> <translation>Zahl</translation> </message> @@ -2460,7 +2592,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Breakpoint will only be hit if this condition is met.</source> <translation type="unfinished"></translation> </message> @@ -2478,7 +2610,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <translation type="unfinished"></translation> </message> <message> - <location line="+37"/> + <location line="+38"/> <source>Delete breakpoint</source> <translation type="unfinished"></translation> </message> @@ -2503,7 +2635,17 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <translation type="unfinished"></translation> </message> <message> - <location line="+41"/> + <location line="+2"/> + <source>Disable breakpoint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Enable breakpoint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+47"/> <source>Conditions on Breakpoint %1</source> <translation type="unfinished"></translation> </message> @@ -2511,7 +2653,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <context> <name>Debugger::Internal::CdbDebugEngine</name> <message> - <location filename="../../../src/plugins/debugger/cdb/cdbdebugengine.cpp" line="+123"/> + <location filename="../../../src/plugins/debugger/cdb/cdbdebugengine.cpp" line="+124"/> <source>Unable to load the debugger engine library '%1': %2</source> <translation type="unfinished"></translation> </message> @@ -2551,12 +2693,12 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <translation type="unfinished"></translation> </message> <message> - <location line="+479"/> + <location line="+480"/> <source>Unable to assign the value '%1' to '%2': %3</source> <translation type="unfinished"></translation> </message> <message> - <location line="+214"/> + <location line="+226"/> <source>Cannot retrieve symbols while the debuggee is running.</source> <translation type="unfinished"></translation> </message> @@ -2583,7 +2725,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <context> <name>Debugger::Internal::DebugMode</name> <message> - <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="+176"/> + <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="+182"/> <source>Debug</source> <translation>Debuggen</translation> </message> @@ -2612,12 +2754,12 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); </message> <message> <location line="+4"/> - <location line="+915"/> + <location line="+942"/> <source>Interrupt</source> <translation>Anhalten</translation> </message> <message> - <location line="-911"/> + <location line="-938"/> <source>Reset Debugger</source> <translation>Debugger zurücksetzen</translation> </message> @@ -2703,12 +2845,13 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <translation>Läuft...</translation> </message> <message> - <location line="+101"/> + <location line="+109"/> + <location line="+23"/> <source>Changing breakpoint state requires either a fully running or fully stopped application.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+101"/> + <location line="+97"/> <source>Debugging VS executables is not supported.</source> <translation type="unfinished"></translation> </message> @@ -2780,12 +2923,11 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <context> <name>Debugger::Internal::DebuggerPlugin</name> <message> - <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="+284"/> <source>Toggle Breakpoint</source> - <translation>Haltepunkt umschalten</translation> + <translation type="obsolete">Haltepunkt umschalten</translation> </message> <message> - <location line="+34"/> + <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="+307"/> <source>Stop Debugger/Interrupt Debugger</source> <translation type="unfinished"></translation> </message> @@ -2814,6 +2956,26 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <source>Threads:</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+155"/> + <source>Remove Breakpoint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Disable Breakpoint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Enable Breakpoint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Set Breakpoint</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Debugger::Internal::DebuggerRunner</name> @@ -2871,12 +3033,12 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <translation type="unfinished"></translation> </message> <message> - <location line="+16"/> + <location line="+15"/> <source>Debug debugging helper</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> + <location line="+6"/> <source>Recheck debugging helper availability</source> <translation type="unfinished"></translation> </message> @@ -2886,7 +3048,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> + <location line="+12"/> <source>Hexadecimal</source> <translation type="unfinished"></translation> </message> @@ -2949,7 +3111,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <context> <name>Debugger::Internal::DebuggingHelperOptionPage</name> <message> - <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="-388"/> + <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="-545"/> <source>Debugging Helper</source> <translation type="unfinished"></translation> </message> @@ -3013,7 +3175,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <context> <name>Debugger::Internal::GdbEngine</name> <message> - <location filename="../../../src/plugins/debugger/gdbengine.cpp" line="+270"/> + <location filename="../../../src/plugins/debugger/gdbengine.cpp" line="+273"/> <source>The Gdb process failed to start. Either the invoked program '%1' is missing, or you may have insufficient permissions to invoke the program.</source> <translation type="unfinished"></translation> </message> @@ -3044,13 +3206,48 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); </message> <message> <location line="+5"/> - <location line="+1120"/> + <location line="+1139"/> <location line="+20"/> <source>Error</source> <translation type="unfinished"></translation> </message> <message> - <location line="-992"/> + <location line="-1045"/> + <source>Library %1 loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Library %1 unloaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Thread group %1 created.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Thread %1 created.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Thread group %1 exited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Thread %1 in group %2 exited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Thread %1 selected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+24"/> <source>Reading </source> <translation type="unfinished"></translation> </message> @@ -3070,7 +3267,7 @@ background-image: url(:/core/images/welcomemode/feedback-bar-background.png); <translation type="unfinished"></translation> </message> <message> - <location line="+116"/> + <location line="+118"/> <source>Core file loaded.</source> <translation type="unfinished"></translation> </message> @@ -3181,7 +3378,7 @@ Using gdb 6.7 or later is strongly recommended.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+618"/> + <location line="+632"/> <source><could not retreive module information></source> <translation type="unfinished"></translation> </message> @@ -3212,8 +3409,8 @@ Using gdb 6.7 or later is strongly recommended.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+201"/> - <location line="+157"/> + <location line="+155"/> + <location line="+42"/> <source>Retrieving data for watch view (%1 requests pending)...</source> <translation type="unfinished"></translation> </message> @@ -3228,7 +3425,7 @@ Using gdb 6.7 or later is strongly recommended.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+38"/> + <location line="+43"/> <source>Debugging helpers not found.</source> <translation type="unfinished"></translation> </message> @@ -3238,7 +3435,7 @@ Using gdb 6.7 or later is strongly recommended.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+110"/> <source>Custom dumper setup: %1</source> <translation type="unfinished"></translation> </message> @@ -3413,7 +3610,7 @@ Using gdb 6.7 or later is strongly recommended.</source> <message> <location filename="../../../src/plugins/debugger/outputcollector.cpp" line="+92"/> <source>Cannot create temporary file: %2</source> - <translation type="unfinished"></translation> + <translation>Es konnte keine temporäre Datei erstellt werden: %1</translation> </message> <message> <location line="+11"/> @@ -3470,7 +3667,7 @@ Using gdb 6.7 or later is strongly recommended.</source> <context> <name>Debugger::Internal::ScriptEngine</name> <message> - <location filename="../../../src/plugins/debugger/scriptengine.cpp" line="+476"/> + <location filename="../../../src/plugins/debugger/scriptengine.cpp" line="+455"/> <source>'%1' contains no identifier</source> <translation type="unfinished"></translation> </message> @@ -3653,7 +3850,7 @@ Using gdb 6.7 or later is strongly recommended.</source> <context> <name>Debugger::Internal::WatchHandler</name> <message> - <location line="+231"/> + <location line="+232"/> <source>Root</source> <translation type="unfinished"></translation> </message> @@ -3711,7 +3908,7 @@ Using gdb 6.7 or later is strongly recommended.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+47"/> + <location line="+79"/> <source>Adjust column widths to contents</source> <translation type="unfinished"></translation> </message> @@ -3785,7 +3982,7 @@ Using gdb 6.7 or later is strongly recommended.</source> <context> <name>DependenciesModel</name> <message> - <location filename="../../../src/plugins/projectexplorer/dependenciespanel.cpp" line="+119"/> + <location filename="../../../src/plugins/projectexplorer/dependenciespanel.cpp" line="+118"/> <source>Unable to add dependency</source> <translation type="unfinished"></translation> </message> @@ -4146,17 +4343,17 @@ Rebuilding the project might help.</source> <message> <location/> <source>Registered Documentation:</source> - <translation type="unfinished"></translation> + <translation>Registrierte Dokumentationen</translation> </message> <message> <location/> <source>Add...</source> - <translation type="unfinished"></translation> + <translation>Hinzufügen...</translation> </message> <message> <location/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> </context> <context> @@ -4450,7 +4647,7 @@ Reason: %3</source> <translation type="unfinished"></translation> </message> <message> - <location line="+118"/> + <location line="+120"/> <location line="+673"/> <location line="+19"/> <source>E20: Mark '%1' not set</source> @@ -4645,22 +4842,8 @@ Reason: %3</source> <context> <name>FileSearch</name> <message> - <location filename="../../../src/libs/utils/filesearch.cpp" line="+75"/> - <location line="+102"/> <source>%1: canceled. %2 occurrences found in %3 files.</source> - <translation>%1: abgebrochen. </translation> - </message> - <message> - <location line="-27"/> - <location line="+49"/> - <source>%1: %2 occurrences found in %3 of %4 files.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-44"/> - <location line="+49"/> - <source>%1: %2 occurrences found in %3 files.</source> - <translation type="unfinished"></translation> + <translation type="obsolete">%1: abgebrochen. </translation> </message> </context> <context> @@ -4686,7 +4869,7 @@ Reason: %3</source> <message> <location/> <source>Filter:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Filter:</translation> </message> <message> <location/> @@ -4701,12 +4884,12 @@ Reason: %3</source> <message> <location/> <source>Add</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Hinzufügen</translation> </message> <message> <location/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> </context> <context> @@ -4750,7 +4933,7 @@ Reason: %3</source> <context> <name>Find::Internal::FindPlugin</name> <message> - <location filename="../../../src/plugins/find/findplugin.cpp" line="+135"/> + <location filename="../../../src/plugins/find/findplugin.cpp" line="+149"/> <source>&Find/Replace</source> <translation>&Suchen/Ersetzen</translation> </message> @@ -4854,7 +5037,7 @@ Reason: %3</source> <translation>Suchergebnisse</translation> </message> <message> - <location filename="../../../src/plugins/find/searchresultwindow.cpp" line="+59"/> + <location filename="../../../src/plugins/find/searchresultwindow.cpp" line="+60"/> <source>No matches found!</source> <translation>Es wurden keine Treffer gefunden!</translation> </message> @@ -4932,49 +5115,6 @@ Reason: %3</source> <translation type="unfinished"></translation> </message> </context> -<context> - <name>GeneralSettings</name> - <message> - <location filename="../../../src/plugins/coreplugin/generalsettings.ui"/> - <source>Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>General settings</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>User &interface color:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Reset to default</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>R</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>External editor:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Terminal:</source> - <translation type="unfinished"></translation> - </message> -</context> <context> <name>GenericMakeStep</name> <message> @@ -5009,7 +5149,7 @@ Reason: %3</source> <context> <name>GenericProjectManager::Internal::GenericBuildSettingsWidget</name> <message> - <location line="+402"/> + <location line="+401"/> <source>Build directory:</source> <translation type="unfinished"></translation> </message> @@ -5545,7 +5685,7 @@ Reason: %3</source> <message> <location line="+31"/> <source>Cannot create temporary file: %1</source> - <translation type="unfinished"></translation> + <translation>Es konnte keine temporäre Datei erstellt werden: %1</translation> </message> <message> <location line="+58"/> @@ -6110,7 +6250,7 @@ Skipping file.</source> <message> <location filename="../../../src/shared/help/indexwindow.cpp" line="+54"/> <source>&Look for:</source> - <translation type="unfinished"></translation> + <translation>&Suche nach:</translation> </message> <message> <location line="+69"/> @@ -6350,7 +6490,7 @@ in your .pro file.</source> <message> <location/> <source>Filter:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Filter:</translation> </message> <message> <location/> @@ -6460,7 +6600,7 @@ in your .pro file.</source> <location line="+4"/> <location line="+392"/> <source>Add</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Hinzufügen</translation> </message> <message> <location line="-389"/> @@ -7346,7 +7486,7 @@ Library base name: %1</source> <context> <name>ProjectExplorer::Internal::CompileOutputWindow</name> <message> - <location filename="../../../src/plugins/projectexplorer/compileoutputwindow.cpp" line="+46"/> + <location filename="../../../src/plugins/projectexplorer/compileoutputwindow.cpp" line="+47"/> <location filename="../../../src/plugins/projectexplorer/compileoutputwindow.h" line="+51"/> <source>Compile Output</source> <translation>Kompilierung</translation> @@ -7355,7 +7495,7 @@ Library base name: %1</source> <context> <name>ProjectExplorer::Internal::CoreListenerCheckingForRunningBuild</name> <message> - <location filename="../../../src/plugins/projectexplorer/projectexplorer.cpp" line="+114"/> + <location filename="../../../src/plugins/projectexplorer/projectexplorer.cpp" line="+112"/> <source>Cancel Build && Close</source> <translation>Erstellen abbrechen und schließen</translation> </message> @@ -7552,8 +7692,7 @@ Library base name: %1</source> <context> <name>ProjectExplorer::Internal::OutputWindow</name> <message> - <location line="+58"/> - <location line="+45"/> + <location line="+82"/> <source>Application Output Window</source> <translation type="unfinished"></translation> </message> @@ -7665,138 +7804,34 @@ Library base name: %1</source> <translation>Projekte</translation> </message> <message> - <location line="+1"/> - <source>Startup</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Path</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ProjectExplorer::Internal::ProjectWizardPage</name> - <message> - <location filename="../../../src/plugins/projectexplorer/projectwizardpage.cpp" line="+110"/> - <source>Add to &VCS (%1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Files to be added:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ProjectExplorer::Internal::QtOptionsPageWidget</name> - <message> - <location filename="../../../src/plugins/projectexplorer/qtoptionspage.cpp" line="+65"/> - <source><specify a name></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source><specify a path></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Select QTDIR</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Select the Qt Directory</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+211"/> - <source>The Qt Version %1 is not installed. Run make install</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>%1 is not a valid qt directory</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Found Qt version %1, using mkspec %2</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ProjectExplorer::Internal::QtVersionManager</name> - <message> - <location filename="../../../src/plugins/projectexplorer/qtversionmanager.ui"/> - <source>Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Qt versions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>+</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>-</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Path</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Debugging Helper</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Version Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Path:</source> - <translation>Pfad:</translation> - </message> - <message> - <location/> - <source>MinGw Directory:</source> + <location line="+1"/> + <source>Startup</source> <translation type="unfinished"></translation> </message> <message> - <location/> - <source>Debugging Helper:</source> + <location line="+1"/> + <source>Path</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>ProjectExplorer::Internal::ProjectWizardPage</name> <message> - <location/> - <source>Show &Log</source> + <location filename="../../../src/plugins/projectexplorer/projectwizardpage.cpp" line="+110"/> + <source>Add to &VCS (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location/> - <source>&Rebuild</source> + <location line="+8"/> + <source>Files to be added:</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>ProjectExplorer::Internal::QtVersionManager</name> <message> - <location/> - <source>Default Qt Version:</source> - <translation type="unfinished"></translation> + <source>Path:</source> + <translation type="obsolete">Pfad:</translation> </message> </context> <context> @@ -7903,7 +7938,7 @@ Library base name: %1</source> <context> <name>ProjectExplorer::Internal::TaskDelegate</name> <message> - <location filename="../../../src/plugins/projectexplorer/taskwindow.cpp" line="+565"/> + <location filename="../../../src/plugins/projectexplorer/taskwindow.cpp" line="+615"/> <source>File not found: %1</source> <translation type="unfinished"></translation> </message> @@ -7911,7 +7946,7 @@ Library base name: %1</source> <context> <name>ProjectExplorer::Internal::TaskWindow</name> <message> - <location line="-297"/> + <location line="-347"/> <location filename="../../../src/plugins/projectexplorer/taskwindow.h" line="+61"/> <source>Build Issues</source> <translation></translation> @@ -7980,7 +8015,7 @@ Library base name: %1</source> <translation>Projekte</translation> </message> <message> - <location line="+90"/> + <location line="+85"/> <source>&Build</source> <translation>&Erstellen</translation> </message> @@ -8247,15 +8282,12 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <context> <name>ProjectExplorer::QtVersionManager</name> <message> - <location filename="../../../src/plugins/projectexplorer/qtversionmanager.cpp" line="+236"/> - <location line="+6"/> <source>Auto-detected Qt</source> - <translation>Vorgefundene Qt-Installation</translation> + <translation type="obsolete">Vorgefundene Qt-Installation</translation> </message> <message> - <location line="+55"/> <source><not found></source> - <translation><nicht gefunden></translation> + <translation type="obsolete"><nicht gefunden></translation> </message> </context> <context> @@ -8415,7 +8447,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../src/plugins/coreplugin/editormanager/editormanager.cpp" line="-476"/> + <location filename="../../../src/plugins/coreplugin/editormanager/editormanager.cpp" line="-478"/> <source>File is Read Only</source> <translation type="unfinished"></translation> </message> @@ -8548,13 +8580,13 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <location/> <location filename="../../../src/shared/qrceditor/test/ui_qrceditor.h" line="+1"/> <source>Add</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Hinzufügen</translation> </message> <message> <location/> <location filename="../../../src/shared/qrceditor/test/ui_qrceditor.h" line="+1"/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> <message> <location/> @@ -8566,7 +8598,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <location/> <location filename="../../../src/shared/qrceditor/test/ui_qrceditor.h" line="+1"/> <source>Prefix:</source> - <translation type="unfinished"></translation> + <translation>Präfix:</translation> </message> <message> <location/> @@ -8683,12 +8715,12 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <message> <location/> <source>Add...</source> - <translation type="unfinished"></translation> + <translation>Hinzufügen...</translation> </message> <message> <location/> <source>Edit...</source> - <translation type="unfinished"></translation> + <translation>Ändern...</translation> </message> <message> <location/> @@ -8809,7 +8841,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <message> <location/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> <message> <location/> @@ -8918,7 +8950,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <context> <name>Qt4ProjectManager::Internal::ProjectLoadWizard</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/projectloadwizard.cpp" line="+191"/> + <location filename="../../../src/plugins/qt4projectmanager/projectloadwizard.cpp" line="+189"/> <source>Import existing settings</source> <translation type="unfinished"></translation> </message> @@ -8983,13 +9015,13 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <message> <location line="+2"/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::Qt4PriFileNode</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4nodes.cpp" line="+279"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4nodes.cpp" line="+280"/> <location line="+7"/> <source>Failed!</source> <translation>Fehler</translation> @@ -9023,7 +9055,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <context> <name>Qt4ProjectManager::Internal::Qt4ProFileNode</name> <message> - <location line="+219"/> + <location line="+227"/> <source>Error while parsing file %1. Giving up.</source> <translation type="unfinished"></translation> </message> @@ -9076,7 +9108,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <translation type="unfinished"></translation> </message> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp" line="+62"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp" line="+59"/> <source>Shadow Build Directory</source> <translation type="unfinished"></translation> </message> @@ -9094,7 +9126,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <context> <name>Qt4ProjectManager::Internal::Qt4ProjectManagerPlugin</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp" line="+146"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp" line="+151"/> <location line="+5"/> <source>Run qmake</source> <translation>qmake ausführen</translation> @@ -9103,13 +9135,13 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <context> <name>Qt4ProjectManager::Internal::Qt4RunConfiguration</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4runconfiguration.cpp" line="+70"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4runconfiguration.cpp" line="+69"/> <location line="+245"/> <source>Qt4RunConfiguration</source> <translation type="unfinished"></translation> </message> <message> - <location line="+44"/> + <location line="+45"/> <source>Could not parse %1. The Qt4 run configuration %2 can not be started.</source> <translation type="unfinished"></translation> </message> @@ -9117,7 +9149,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <context> <name>Qt4ProjectManager::Internal::Qt4RunConfigurationWidget</name> <message> - <location line="-259"/> + <location line="-260"/> <source>Name:</source> <translation>Name:</translation> </message> @@ -9147,11 +9179,115 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <translation type="unfinished"></translation> </message> </context> +<context> + <name>Qt4ProjectManager::Internal::QtOptionsPageWidget</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qtoptionspage.cpp" line="+65"/> + <source><specify a name></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source><specify a path></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Select QTDIR</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Select the Qt Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> + <source>The Qt Version %1 is not installed. Run make install</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 is not a valid qt directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Found Qt version %1, using mkspec %2</source> + <translation type="unfinished"></translation> + </message> +</context> <context> <name>Qt4ProjectManager::Internal::QtVersionManager</name> <message> + <location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.ui"/> <source>Path:</source> - <translation type="obsolete">Pfad:</translation> + <translation>Pfad:</translation> + </message> + <message> + <location/> + <source>Form</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Qt versions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>+</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>-</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Path</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Debugging Helper</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Version Name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>MinGw Directory:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Debugging Helper:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Show &Log</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>&Rebuild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Default Qt Version:</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -9237,7 +9373,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <message> <location/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> <message> <location filename="../../../src/shared/proparser/valueeditor.cpp" line="+252"/> @@ -9263,7 +9399,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <context> <name>Qt4ProjectManager::MakeStep</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/makestep.cpp" line="+106"/> + <location filename="../../../src/plugins/qt4projectmanager/makestep.cpp" line="+105"/> <source><font color="#ff0000">Could not find make command: %1 in the build environment</font></source> <translation type="unfinished"></translation> </message> @@ -9311,7 +9447,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <context> <name>Qt4ProjectManager::Qt4Manager</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanager.cpp" line="+136"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanager.cpp" line="+133"/> <source>Loading project %1 ...</source> <translation type="unfinished"></translation> </message> @@ -9342,6 +9478,36 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <translation type="unfinished"></translation> </message> </context> +<context> + <name>Qt4ProjectManager::QtVersionManager</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="+238"/> + <source><not found></source> + <translation><nicht gefunden></translation> + </message> + <message> + <location line="+10"/> + <location line="+6"/> + <source>Auto-detected Qt</source> + <translation>Vorgefundene Qt-Installation</translation> + </message> +</context> +<context> + <name>QtDumperHelper</name> + <message> + <location filename="../../../src/plugins/debugger/watchutils.cpp" line="+154"/> + <source><none></source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <location line="+1"/> + <source>%n known types, Qt version: %1, Qt namespace: %2</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> +</context> <context> <name>QtScriptEditor::Internal::QtScriptEditorActionHandler</name> <message> @@ -9392,12 +9558,12 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <message> <location line="+5"/> <source>Limit to prefix</source> - <translation type="unfinished"></translation> + <translation>Auf Präfix beschränken</translation> </message> <message> <location line="+3"/> <source>Prefix:</source> - <translation type="unfinished"></translation> + <translation>Präfix:</translation> </message> </context> <context> @@ -9405,39 +9571,36 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <message> <location filename="../../../src/plugins/quickopen/directoryfilter.cpp" line="+44"/> <source>Generic Directory Filter</source> - <translation type="unfinished"></translation> + <translation>Allgemeines Verzeichnisfilter</translation> </message> <message> - <location line="+58"/> + <location line="+59"/> <source>Filter Configuration</source> <translation>Filterkonfiguration</translation> </message> <message> - <location line="+13"/> - <location line="+20"/> - <source>,</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> + <location line="+45"/> <location line="+11"/> <source>Choose a directory to add</source> - <translation type="unfinished"></translation> + <translation>Bitte wählen Sie das hinzuzufügende Verzeichnis</translation> </message> <message> <location line="+30"/> <source>%1 filter update: 0 files</source> - <translation type="unfinished"></translation> + <translation>%1 Filterstatus: Keine Dateien</translation> </message> - <message> - <location line="+22"/> - <source>%1 filter update: %2 files</source> - <translation type="unfinished"></translation> + <message numerus="yes"> + <location line="+23"/> + <source>%1 filter update: %n files</source> + <translation> + <numerusform>%1 Filterstatus: Eine Datei</numerusform> + <numerusform>%1 Filterstatus: %n Dateien</numerusform> + </translation> </message> <message> <location line="+41"/> <source>%1 filter update: canceled</source> - <translation type="unfinished"></translation> + <translation>%1 Filterstatus: Abgebrochen</translation> </message> </context> <context> @@ -9455,48 +9618,49 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <message> <location/> <source>File Types:</source> - <translation type="unfinished"></translation> + <translation>Dateitypen:</translation> </message> <message> <location/> <source>Specify file name filters, separated by comma. Filters may contain wildcards.</source> - <translation type="unfinished"></translation> + <translation>Eine Liste von durch Kommata getrennte Filtern für Dateinamen. Die Filter können Suchmuster enthalten.</translation> </message> <message> <location/> <source>Prefix:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Specify a short word/abbreviation that can be used to restrict completions to files from this directory tree. -To do this you type this shortcut and a space in the QuickOpen entry field, and then the word to search for.</source> - <translation type="unfinished"></translation> + <translation>Präfix:</translation> </message> <message> <location/> <source>Limit to prefix</source> - <translation type="unfinished"></translation> + <translation>Auf Präfix beschränken</translation> </message> <message> <location/> <source>Add...</source> - <translation type="unfinished"></translation> + <translation>Hinzufügen...</translation> </message> <message> <location/> <source>Edit...</source> - <translation type="unfinished"></translation> + <translation>Ändern...</translation> </message> <message> <location/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> <message> <location/> <source>Directories:</source> - <translation type="unfinished"></translation> + <translation>Verzeichnisse:</translation> + </message> + <message> + <location/> + <source>Specify a short word/abbreviation that can be used to restrict completions to files from this directory tree. +To do this, you type this shortcut and a space in the Locator entry field, and then the word to search for.</source> + <translation>Geben Sie ein Kürzel oder eine Abkürzung ein, die die Funde auf Dateien von diesem Verzeichnis beschränkt. +Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeichen und dem Suchbegriff.</translation> </message> </context> <context> @@ -9504,7 +9668,7 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location filename="../../../src/plugins/quickopen/filesystemfilter.h" line="+54"/> <source>Files in file system</source> - <translation type="unfinished"></translation> + <translation>Dateien aus dem Dateisystem</translation> </message> </context> <context> @@ -9512,27 +9676,27 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location filename="../../../src/plugins/quickopen/filesystemfilter.ui"/> <source>Filter configuration</source> - <translation type="unfinished"></translation> + <translation>Filterkonfiguration</translation> </message> <message> <location/> <source>Prefix:</source> - <translation type="unfinished"></translation> + <translation>Präfix:</translation> </message> <message> <location/> <source>Limit to prefix</source> - <translation type="unfinished"></translation> + <translation>Auf Präfix beschränken</translation> </message> <message> <location/> <source>Include hidden files</source> - <translation type="unfinished"></translation> + <translation>Versteckte Dateien zeigen</translation> </message> <message> <location/> <source>Filter:</source> - <translation type="unfinished"></translation> + <translation>Filter:</translation> </message> </context> <context> @@ -9540,7 +9704,7 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location filename="../../../src/plugins/quickopen/opendocumentsfilter.h" line="+53"/> <source>Open documents</source> - <translation type="unfinished"></translation> + <translation>Offene Dokumente</translation> </message> </context> <context> @@ -9548,15 +9712,15 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location filename="../../../src/plugins/quickopen/quickopenfiltersfilter.cpp" line="+53"/> <source>Available filters</source> - <translation type="unfinished"></translation> + <translation>Verfügbare Filter</translation> </message> </context> <context> <name>QuickOpen::Internal::QuickOpenPlugin</name> <message> - <location filename="../../../src/plugins/quickopen/quickopenplugin.cpp" line="+247"/> + <location filename="../../../src/plugins/quickopen/quickopenplugin.cpp" line="+255"/> <source>Indexing</source> - <translation type="unfinished"></translation> + <translation>Indizierung</translation> </message> </context> <context> @@ -9564,7 +9728,7 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location filename="../../../src/plugins/quickopen/quickopentoolwindow.cpp" line="+254"/> <source>Refresh</source> - <translation type="unfinished"></translation> + <translation>Aktualisieren</translation> </message> <message> <location line="+1"/> @@ -9574,17 +9738,17 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location line="+6"/> <source>Locate...</source> - <translation type="unfinished"></translation> + <translation>Finden...</translation> </message> <message> <location line="+17"/> <source>Type to locate</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Suchmuster</translation> </message> <message> <location line="+171"/> <source><type here></source> - <translation type="unfinished"></translation> + <translation><Tippen Sie hier></translation> </message> </context> <context> @@ -9592,17 +9756,17 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location filename="../../../src/plugins/quickopen/settingswidget.ui"/> <source>Configure Filters</source> - <translation type="unfinished"></translation> + <translation>Filter konfigurieren</translation> </message> <message> <location/> <source>Add</source> - <translation type="unfinished"></translation> + <translation>Hinzufügen</translation> </message> <message> <location/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> <message> <location/> @@ -9612,17 +9776,17 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location/> <source>Refresh Intervall:</source> - <translation type="unfinished"></translation> + <translation>Aktualisierungsintervall:</translation> </message> <message> <location/> <source> min</source> - <translation type="unfinished"></translation> + <translation> minuten</translation> </message> <message> <location/> <source>Refresh now!</source> - <translation type="unfinished"></translation> + <translation>Jetzt aktualisieren!</translation> </message> </context> <context> @@ -9630,7 +9794,7 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location filename="../../../src/plugins/quickopen/settingspage.cpp" line="+159"/> <source>%1 (Prefix: %2)</source> - <translation type="unfinished"></translation> + <translation>%1 (Präfix: %2)</translation> </message> </context> <context> @@ -9638,17 +9802,17 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location filename="../../../src/plugins/quickopen/settingspage.ui"/> <source>Configure Filters</source> - <translation type="unfinished"></translation> + <translation>Filterkonfiguration</translation> </message> <message> <location/> <source>Add</source> - <translation type="unfinished"></translation> + <translation>Hinzufügen</translation> </message> <message> <location/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> <message> <location/> @@ -9658,12 +9822,12 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location/> <source>Refresh Interval:</source> - <translation type="unfinished"></translation> + <translation>Aktualisierungsintervall:</translation> </message> <message> <location/> <source> min</source> - <translation type="unfinished"></translation> + <translation> minuten</translation> </message> </context> <context> @@ -9978,7 +10142,7 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location/> <source>Filter:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Filter:</translation> </message> <message> <location/> @@ -10028,13 +10192,13 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> </context> <context> <name>ShowBuildLog</name> <message> - <location filename="../../../src/plugins/projectexplorer/showbuildlog.ui"/> + <location filename="../../../src/plugins/qt4projectmanager/showbuildlog.ui"/> <source>Debugging Helper Build Log</source> <translation type="unfinished"></translation> </message> @@ -10470,7 +10634,7 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location line="+11"/> <source>Add</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Hinzufügen</translation> </message> <message> <location line="+5"/> @@ -10635,7 +10799,7 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <message> <location line="+8"/> <source>Cannot create temporary file: %1</source> - <translation type="unfinished"></translation> + <translation>Es konnte keine temporäre Datei erstellt werden: %1</translation> </message> <message> <location line="+183"/> @@ -10723,7 +10887,7 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <context> <name>TextEditor::BaseTextEditor</name> <message> - <location filename="../../../src/plugins/texteditor/basetexteditor.cpp" line="+234"/> + <location filename="../../../src/plugins/texteditor/basetexteditor.cpp" line="+228"/> <source>Print Document</source> <translation>Dokument drucken</translation> </message> @@ -10741,7 +10905,7 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <context> <name>TextEditor::BaseTextEditorEditable</name> <message> - <location line="+3361"/> + <location line="+3607"/> <source>Line: %1, Col: %2</source> <translation>Zeile: %1, Spalte: %2</translation> </message> @@ -10891,6 +11055,16 @@ To do this you type this shortcut and a space in the QuickOpen entry field, and <source>Highlight &blocks</source> <translation>Blöcke hervorheben</translation> </message> + <message> + <location/> + <source>Use fancy style</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Animate matching parentheses</source> + <translation>Passende Klammern animieren</translation> + </message> </context> <context> <name>TextEditor::FontSettingsPage</name> @@ -11319,6 +11493,11 @@ Die folgenden Encodings scheinen der Datei zu entsprechen:</translation> <source>Current Line</source> <translation>Aktuelle Zeile</translation> </message> + <message> + <location line="+1"/> + <source>Current Line Number</source> + <translation type="unfinished"></translation> + </message> <message> <location line="+3"/> <source>Number</source> diff --git a/src/libs/utils/consoleprocess_unix.cpp b/src/libs/utils/consoleprocess_unix.cpp index a43264b59d021f41647fa371fee22522190a6778..c1183734d09491b0aba05c115cc80969965ef10c 100644 --- a/src/libs/utils/consoleprocess_unix.cpp +++ b/src/libs/utils/consoleprocess_unix.cpp @@ -71,7 +71,7 @@ bool ConsoleProcess::start(const QString &program, const QStringList &args) QString err = stubServerListen(); if (!err.isEmpty()) { - emit processError(tr("Cannot set up comm channel: %1").arg(err)); + emit processError(tr("Cannot set up communication channel: %1").arg(err)); return false; } @@ -79,7 +79,7 @@ bool ConsoleProcess::start(const QString &program, const QStringList &args) m_tempFile = new QTemporaryFile(); if (!m_tempFile->open()) { stubServerShutdown(); - emit processError(tr("Cannot create temp file: %1").arg(m_tempFile->errorString())); + emit processError(tr("Cannot create temporary file: %1").arg(m_tempFile->errorString())); delete m_tempFile; m_tempFile = 0; return false; @@ -109,7 +109,7 @@ bool ConsoleProcess::start(const QString &program, const QStringList &args) m_process.start(xterm, xtermArgs); if (!m_process.waitForStarted()) { stubServerShutdown(); - emit processError(tr("Cannot start terminal emulator %1.").arg(xterm)); + emit processError(tr("Cannot start the terminal emulator '%1'.").arg(xterm)); delete m_tempFile; m_tempFile = 0; return false; @@ -145,7 +145,7 @@ QString ConsoleProcess::stubServerListen() { QTemporaryFile tf; if (!tf.open()) - return tr("Cannot create temporary file: %2").arg(tf.errorString()); + return tr("Cannot create temporary file: %1").arg(tf.errorString()); stubFifoDir = QFile::encodeName(tf.fileName()); } // By now the temp file was deleted again @@ -153,12 +153,12 @@ QString ConsoleProcess::stubServerListen() if (!::mkdir(m_stubServerDir.constData(), 0700)) break; if (errno != EEXIST) - return tr("Cannot create temporary directory %1: %2").arg(stubFifoDir, strerror(errno)); + return tr("Cannot create temporary directory '%1': %2").arg(stubFifoDir, strerror(errno)); } QString stubServer = stubFifoDir + "/stub-socket"; if (!m_stubServer.listen(stubServer)) { ::rmdir(m_stubServerDir.constData()); - return tr("Cannot create socket %1: %2").arg(stubServer, m_stubServer.errorString()); + return tr("Cannot create socket '%1': %2").arg(stubServer, m_stubServer.errorString()); } return QString(); } @@ -190,10 +190,10 @@ void ConsoleProcess::readStubOutput() QByteArray out = m_stubSocket->readLine(); out.chop(1); // \n if (out.startsWith("err:chdir ")) { - emit processError(tr("Cannot change to working directory %1: %2") + emit processError(tr("Cannot change to working directory '%1': %2") .arg(workingDirectory(), errorMsg(out.mid(10).toInt()))); } else if (out.startsWith("err:exec ")) { - emit processError(tr("Cannot execute %1: %2") + emit processError(tr("Cannot execute '%1': %2") .arg(m_executable, errorMsg(out.mid(9).toInt()))); } else if (out.startsWith("pid ")) { // Will not need it any more diff --git a/src/libs/utils/consoleprocess_win.cpp b/src/libs/utils/consoleprocess_win.cpp index ce5d15029d8dbd1e494c58b160afa6b683bfd180..bc4b9a31e9192348ce2444999615ad0c073cf75e 100644 --- a/src/libs/utils/consoleprocess_win.cpp +++ b/src/libs/utils/consoleprocess_win.cpp @@ -69,7 +69,7 @@ bool ConsoleProcess::start(const QString &program, const QStringList &args) QString err = stubServerListen(); if (!err.isEmpty()) { - emit processError(tr("Cannot set up comm channel: %1").arg(err)); + emit processError(tr("Cannot set up communication channel: %1").arg(err)); return false; } @@ -77,7 +77,7 @@ bool ConsoleProcess::start(const QString &program, const QStringList &args) m_tempFile = new QTemporaryFile(); if (!m_tempFile->open()) { stubServerShutdown(); - emit processError(tr("Cannot create temp file: %1").arg(m_tempFile->errorString())); + emit processError(tr("Cannot create temporary file: %1").arg(m_tempFile->errorString())); delete m_tempFile; m_tempFile = 0; return false; @@ -180,10 +180,10 @@ void ConsoleProcess::readStubOutput() QByteArray out = m_stubSocket->readLine(); out.chop(2); // \r\n if (out.startsWith("err:chdir ")) { - emit processError(tr("Cannot change to working directory %1: %2") + emit processError(tr("Cannot change to working directory '%1': %2") .arg(workingDirectory(), winErrorMessage(out.mid(10).toInt()))); } else if (out.startsWith("err:exec ")) { - emit processError(tr("Cannot execute %1: %2") + emit processError(tr("Cannot execute '%1': %2") .arg(m_executable, winErrorMessage(out.mid(9).toInt()))); } else if (out.startsWith("pid ")) { // Will not need it any more diff --git a/src/libs/utils/filesearch.cpp b/src/libs/utils/filesearch.cpp index 7cf1d8225789c1e3884f4cfde672f16ba07b7a13..063ac124b73540f7f3f0a10292b3d34fe656a861 100644 --- a/src/libs/utils/filesearch.cpp +++ b/src/libs/utils/filesearch.cpp @@ -35,12 +35,36 @@ #include <QtCore/QFutureInterface> #include <QtCore/QtConcurrentRun> #include <QtCore/QRegExp> -#include <QtGui/QApplication> +#include <QtCore/QCoreApplication> #include <qtconcurrent/runextensions.h> using namespace Core::Utils; +static inline QString msgCanceled(const QString &searchTerm, int numMatches, int numFilesSearched) +{ + return QCoreApplication::translate("Core::Utils::FileSearch", + "%1: canceled. %n occurrences found in %2 files.", + 0, QCoreApplication::CodecForTr, numMatches). + arg(searchTerm).arg(numFilesSearched); +} + +static inline QString msgFound(const QString &searchTerm, int numMatches, int numFilesSearched) +{ + return QCoreApplication::translate("Core::Utils::FileSearch", + "%1: %n occurrences found in %2 files.", + 0, QCoreApplication::CodecForTr, numMatches). + arg(searchTerm).arg(numFilesSearched); +} + +static inline QString msgFound(const QString &searchTerm, int numMatches, int numFilesSearched, int filesSize) +{ + return QCoreApplication::translate("Core::Utils::FileSearch", + "%1: %n occurrences found in %2 of %3 files.", + 0, QCoreApplication::CodecForTr, numMatches). + arg(searchTerm).arg(numFilesSearched).arg(filesSize); +} + namespace { void runFileSearch(QFutureInterface<FileSearchResult> &future, @@ -71,9 +95,7 @@ void runFileSearch(QFutureInterface<FileSearchResult> &future, if (future.isPaused()) future.waitForResume(); if (future.isCanceled()) { - future.setProgressValueAndText(numFilesSearched, - QApplication::translate("FileSearch", "%1: canceled. %2 occurrences found in %3 files."). - arg(searchTerm).arg(numMatches).arg(numFilesSearched)); + future.setProgressValueAndText(numFilesSearched, msgCanceled(searchTerm, numMatches, numFilesSearched)); break; } QFile file(s); @@ -146,14 +168,10 @@ void runFileSearch(QFutureInterface<FileSearchResult> &future, firstChunk = false; } ++numFilesSearched; - future.setProgressValueAndText(numFilesSearched, - QApplication::translate("FileSearch", "%1: %2 occurrences found in %3 of %4 files."). - arg(searchTerm).arg(numMatches).arg(numFilesSearched).arg(files.size())); + future.setProgressValueAndText(numFilesSearched, msgFound(searchTerm, numMatches, numFilesSearched, files.size())); } if (!future.isCanceled()) - future.setProgressValueAndText(numFilesSearched, - QApplication::translate("FileSearch", "%1: %2 occurrences found in %3 files."). - arg(searchTerm).arg(numMatches).arg(numFilesSearched)); + future.setProgressValueAndText(numFilesSearched, msgFound(searchTerm, numMatches, numFilesSearched)); } void runFileSearchRegExp(QFutureInterface<FileSearchResult> &future, @@ -165,17 +183,15 @@ void runFileSearchRegExp(QFutureInterface<FileSearchResult> &future, int numFilesSearched = 0; int numMatches = 0; if (flags & QTextDocument::FindWholeWords) - searchTerm = QString("\\b%1\\b").arg(searchTerm); - Qt::CaseSensitivity caseSensitivity = (flags & QTextDocument::FindCaseSensitively) ? Qt::CaseSensitive : Qt::CaseInsensitive; - QRegExp expression(searchTerm, caseSensitivity); + searchTerm = QString::fromLatin1("\\b%1\\b").arg(searchTerm); + const Qt::CaseSensitivity caseSensitivity = (flags & QTextDocument::FindCaseSensitively) ? Qt::CaseSensitive : Qt::CaseInsensitive; + const QRegExp expression(searchTerm, caseSensitivity); - foreach (QString s, files) { + foreach (const QString &s, files) { if (future.isPaused()) future.waitForResume(); if (future.isCanceled()) { - future.setProgressValueAndText(numFilesSearched, - QApplication::translate("FileSearch", "%1: canceled. %2 occurrences found in %3 files."). - arg(searchTerm).arg(numMatches).arg(numFilesSearched)); + future.setProgressValueAndText(numFilesSearched, msgCanceled(searchTerm, numMatches, numFilesSearched)); break; } QFile file(s); @@ -195,14 +211,10 @@ void runFileSearchRegExp(QFutureInterface<FileSearchResult> &future, ++lineNr; } ++numFilesSearched; - future.setProgressValueAndText(numFilesSearched, - QApplication::translate("FileSearch", "%1: %2 occurrences found in %3 of %4 files."). - arg(searchTerm).arg(numMatches).arg(numFilesSearched).arg(files.size())); + future.setProgressValueAndText(numFilesSearched, msgFound(searchTerm, numMatches, numFilesSearched, files.size())); } if (!future.isCanceled()) - future.setProgressValueAndText(numFilesSearched, - QApplication::translate("FileSearch", "%1: %2 occurrences found in %3 files."). - arg(searchTerm).arg(numMatches).arg(numFilesSearched)); + future.setProgressValueAndText(numFilesSearched, msgFound(searchTerm, numMatches, numFilesSearched)); } } // namespace diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index ff16068c7f605b916b990810a2ae179c638fd82b..f084f20080e71157f61404d941b918ea4c79266e 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -516,6 +516,9 @@ void EditorManager::setCurrentView(Core::Internal::SplitterOrView *view) old->update(); if (view) view->update(); + + if (view && !view->editor()) + view->setFocus(); } Core::Internal::SplitterOrView *EditorManager::currentView() const @@ -715,6 +718,7 @@ bool EditorManager::closeEditors(const QList<IEditor*> editorsToClose, bool askA foreach (EditorView *view, currentViews) { IEditor *newCurrent = view->currentEditor(); +#if 0 if (!newCurrent) newCurrent = pickUnusedEditor(); if (!newCurrent) { @@ -726,7 +730,10 @@ bool EditorManager::closeEditors(const QList<IEditor*> editorsToClose, bool askA } } } - +#else + if (!newCurrent && view == m_d->m_view) + newCurrent = pickUnusedEditor(); +#endif if (newCurrent) { activateEditor(view, newCurrent, NoActivate); } else { @@ -833,15 +840,18 @@ Core::IEditor *EditorManager::placeEditor(Core::Internal::EditorView *view, Core sourceView->view()->removeEditor(editor); view->addEditor(editor); view->setCurrentEditor(editor); +#if 0 if (!sourceView->editor()) { if (IEditor *replacement = pickUnusedEditor()) { sourceView->view()->addEditor(replacement); } } +#endif return editor; } else if (duplicateSupported) { editor = duplicateEditor(editor); Q_ASSERT(editor); + m_d->m_editorModel->makeOriginal(editor); } } view->addEditor(editor); diff --git a/src/plugins/coreplugin/editormanager/editorview.cpp b/src/plugins/coreplugin/editormanager/editorview.cpp index 48edfc1a009c2bfbde20070664988b8e6bfe137d..b9838a8b59585a4f11e2103973b7f83439b8acc6 100644 --- a/src/plugins/coreplugin/editormanager/editorview.cpp +++ b/src/plugins/coreplugin/editormanager/editorview.cpp @@ -229,6 +229,17 @@ QList<IEditor *> EditorModel::duplicatesFor(IEditor *editor) const return result; } +void EditorModel::makeOriginal(IEditor *duplicate) +{ + Q_ASSERT(isDuplicate(duplicate)); + IEditor *original = originalForDuplicate(duplicate); + Q_ASSERT(original); + int i = findEditor(original); + m_editors[i].editor = duplicate; + m_duplicateEditors.removeOne(duplicate); + m_duplicateEditors.append(original); +} + void EditorModel::emitDataChanged(IEditor *editor) { int idx = findEditor(editor); @@ -504,7 +515,12 @@ bool EditorView::hasEditor(IEditor *editor) const void EditorView::closeView() { EditorManager *em = CoreImpl::instance()->editorManager(); +#if 1 + if (IEditor *editor = currentEditor()) + em->closeEditor(editor); +#else em->closeView(this); +#endif } void EditorView::removeEditor(IEditor *editor) @@ -547,7 +563,9 @@ void EditorView::setCurrentEditor(IEditor *editor) { if (!editor || m_container->count() <= 0 || m_container->indexOf(editor->widget()) == -1) + // ### TODO the combo box m_editorList should show an empty item return; + m_editors.removeAll(editor); m_editors.append(editor); @@ -862,20 +880,24 @@ void SplitterOrView::split(Qt::Orientation orientation) EditorManager *em = CoreImpl::instance()->editorManager(); Core::IEditor *e = m_view->currentEditor(); + SplitterOrView *view = 0; if (e) { m_view->removeEditor(e); m_splitter->addWidget(new SplitterOrView(e)); - +#if 0 if (e->duplicateSupported()) { Core::IEditor *duplicate = em->duplicateEditor(e); m_splitter->addWidget(new SplitterOrView(duplicate)); } else { m_splitter->addWidget(new SplitterOrView()); } +#else + m_splitter->addWidget((view = new SplitterOrView())); +#endif } else { m_splitter->addWidget(new SplitterOrView()); - m_splitter->addWidget(new SplitterOrView()); + m_splitter->addWidget((view = new SplitterOrView())); } m_layout->setCurrentWidget(m_splitter); @@ -886,9 +908,11 @@ void SplitterOrView::split(Qt::Orientation orientation) m_view = 0; } - em->setCurrentView(findFirstView()); + em->setCurrentView(view); +#if 0 if (e) em->activateEditor(e); +#endif } void SplitterOrView::unsplitAll() diff --git a/src/plugins/coreplugin/editormanager/editorview.h b/src/plugins/coreplugin/editormanager/editorview.h index 13eb957b299a1655e6eb14bfa1e8e720b6a91c0b..b62645baaaf45f67889b9aa2f6729d1cfbac18a0 100644 --- a/src/plugins/coreplugin/editormanager/editorview.h +++ b/src/plugins/coreplugin/editormanager/editorview.h @@ -95,6 +95,7 @@ public: bool isDuplicate(IEditor *editor) const; QList<IEditor *> duplicatesFor(IEditor *editor) const; IEditor *originalForDuplicate(IEditor *duplicate) const; + void makeOriginal(IEditor *duplicate); QModelIndex indexOf(IEditor *editor) const; QModelIndex indexOf(const QString &filename) const; diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp index ff0f73f330275fc13e35e2a2d292e9e26cf555bc..f57931627b538ec44e345778a2626e2f7c6f0041 100644 --- a/src/plugins/coreplugin/generalsettings.cpp +++ b/src/plugins/coreplugin/generalsettings.cpp @@ -68,7 +68,7 @@ QString GeneralSettings::trCategory() const QWidget *GeneralSettings::createPage(QWidget *parent) { - m_page = new Ui_GeneralSettings(); + m_page = new Ui::GeneralSettings(); QWidget *w = new QWidget(parent); m_page->setupUi(w); diff --git a/src/plugins/coreplugin/generalsettings.h b/src/plugins/coreplugin/generalsettings.h index d75cd2d8a3938d805044b9ff149e4569d15aed03..aedef6d42060355ca20c9efc4859223ababa37bc 100644 --- a/src/plugins/coreplugin/generalsettings.h +++ b/src/plugins/coreplugin/generalsettings.h @@ -33,13 +33,13 @@ #include <coreplugin/dialogs/ioptionspage.h> #include <QtGui/QWidget> -QT_BEGIN_NAMESPACE -class Ui_GeneralSettings; -QT_END_NAMESPACE - namespace Core { namespace Internal { +namespace Ui { + class GeneralSettings; +} + class GeneralSettings : public IOptionsPage { Q_OBJECT @@ -64,7 +64,7 @@ private slots: #endif private: - Ui_GeneralSettings *m_page; + Ui::GeneralSettings *m_page; QWidget *m_dialog; }; diff --git a/src/plugins/coreplugin/generalsettings.ui b/src/plugins/coreplugin/generalsettings.ui index 826c45ae6bc0d32a0cf05a10d3e9d53abd84761a..84cdf1288150e2a92276c2739a09dc7787740b09 100644 --- a/src/plugins/coreplugin/generalsettings.ui +++ b/src/plugins/coreplugin/generalsettings.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>GeneralSettings</class> - <widget class="QWidget" name="GeneralSettings"> + <class>Core::Internal::GeneralSettings</class> + <widget class="QWidget" name="Core::Internal::GeneralSettings"> <property name="geometry"> <rect> <x>0</x> @@ -62,7 +62,7 @@ <height>0</height> </size> </property> - <property name="alphaAllowed" stdset="0"> + <property name="alphaAllowed"> <bool>false</bool> </property> </widget> diff --git a/src/plugins/coreplugin/welcomemode.cpp b/src/plugins/coreplugin/welcomemode.cpp index ee85691c4252c84144e8f93be4a26d4dedf04b85..59bd555e7e92a9d6a9ca615ceb12901b46331a18 100644 --- a/src/plugins/coreplugin/welcomemode.cpp +++ b/src/plugins/coreplugin/welcomemode.cpp @@ -120,7 +120,7 @@ WelcomeMode::~WelcomeMode() QString WelcomeMode::name() const { - return QLatin1String("Welcome"); + return tr("Welcome"); } QIcon WelcomeMode::icon() const diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index d391907adca77a109bdabbce9d738669d884905d..54c598169ff56d8e52e683ed0de5fcf8751f7c73 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -27,6 +27,8 @@ ** **************************************************************************/ +#define QT_NO_CAST_FROM_ASCII + #include "gdbengine.h" #include "gdboptionspage.h" @@ -87,7 +89,14 @@ Q_DECLARE_METATYPE(Debugger::Internal::GdbMi); # define PENDING_DEBUG(s) #endif -static const QString tooltipIName = "tooltip"; +#define STRINGIFY_INTERNAL(x) #x +#define STRINGIFY(x) STRINGIFY_INTERNAL(x) + +#define _c(s) QLatin1Char(s) +#define __(s) QLatin1String(s) +#define _(s) QString::fromLatin1(s) + +static const QString tooltipIName = _("tooltip"); /////////////////////////////////////////////////////////////////////// // @@ -101,7 +110,7 @@ enum GdbCommandType GdbShowVersion = 100, GdbFileExecAndSymbols, - GdbQueryPwd, + //GdbQueryPwd, GdbQuerySources, GdbAsyncOutput2, GdbStart, @@ -116,7 +125,7 @@ enum GdbCommandType GdbExecNextI, GdbExecContinue, GdbExecFinish, - GdbExecJumpToLine, + //GdbExecJumpToLine, GdbExecInterrupt, GdbInfoShared, GdbInfoProc, @@ -270,9 +279,9 @@ void GdbEngine::gdbProcError(QProcess::ProcessError error) QString msg; switch (error) { case QProcess::FailedToStart: - msg = QString(tr("The Gdb process failed to start. Either the " + msg = tr("The Gdb process failed to start. Either the " "invoked program '%1' is missing, or you may have insufficient " - "permissions to invoke the program.")) + "permissions to invoke the program.") .arg(theDebuggerStringSetting(GdbLocation)); break; case QProcess::Crashed: @@ -328,15 +337,15 @@ void GdbEngine::readDebugeeOutput(const QByteArray &data) void GdbEngine::debugMessage(const QString &msg) { - emit gdbOutputAvailable("debug:", msg); + emit gdbOutputAvailable(_("debug:"), msg); } void GdbEngine::handleResponse(const QByteArray &buff) { static QTime lastTime; - emit gdbOutputAvailable(" ", currentTime()); - emit gdbOutputAvailable("stdout:", buff); + emit gdbOutputAvailable(_(" "), currentTime()); + emit gdbOutputAvailable(_("stdout:"), QString::fromLocal8Bit(buff)); #if 0 qDebug() // << "#### start response handling #### " @@ -411,36 +420,36 @@ void GdbEngine::handleResponse(const QByteArray &buff) // target-name="/usr/lib/libdrm.so.2", // host-name="/usr/lib/libdrm.so.2", // symbols-loaded="0" - QString id = record.findChild("id").data(); + QByteArray id = record.findChild("id").data(); if (!id.isEmpty()) - q->showStatusMessage(tr("Library %1 loaded.").arg(id)); + q->showStatusMessage(tr("Library %1 loaded.").arg(_(id))); } else if (asyncClass == "library-unloaded") { // Archer has 'id="/usr/lib/libdrm.so.2", // target-name="/usr/lib/libdrm.so.2", // host-name="/usr/lib/libdrm.so.2" - QString id = record.findChild("id").data(); - q->showStatusMessage(tr("Library %1 unloaded.").arg(id)); + QByteArray id = record.findChild("id").data(); + q->showStatusMessage(tr("Library %1 unloaded.").arg(_(id))); } else if (asyncClass == "thread-group-created") { // Archer has "{id="28902"}" - QString id = record.findChild("id").data(); - q->showStatusMessage(tr("Thread group %1 created.").arg(id)); + QByteArray id = record.findChild("id").data(); + q->showStatusMessage(tr("Thread group %1 created.").arg(_(id))); } else if (asyncClass == "thread-created") { //"{id="1",group-id="28902"}" - QString id = record.findChild("id").data(); - q->showStatusMessage(tr("Thread %1 created.").arg(id)); + QByteArray id = record.findChild("id").data(); + q->showStatusMessage(tr("Thread %1 created.").arg(_(id))); } else if (asyncClass == "thread-group-exited") { // Archer has "{id="28902"}" - QString id = record.findChild("id").data(); - q->showStatusMessage(tr("Thread group %1 exited.").arg(id)); + QByteArray id = record.findChild("id").data(); + q->showStatusMessage(tr("Thread group %1 exited.").arg(_(id))); } else if (asyncClass == "thread-exited") { //"{id="1",group-id="28902"}" - QString id = record.findChild("id").data(); - QString groupid = record.findChild("group-id").data(); + QByteArray id = record.findChild("id").data(); + QByteArray groupid = record.findChild("group-id").data(); q->showStatusMessage(tr("Thread %1 in group %2 exited.") - .arg(id).arg(groupid)); + .arg(_(id)).arg(_(groupid))); } else if (asyncClass == "thread-selected") { - QString id = record.findChild("id").data(); - q->showStatusMessage(tr("Thread %1 selected.").arg(id)); + QByteArray id = record.findChild("id").data(); + q->showStatusMessage(tr("Thread %1 selected.").arg(_(id))); //"{id="2"}" #ifdef Q_OS_MAC } else if (asyncClass == "shlibs-updated") { @@ -464,8 +473,7 @@ void GdbEngine::handleResponse(const QByteArray &buff) QByteArray data = GdbMi::parseCString(from, to); m_pendingConsoleStreamOutput += data; if (data.startsWith("Reading symbols from ")) { - q->showStatusMessage(tr("Reading ") - + QString::fromLatin1(data.mid(21))); + q->showStatusMessage(tr("Reading %1...").arg(_(data.mid(21)))); } break; } @@ -482,7 +490,7 @@ void GdbEngine::handleResponse(const QByteArray &buff) // On Windows, the contents seem to depend on the debugger // version and/or OS version used. if (data.startsWith("warning:")) - qq->showApplicationOutput(data.mid(9)); // cut "warning: " + qq->showApplicationOutput(_(data.mid(9))); // cut "warning: " break; } @@ -563,7 +571,7 @@ void GdbEngine::stubStarted() { q->m_attachedPID = m_stubProc.applicationPID(); qq->notifyInferiorPidChanged(q->m_attachedPID); - sendCommand("attach " + QString::number(q->m_attachedPID), GdbStubAttached); + sendCommand(_("attach ") + QString::number(q->m_attachedPID), GdbStubAttached); } void GdbEngine::stubError(const QString &msg) @@ -610,30 +618,30 @@ void GdbEngine::interruptInferior() { qq->notifyInferiorStopRequested(); if (m_gdbProc.state() == QProcess::NotRunning) { - debugMessage("TRYING TO INTERRUPT INFERIOR WITHOUT RUNNING GDB"); + debugMessage(_("TRYING TO INTERRUPT INFERIOR WITHOUT RUNNING GDB")); qq->notifyInferiorExited(); return; } if (q->m_attachedPID <= 0) { - debugMessage("TRYING TO INTERRUPT INFERIOR BEFORE PID WAS OBTAINED"); + debugMessage(_("TRYING TO INTERRUPT INFERIOR BEFORE PID WAS OBTAINED")); return; } if (!interruptProcess(q->m_attachedPID)) - debugMessage(QString("CANNOT INTERRUPT %1").arg(q->m_attachedPID)); + debugMessage(_("CANNOT INTERRUPT %1").arg(q->m_attachedPID)); } void GdbEngine::maybeHandleInferiorPidChanged(const QString &pid0) { int pid = pid0.toInt(); if (pid == 0) { - debugMessage(QString("Cannot parse PID from %1").arg(pid0)); + debugMessage(_("Cannot parse PID from %1").arg(pid0)); return; } if (pid == q->m_attachedPID) return; - debugMessage(QString("FOUND PID %1").arg(pid)); + debugMessage(_("FOUND PID %1").arg(pid)); q->m_attachedPID = pid; qq->notifyInferiorPidChanged(pid); } @@ -648,7 +656,7 @@ void GdbEngine::sendCommand(const QString &command, int type, const QVariant &cookie, StopNeeded needStop, Synchronization synchronized) { if (m_gdbProc.state() == QProcess::NotRunning) { - debugMessage("NO GDB PROCESS RUNNING, CMD IGNORED: " + command); + debugMessage(_("NO GDB PROCESS RUNNING, CMD IGNORED: ") + command); return; } @@ -673,14 +681,14 @@ void GdbEngine::sendCommand(const QString &command, int type, QTC_ASSERT(q->status() == DebuggerInferiorRunning, qDebug() << "STATUS: " << q->status()); q->showStatusMessage(tr("Stopping temporarily.")); - debugMessage("QUEUING COMMAND " + cmd.command); + debugMessage(_("QUEUING COMMAND ") + cmd.command); m_commandsToRunOnTemporaryBreak.append(cmd); interruptInferior(); } else if (!command.isEmpty()) { ++currentToken(); m_cookieForToken[currentToken()] = cmd; cmd.command = QString::number(currentToken()) + cmd.command; - if (cmd.command.contains("%1")) + if (cmd.command.contains(__("%1"))) cmd.command = cmd.command.arg(currentToken()); m_gdbProc.write(cmd.command.toLatin1() + "\r\n"); @@ -782,12 +790,16 @@ void GdbEngine::handleResult(const GdbResultRecord & record, int type, case GdbExecInterrupt: qq->notifyInferiorStopped(); break; +#if 0 case GdbExecJumpToLine: handleExecJumpToLine(record); break; +#endif +#if 0 case GdbQueryPwd: handleQueryPwd(record); break; +#endif case GdbQuerySources: handleQuerySources(record); break; @@ -877,7 +889,7 @@ void GdbEngine::handleResult(const GdbResultRecord & record, int type, handleEvaluateExpression(record, cookie.value<WatchData>()); break; case WatchToolTip: - handleToolTip(record, cookie.toString()); + handleToolTip(record, cookie.toByteArray()); break; case WatchDebuggingHelperValue1: handleDebuggingHelperValue1(record, cookie.value<WatchData>()); @@ -895,7 +907,7 @@ void GdbEngine::handleResult(const GdbResultRecord & record, int type, break; default: - debugMessage(QString("FIXME: GdbEngine::handleResult: " + debugMessage(_("FIXME: GdbEngine::handleResult: " "should not happen %1").arg(type)); break; } @@ -904,7 +916,7 @@ void GdbEngine::handleResult(const GdbResultRecord & record, int type, void GdbEngine::executeDebuggerCommand(const QString &command) { if (m_gdbProc.state() == QProcess::NotRunning) { - debugMessage("NO GDB PROCESS RUNNING, PLAIN CMD IGNORED: " + command); + debugMessage(_("NO GDB PROCESS RUNNING, PLAIN CMD IGNORED: ") + command); return; } @@ -932,7 +944,7 @@ void GdbEngine::handleTargetCore(const GdbResultRecord &record) reloadStack(); if (supportsThreads()) - sendSynchronizedCommand("-thread-list-ids", StackListThreads, 0); + sendSynchronizedCommand(_("-thread-list-ids"), StackListThreads, 0); // // Disassembler @@ -947,7 +959,7 @@ void GdbEngine::handleTargetCore(const GdbResultRecord &record) qq->reloadRegisters(); // Gdb-Macro based DebuggingHelpers - sendCommand( + sendCommand(_( "define qdumpqstring\n" "set $i = 0\n" "set $l = $arg0->d->size\n" @@ -957,9 +969,9 @@ void GdbEngine::handleTargetCore(const GdbResultRecord &record) "end\n" "printf \"\\n\"\n" "end\n" - ); + )); - sendCommand( + sendCommand(_( "define qdumpqstringlist\n" "set $i = $arg0->d->begin\n" "set $e = $arg0->d->end\n" @@ -968,9 +980,10 @@ void GdbEngine::handleTargetCore(const GdbResultRecord &record) "end\n" "printf \"\\n\"\n" "end\n" - ); + )); } +#if 0 void GdbEngine::handleQueryPwd(const GdbResultRecord &record) { // FIXME: remove this special case as soon as 'pwd' @@ -978,24 +991,26 @@ void GdbEngine::handleQueryPwd(const GdbResultRecord &record) //qDebug() << "PWD OUTPUT:" << record.toString(); // Gdb responses _unless_ we get an error first. if (record.resultClass == GdbResultDone) { + QByteArray pwd = record.data.findChild("consolestreamoutput").data(); #ifdef Q_OS_LINUX // "5^done,{logstreamoutput="pwd ",consolestreamoutput // ="Working directory /home/apoenitz/dev/work/test1. "} - m_pwd = record.data.findChild("consolestreamoutput").data(); - int pos = m_pwd.indexOf("Working directory"); - m_pwd = m_pwd.mid(pos + 18); - m_pwd = m_pwd.trimmed(); - if (m_pwd.endsWith('.')) - m_pwd.chop(1); + int pos = pwd.indexOf("Working directory"); + pwd = pwd.mid(pos + 18); + pwd = pwd.trimmed(); + if (pwd.endsWith('.')) + pwd.chop(1); #endif #ifdef Q_OS_WIN + FIXME: this is broken // ~"Working directory C:\\Users\\Thomas\\Documents\\WBTest3\\debug.\n" - m_pwd = record.data.findChild("consolestreamoutput").data(); - m_pwd = m_pwd.trimmed(); + pwd = pwd.trimmed(); #endif + m_pwd = QString::fromLocal8Bit(pwd); debugMessage("PWD RESULT: " + m_pwd); } } +#endif void GdbEngine::handleQuerySources(const GdbResultRecord &record) { @@ -1007,9 +1022,9 @@ void GdbEngine::handleQuerySources(const GdbResultRecord &record) // fullname="/data5/dev/ide/main/bin/gdbmacros/gdbmacros.cpp"}, GdbMi files = record.data.findChild("files"); foreach (const GdbMi &item, files.children()) { - QString fileName = item.findChild("file").data(); + QString fileName = QString::fromLocal8Bit(item.findChild("file").data()); GdbMi fullName = item.findChild("fullname"); - QString full = fullName.data(); + QString full = QString::fromLocal8Bit(fullName.data()); #ifdef Q_OS_WIN full = QDir::cleanPath(full); #endif @@ -1030,8 +1045,8 @@ void GdbEngine::handleInfoThreads(const GdbResultRecord &record) // FIXME: use something more robust // WIN: * 3 Thread 2312.0x4d0 0x7c91120f in ?? () // LINUX: * 1 Thread 0x7f466273c6f0 (LWP 21455) 0x0000000000404542 in ... - QRegExp re(QLatin1String("^\\*? +\\d+ +[Tt]hread (\\d+)\\.0x.* in")); - QString data = record.data.findChild("consolestreamoutput").data(); + QRegExp re(_("^\\*? +\\d+ +[Tt]hread (\\d+)\\.0x.* in")); + QString data = _(record.data.findChild("consolestreamoutput").data()); if (re.indexIn(data) != -1) maybeHandleInferiorPidChanged(re.cap(1)); } @@ -1042,13 +1057,13 @@ void GdbEngine::handleInfoProc(const GdbResultRecord &record) if (record.resultClass == GdbResultDone) { #if defined(Q_OS_MAC) //^done,process-id="85075" - maybeHandleInferiorPidChanged(record.data.findChild("process-id").data()); + maybeHandleInferiorPidChanged(QString::fromLatin1(record.data.findChild("process-id").data())); #endif #if defined(Q_OS_LINUX) || defined(Q_OS_WIN) // FIXME: use something more robust - QRegExp re(QLatin1String("process (\\d+)")); - QString data = record.data.findChild("consolestreamoutput").data(); + QRegExp re(__("process (\\d+)")); + QString data = __(record.data.findChild("consolestreamoutput").data()); if (re.indexIn(data) != -1) maybeHandleInferiorPidChanged(re.cap(1)); #endif @@ -1063,6 +1078,7 @@ void GdbEngine::handleInfoShared(const GdbResultRecord &record) } } +#if 0 void GdbEngine::handleExecJumpToLine(const GdbResultRecord &record) { // FIXME: remove this special case as soon as 'jump' @@ -1074,14 +1090,20 @@ void GdbEngine::handleExecJumpToLine(const GdbResultRecord &record) //109^done" qq->notifyInferiorStopped(); q->showStatusMessage(tr("Jumped. Stopped.")); - QString output = record.data.findChild("logstreamoutput").data(); - if (!output.isEmpty()) + QByteArray output = record.data.findChild("logstreamoutput").data(); + if (output.isEmpty()) return; - QString fileAndLine = output.section(' ', 1, 1); - QString file = fileAndLine.section(':', 0, 0); - int line = fileAndLine.section(':', 1, 1).toInt(); - q->gotoLocation(file, line, true); + int idx1 = output.indexOf(' ') + 1; + if (idx1 > 0) { + int idx2 = output.indexOf(':', idx1); + if (idx2 > 0) { + QString file = QString::fromLocal8Bit(output.mid(idx1, idx2 - idx1)); + int line = output.mid(idx2 + 1).toInt(); + q->gotoLocation(file, line, true); + } + } } +#endif void GdbEngine::handleExecRunToFunction(const GdbResultRecord &record) { @@ -1094,30 +1116,30 @@ void GdbEngine::handleExecRunToFunction(const GdbResultRecord &record) qq->notifyInferiorStopped(); q->showStatusMessage(tr("Run to Function finished. Stopped.")); GdbMi frame = record.data.findChild("frame"); - QString file = frame.findChild("fullname").data(); + QString file = QString::fromLocal8Bit(frame.findChild("fullname").data()); int line = frame.findChild("line").data().toInt(); qDebug() << "HIT: " << file << line << " IN " << frame.toString() << " -- " << record.toString(); q->gotoLocation(file, line, true); } -static bool isExitedReason(const QString &reason) +static bool isExitedReason(const QByteArray &reason) { - return reason == QLatin1String("exited-normally") // inferior exited normally - || reason == QLatin1String("exited-signalled") // inferior exited because of a signal - //|| reason == QLatin1String("signal-received") // inferior received signal - || reason == QLatin1String("exited"); // inferior exited + return reason == "exited-normally" // inferior exited normally + || reason == "exited-signalled" // inferior exited because of a signal + //|| reason == "signal-received" // inferior received signal + || reason == "exited"; // inferior exited } -static bool isStoppedReason(const QString &reason) +static bool isStoppedReason(const QByteArray &reason) { - return reason == QLatin1String("function-finished") // -exec-finish - || reason == QLatin1String("signal-received") // handled as "isExitedReason" - || reason == QLatin1String("breakpoint-hit") // -exec-continue - || reason == QLatin1String("end-stepping-range") // -exec-next, -exec-step - || reason == QLatin1String("location-reached") // -exec-until - || reason == QLatin1String("access-watchpoint-trigger") - || reason == QLatin1String("read-watchpoint-trigger") + return reason == "function-finished" // -exec-finish + || reason == "signal-received" // handled as "isExitedReason" + || reason == "breakpoint-hit" // -exec-continue + || reason == "end-stepping-range" // -exec-next, -exec-step + || reason == "location-reached" // -exec-until + || reason == "access-watchpoint-trigger" + || reason == "read-watchpoint-trigger" #ifdef Q_OS_MAC || reason.isEmpty() #endif @@ -1127,13 +1149,13 @@ static bool isStoppedReason(const QString &reason) void GdbEngine::handleAqcuiredInferior() { #if defined(Q_OS_WIN) - sendCommand("info thread", GdbInfoThreads); + sendCommand(_("info thread"), GdbInfoThreads); #endif #if defined(Q_OS_LINUX) - sendCommand("info proc", GdbInfoProc); + sendCommand(_("info proc"), GdbInfoProc); #endif #if defined(Q_OS_MAC) - sendCommand("info pid", GdbInfoProc, QVariant(), NeedsStop); + sendCommand(_("info pid"), GdbInfoProc, QVariant(), NeedsStop); #endif if (theDebuggerBoolSetting(ListSourceFiles)) reloadSourceFiles(); @@ -1143,18 +1165,18 @@ void GdbEngine::handleAqcuiredInferior() // intentionally after tryLoadDebuggingHelpers(), // otherwise we'd interupt solib loading. if (theDebuggerBoolSetting(AllPluginBreakpoints)) { - sendCommand("set auto-solib-add on"); - sendCommand("set stop-on-solib-events 0"); - sendCommand("sharedlibrary .*"); + sendCommand(_("set auto-solib-add on")); + sendCommand(_("set stop-on-solib-events 0")); + sendCommand(_("sharedlibrary .*")); } else if (theDebuggerBoolSetting(SelectedPluginBreakpoints)) { - sendCommand("set auto-solib-add on"); - sendCommand("set stop-on-solib-events 1"); - sendCommand("sharedlibrary " + sendCommand(_("set auto-solib-add on")); + sendCommand(_("set stop-on-solib-events 1")); + sendCommand(_("sharedlibrary ") + theDebuggerStringSetting(SelectedPluginBreakpointsPattern)); } else if (theDebuggerBoolSetting(NoPluginBreakpoints)) { // should be like that already - sendCommand("set auto-solib-add off"); - sendCommand("set stop-on-solib-events 0"); + sendCommand(_("set auto-solib-add off")); + sendCommand(_("set stop-on-solib-events 0")); } #endif @@ -1165,23 +1187,22 @@ void GdbEngine::handleAqcuiredInferior() void GdbEngine::handleAsyncOutput(const GdbMi &data) { - const QString reason = data.findChild("reason").data(); + const QByteArray &reason = data.findChild("reason").data(); if (isExitedReason(reason)) { qq->notifyInferiorExited(); - QString msg = "Program exited normally"; + QString msg; if (reason == "exited") { - msg = "Program exited with exit code " - + data.findChild("exit-code").toString(); - } else if (reason == "exited-signalled") { - msg = "Program exited after receiving signal " - + data.findChild("signal-name").toString(); - } else if (reason == "signal-received") { - msg = "Program exited after receiving signal " - + data.findChild("signal-name").toString(); + msg = tr("Program exited with exit code %1") + .arg(_(data.findChild("exit-code").toString())); + } else if (reason == "exited-signalled" || reason == "signal-received") { + msg = tr("Program exited after receiving signal %1") + .arg(_(data.findChild("signal-name").toString())); + } else { + msg = tr("Program exited normally"); } q->showStatusMessage(msg); - sendCommand("-gdb-exit", GdbExit); + sendCommand(_("-gdb-exit"), GdbExit); return; } @@ -1211,25 +1232,26 @@ void GdbEngine::handleAsyncOutput(const GdbMi &data) q->showStatusMessage(tr("Temporarily stopped.")); // FIXME: racy foreach (const GdbCookie &cmd, m_commandsToRunOnTemporaryBreak) { - debugMessage(QString("RUNNING QUEUED COMMAND %1 %2") + debugMessage(_("RUNNING QUEUED COMMAND %1 %2") .arg(cmd.command).arg(cmd.type)); sendCommand(cmd.command, cmd.type, cmd.cookie); } - sendCommand("p temporaryStop", GdbTemporaryContinue); + sendCommand(_("p temporaryStop"), GdbTemporaryContinue); m_commandsToRunOnTemporaryBreak.clear(); q->showStatusMessage(tr("Handling queued commands.")); return; } - QString msg = data.findChild("consolestreamoutput").data(); + const QByteArray &msg = data.findChild("consolestreamoutput").data(); if (msg.contains("Stopped due to shared library event") || reason.isEmpty()) { if (theDebuggerBoolSetting(SelectedPluginBreakpoints)) { - debugMessage("SHARED LIBRARY EVENT: " + data.toString()); + QString dataStr = _(data.toString()); + debugMessage(_("SHARED LIBRARY EVENT: ") + dataStr); QString pat = theDebuggerStringSetting(SelectedPluginBreakpointsPattern); - debugMessage("PATTERN: " + pat); - sendCommand("sharedlibrary " + pat); + debugMessage(_("PATTERN: ") + pat); + sendCommand(_("sharedlibrary ") + pat); continueInferior(); - q->showStatusMessage(tr("Loading %1...").arg(QString(data.toString()))); + q->showStatusMessage(tr("Loading %1...").arg(dataStr)); return; } m_modulesListOutdated = true; @@ -1255,11 +1277,11 @@ void GdbEngine::handleAsyncOutput(const GdbMi &data) if (reason == "end-stepping-range" || reason == "function-finished") { GdbMi frame = data.findChild("frame"); //debugMessage(frame.toString()); - m_currentFrame = frame.findChild("addr").data() + '%' + - frame.findChild("func").data() + '%'; + m_currentFrame = _(frame.findChild("addr").data() + '%' + + frame.findChild("func").data() + '%'); - QString funcName = frame.findChild("func").data(); - QString fileName = frame.findChild("file").data(); + QString funcName = _(frame.findChild("func").data()); + QString fileName = QString::fromLocal8Bit(frame.findChild("file").data()); if (isLeavableFunction(funcName, fileName)) { //debugMessage("LEAVING" + funcName); ++stepCounter; @@ -1289,37 +1311,37 @@ void GdbEngine::handleAsyncOutput(const GdbMi &data) q->showStatusMessage(tr("Stopped at breakpoint.")); GdbMi frame = data.findChild("frame"); //debugMessage("HIT BREAKPOINT: " + frame.toString()); - m_currentFrame = frame.findChild("addr").data() + '%' + - frame.findChild("func").data() + '%'; + m_currentFrame = _(frame.findChild("addr").data() + '%' + + frame.findChild("func").data() + '%'); QApplication::alert(q->mainWindow(), 3000); if (theDebuggerAction(ListSourceFiles)->value().toBool()) reloadSourceFiles(); - sendCommand("-break-list", BreakList); + sendCommand(_("-break-list"), BreakList); QVariant var = QVariant::fromValue<GdbMi>(data); - sendCommand("p 0", GdbAsyncOutput2, var); // dummy + sendCommand(_("p 0"), GdbAsyncOutput2, var); // dummy } else { #ifdef Q_OS_LINUX // For some reason, attaching to a stopped process causes *two* stops // when trying to continue (kernel 2.6.24-23-ubuntu). // Interestingly enough, on MacOSX no signal is delivered at all. - if (reason == QLatin1String("signal-received") + if (reason == "signal-received" && data.findChild("signal-name").data() == "SIGSTOP") { GdbMi frameData = data.findChild("frame"); if (frameData.findChild("func").data() == "_start" && frameData.findChild("from").data() == "/lib/ld-linux.so.2") { - sendCommand("-exec-continue"); + sendCommand(_("-exec-continue")); return; } } #endif - q->showStatusMessage(tr("Stopped: \"%1\"").arg(reason)); + q->showStatusMessage(tr("Stopped: \"%1\"").arg(_(reason))); handleAsyncOutput2(data); } return; } - debugMessage("STOPPED FOR UNKNOWN REASON: " + data.toString()); + debugMessage(_("STOPPED FOR UNKNOWN REASON: " + data.toString())); // Ignore it. Will be handled with full response later in the // JumpToLine or RunToFunction handlers #if 1 @@ -1337,7 +1359,7 @@ void GdbEngine::handleAsyncOutput(const GdbMi &data) qq->notifyInferiorStopped(); q->showStatusMessage(tr("Run to Function finished. Stopped.")); GdbMi frame = data.findChild("frame"); - QString file = frame.findChild("fullname").data(); + QString file = QString::fromLocal8Bit(frame.findChild("fullname").data()); int line = frame.findChild("line").data().toInt(); qDebug() << "HIT: " << file << line << " IN " << frame.toString() << " -- " << data.toString(); @@ -1347,15 +1369,15 @@ void GdbEngine::handleAsyncOutput(const GdbMi &data) void GdbEngine::reloadFullStack() { - QString cmd = "-stack-list-frames"; + QString cmd = _("-stack-list-frames"); sendSynchronizedCommand(cmd, StackListFrames, true); } void GdbEngine::reloadStack() { - QString cmd = "-stack-list-frames"; + QString cmd = _("-stack-list-frames"); if (int stackDepth = theDebuggerAction(MaximalStackDepth)->value().toInt()) - cmd += " 0 " + QString::number(stackDepth); + cmd += _(" 0 ") + QString::number(stackDepth); sendSynchronizedCommand(cmd, StackListFrames, false); } @@ -1372,7 +1394,7 @@ void GdbEngine::handleAsyncOutput2(const GdbMi &data) int currentId = data.findChild("thread-id").data().toInt(); reloadStack(); if (supportsThreads()) - sendSynchronizedCommand("-thread-list-ids", StackListThreads, currentId); + sendSynchronizedCommand(_("-thread-list-ids"), StackListThreads, currentId); // // Disassembler @@ -1383,7 +1405,7 @@ void GdbEngine::handleAsyncOutput2(const GdbMi &data) //args=[{name="argc",value="1"},{name="argv",value="0x7fffb7c23058"}], //file="test1.cpp",fullname="/home/apoenitz/dev/work/test1/test1.cpp",line="261"}" // Mac: (but only sometimes) - m_address = data.findChild("frame").findChild("addr").data(); + m_address = _(data.findChild("frame").findChild("addr").data()); qq->reloadDisassembler(); // @@ -1396,19 +1418,19 @@ void GdbEngine::handleShowVersion(const GdbResultRecord &response) { //qDebug () << "VERSION 2:" << response.data.findChild("consolestreamoutput").data(); //qDebug () << "VERSION:" << response.toString(); - debugMessage("VERSION:" + response.toString()); + debugMessage(_("VERSION:" + response.toString())); if (response.resultClass == GdbResultDone) { m_gdbVersion = 100; m_gdbBuildVersion = -1; - QString msg = response.data.findChild("consolestreamoutput").data(); - QRegExp supported("GNU gdb(.*) (\\d+)\\.(\\d+)(\\.(\\d+))?(-(\\d+))?"); + QString msg = QString::fromLocal8Bit(response.data.findChild("consolestreamoutput").data()); + QRegExp supported(_("GNU gdb(.*) (\\d+)\\.(\\d+)(\\.(\\d+))?(-(\\d+))?")); if (supported.indexIn(msg) == -1) { - debugMessage("UNSUPPORTED GDB VERSION " + msg); - QStringList list = msg.split("\n"); + debugMessage(_("UNSUPPORTED GDB VERSION ") + msg); + QStringList list = msg.split(_c('\n')); while (list.size() > 2) list.removeLast(); msg = tr("The debugger you are using identifies itself as:") - + "<p><p>" + list.join("<br>") + "<p><p>" + + _("<p><p>") + list.join(_("<br>")) + _("<p><p>") + tr("This version is not officially supported by Qt Creator.\n" "Debugging will most likely not work well.\n" "Using gdb 6.7 or later is strongly recommended."); @@ -1425,7 +1447,7 @@ void GdbEngine::handleShowVersion(const GdbResultRecord &response) + 100 * supported.cap(3).toInt() + 1 * supported.cap(5).toInt(); m_gdbBuildVersion = supported.cap(7).toInt(); - debugMessage(QString("GDB VERSION: %1").arg(m_gdbVersion)); + debugMessage(_("GDB VERSION: %1").arg(m_gdbVersion)); } //qDebug () << "VERSION 3:" << m_gdbVersion << m_gdbBuildVersion; } @@ -1437,7 +1459,7 @@ void GdbEngine::handleFileExecAndSymbols if (response.resultClass == GdbResultDone) { //m_breakHandler->clearBreakMarkers(); } else if (response.resultClass == GdbResultError) { - QString msg = response.data.findChild("msg").data(); + QString msg = __(response.data.findChild("msg").data()); QMessageBox::critical(q->mainWindow(), tr("Error"), tr("Starting executable failed:\n") + msg); QTC_ASSERT(q->status() == DebuggerInferiorRunning, /**/); @@ -1451,7 +1473,7 @@ void GdbEngine::handleExecRun(const GdbResultRecord &response) qq->notifyInferiorRunning(); q->showStatusMessage(tr("Running...")); } else if (response.resultClass == GdbResultError) { - QString msg = response.data.findChild("msg").data(); + const QByteArray &msg = response.data.findChild("msg").data(); if (msg == "Cannot find bounds of current function") { qq->notifyInferiorStopped(); //q->showStatusMessage(tr("No debug information available. " @@ -1459,7 +1481,7 @@ void GdbEngine::handleExecRun(const GdbResultRecord &response) //stepOutExec(); } else { QMessageBox::critical(q->mainWindow(), tr("Error"), - tr("Starting executable failed:\n") + msg); + tr("Starting executable failed:\n") + QString::fromLocal8Bit(msg)); QTC_ASSERT(q->status() == DebuggerInferiorRunning, /**/); interruptInferior(); } @@ -1520,14 +1542,14 @@ void GdbEngine::shutdown() void GdbEngine::exitDebugger() { - debugMessage(QString("GDBENGINE EXITDEBUFFER: %1").arg(m_gdbProc.state())); + debugMessage(_("GDBENGINE EXITDEBUFFER: %1").arg(m_gdbProc.state())); if (m_gdbProc.state() == QProcess::Starting) { - debugMessage(QString("WAITING FOR GDB STARTUP TO SHUTDOWN: %1") + debugMessage(_("WAITING FOR GDB STARTUP TO SHUTDOWN: %1") .arg(m_gdbProc.state())); m_gdbProc.waitForStarted(); } if (m_gdbProc.state() == QProcess::Running) { - debugMessage(QString("WAITING FOR RUNNING GDB TO SHUTDOWN: %1") + debugMessage(_("WAITING FOR RUNNING GDB TO SHUTDOWN: %1") .arg(m_gdbProc.state())); if (q->status() != DebuggerInferiorStopped && q->status() != DebuggerProcessStartingUp) { @@ -1536,21 +1558,21 @@ void GdbEngine::exitDebugger() interruptInferior(); } if (q->startMode() == AttachExternal) - sendCommand("detach"); + sendCommand(_("detach")); else - sendCommand("kill"); - sendCommand("-gdb-exit", GdbExit); + sendCommand(_("kill")); + sendCommand(_("-gdb-exit"), GdbExit); // 20s can easily happen when loading webkit debug information m_gdbProc.waitForFinished(20000); if (m_gdbProc.state() != QProcess::Running) { - debugMessage(QString("FORCING TERMINATION: %1") + debugMessage(_("FORCING TERMINATION: %1") .arg(m_gdbProc.state())); m_gdbProc.terminate(); m_gdbProc.waitForFinished(20000); } } if (m_gdbProc.state() != QProcess::NotRunning) - debugMessage("PROBLEM STOPPING DEBUGGER"); + debugMessage(_("PROBLEM STOPPING DEBUGGER")); m_outputCollector.shutdown(); initializeVariables(); @@ -1569,13 +1591,13 @@ bool GdbEngine::startDebugger() QStringList gdbArgs; if (m_gdbProc.state() != QProcess::NotRunning) { - debugMessage("GDB IS ALREADY RUNNING!"); + debugMessage(_("GDB IS ALREADY RUNNING!")); return false; } - //gdbArgs.prepend(QLatin1String("--quiet")); - gdbArgs.prepend(QLatin1String("mi")); - gdbArgs.prepend(QLatin1String("-i")); + //gdbArgs.prepend(_("--quiet")); + gdbArgs.prepend(_("mi")); + gdbArgs.prepend(_("-i")); if (q->startMode() == AttachCore || q->startMode() == AttachExternal) { // nothing to do @@ -1593,7 +1615,7 @@ bool GdbEngine::startDebugger() .arg(m_outputCollector.errorString())); return false; } - gdbArgs.prepend(QLatin1String("--tty=") + m_outputCollector.serverName()); + gdbArgs.prepend(_("--tty=") + m_outputCollector.serverName()); if (!q->m_workingDir.isEmpty()) m_gdbProc.setWorkingDirectory(q->m_workingDir); @@ -1612,7 +1634,7 @@ bool GdbEngine::startDebugger() #endif QString loc = theDebuggerStringSetting(GdbLocation); - q->showStatusMessage(tr("Starting Debugger: ") + loc + ' ' + gdbArgs.join(" ")); + q->showStatusMessage(tr("Starting Debugger: ") + loc + _c(' ') + gdbArgs.join(_(" "))); m_gdbProc.start(loc, gdbArgs); if (!m_gdbProc.waitForStarted()) { QMessageBox::critical(q->mainWindow(), tr("Debugger Startup Failure"), @@ -1626,34 +1648,34 @@ bool GdbEngine::startDebugger() q->showStatusMessage(tr("Gdb Running...")); - sendCommand("show version", GdbShowVersion); - //sendCommand("-enable-timings"); - sendCommand("set print static-members off"); // Seemingly doesn't work. - //sendCommand("define hook-stop\n-thread-list-ids\n-stack-list-frames\nend"); - //sendCommand("define hook-stop\nprint 4\nend"); - //sendCommand("define hookpost-stop\nprint 5\nend"); - //sendCommand("define hook-call\nprint 6\nend"); - //sendCommand("define hookpost-call\nprint 7\nend"); - //sendCommand("set print object on"); // works with CLI, but not MI - //sendCommand("set step-mode on"); // we can't work with that yes - //sendCommand("set exec-done-display on"); - //sendCommand("set print pretty on"); - //sendCommand("set confirm off"); - //sendCommand("set pagination off"); - sendCommand("set breakpoint pending on", BreakEnablePending); - sendCommand("set print elements 10000"); - sendCommand("-data-list-register-names", RegisterListNames); - - //sendCommand("set substitute-path /var/tmp/qt-x11-src-4.5.0 " - // "/home/sandbox/qtsdk-2009.01/qt"); + sendCommand(_("show version"), GdbShowVersion); + //sendCommand(_("-enable-timings"); + sendCommand(_("set print static-members off")); // Seemingly doesn't work. + //sendCommand(_("define hook-stop\n-thread-list-ids\n-stack-list-frames\nend")); + //sendCommand(_("define hook-stop\nprint 4\nend")); + //sendCommand(_("define hookpost-stop\nprint 5\nend")); + //sendCommand(_("define hook-call\nprint 6\nend")); + //sendCommand(_("define hookpost-call\nprint 7\nend")); + //sendCommand(_("set print object on")); // works with CLI, but not MI + //sendCommand(_("set step-mode on")); // we can't work with that yes + //sendCommand(_("set exec-done-display on")); + //sendCommand(_("set print pretty on")); + //sendCommand(_("set confirm off")); + //sendCommand(_("set pagination off")); + sendCommand(_("set breakpoint pending on"), BreakEnablePending); + sendCommand(_("set print elements 10000")); + sendCommand(_("-data-list-register-names"), RegisterListNames); + + //sendCommand(_("set substitute-path /var/tmp/qt-x11-src-4.5.0 " + // "/home/sandbox/qtsdk-2009.01/qt")); // one of the following is needed to prevent crashes in gdb on code like: // template <class T> T foo() { return T(0); } // int main() { return foo<int>(); } // (gdb) call 'int foo<int>'() // /build/buildd/gdb-6.8/gdb/valops.c:2069: internal-error: - sendCommand("set overload-resolution off"); - //sendCommand("set demangle-style none"); + sendCommand(_("set overload-resolution off")); + //sendCommand(_("set demangle-style none")); // From the docs: // Stop means reenter debugger if this signal happens (implies print). @@ -1664,19 +1686,19 @@ bool GdbEngine::startDebugger() // We need "print" as otherwise we would get no feedback whatsoever // Custom DebuggingHelper crashs which happen regularily for when accessing // uninitialized variables. - sendCommand("handle SIGSEGV nopass stop print"); + sendCommand(_("handle SIGSEGV nopass stop print")); // This is useful to kill the inferior whenever gdb dies. - //sendCommand("handle SIGTERM pass nostop print"); + //sendCommand(_("handle SIGTERM pass nostop print")); - sendCommand("set unwindonsignal on"); - sendCommand("pwd", GdbQueryPwd); - sendCommand("set width 0"); - sendCommand("set height 0"); + sendCommand(_("set unwindonsignal on")); + //sendCommand(_("pwd", GdbQueryPwd)); + sendCommand(_("set width 0")); + sendCommand(_("set height 0")); #ifdef Q_OS_MAC - sendCommand("-gdb-set inferior-auto-start-cfm off"); - sendCommand("-gdb-set sharedLibrary load-rules " + sendCommand(_("-gdb-set inferior-auto-start-cfm off")); + sendCommand(_("-gdb-set sharedLibrary load-rules " "dyld \".*libSystem.*\" all " "dyld \".*libauto.*\" all " "dyld \".*AppKit.*\" all " @@ -1684,14 +1706,14 @@ bool GdbEngine::startDebugger() "dyld \".*Foundation.*\" all " "dyld \".*CFDataFormatters.*\" all " "dyld \".*libobjc.*\" all " - "dyld \".*CarbonDataFormatters.*\" all"); + "dyld \".*CarbonDataFormatters.*\" all")); #endif QString scriptFileName = theDebuggerStringSetting(GdbScriptFile); if (!scriptFileName.isEmpty()) { QFile scriptFile(scriptFileName); if (scriptFile.open(QIODevice::ReadOnly)) { - sendCommand("source " + scriptFileName); + sendCommand(_("source ") + scriptFileName); } else { QMessageBox::warning(q->mainWindow(), tr("Cannot find debugger initialization script"), @@ -1703,36 +1725,36 @@ bool GdbEngine::startDebugger() } if (q->startMode() == AttachExternal) { - sendCommand("attach " + QString::number(q->m_attachedPID), GdbAttached); + sendCommand(_("attach ") + QString::number(q->m_attachedPID), GdbAttached); } else if (q->startMode() == AttachCore) { QFileInfo fi(q->m_executable); - QString fileName = '"' + fi.absoluteFilePath() + '"'; + QString fileName = _c('"') + fi.absoluteFilePath() + _c('"'); QFileInfo fi2(q->m_coreFile); // quoting core name below fails in gdb 6.8-debian QString coreName = fi2.absoluteFilePath(); - sendCommand("-file-exec-and-symbols " + fileName); - sendCommand("target core " + coreName, GdbTargetCore); + sendCommand(_("-file-exec-and-symbols ") + fileName); + sendCommand(_("target core ") + coreName, GdbTargetCore); } else if (q->m_useTerminal) { // nothing needed, stub takes care } else if (q->startMode() == StartInternal || q->startMode() == StartExternal) { QFileInfo fi(q->m_executable); - QString fileName = '"' + fi.absoluteFilePath() + '"'; - sendCommand("-file-exec-and-symbols " + fileName, GdbFileExecAndSymbols); - //sendCommand("file " + fileName, GdbFileExecAndSymbols); + QString fileName = _c('"') + fi.absoluteFilePath() + _c('"'); + sendCommand(_("-file-exec-and-symbols ") + fileName, GdbFileExecAndSymbols); + //sendCommand(_("file ") + fileName, GdbFileExecAndSymbols); #ifdef Q_OS_MAC - sendCommand("sharedlibrary apply-load-rules all"); + sendCommand(_("sharedlibrary apply-load-rules all")); #endif if (!q->m_processArgs.isEmpty()) - sendCommand("-exec-arguments " + q->m_processArgs.join(" ")); + sendCommand(_("-exec-arguments ") + q->m_processArgs.join(_(" "))); #ifndef Q_OS_MAC - sendCommand("set auto-solib-add off"); - sendCommand("info target", GdbStart); + sendCommand(_("set auto-solib-add off")); + sendCommand(_("info target"), GdbStart); #else // On MacOS, breaking in at the entry point wreaks havoc. - sendCommand("tbreak main"); + sendCommand(_("tbreak main")); m_waitingForFirstBreakpointToBeHit = true; qq->notifyInferiorRunningRequested(); - sendCommand("-exec-run"); + sendCommand(_("-exec-run")); #endif } @@ -1750,7 +1772,7 @@ void GdbEngine::continueInferior() q->resetLocation(); setTokenBarrier(); qq->notifyInferiorRunningRequested(); - sendCommand("-exec-continue", GdbExecContinue); + sendCommand(_("-exec-continue"), GdbExecContinue); } void GdbEngine::handleStart(const GdbResultRecord &response) @@ -1762,19 +1784,19 @@ void GdbEngine::handleStart(const GdbResultRecord &response) // [some leading stdout here] // stdout:&" Entry point: 0x80831f0 0x08048134 - 0x08048147 is .interp\n" // [some trailing stdout here] - QString msg = response.data.findChild("consolestreamoutput").data(); - QRegExp needle("\\bEntry point: (0x[0-9a-f]+)\\b"); + QString msg = _(response.data.findChild("consolestreamoutput").data()); + QRegExp needle(_("\\bEntry point: (0x[0-9a-f]+)\\b")); if (needle.indexIn(msg) != -1) { //debugMessage("STREAM: " + msg + " " + needle.cap(1)); - sendCommand("tbreak *" + needle.cap(1)); + sendCommand(_("tbreak *") + needle.cap(1)); m_waitingForFirstBreakpointToBeHit = true; qq->notifyInferiorRunningRequested(); - sendCommand("-exec-run"); + sendCommand(_("-exec-run")); } else { - debugMessage("PARSING START ADDRESS FAILED: " + msg); + debugMessage(_("PARSING START ADDRESS FAILED: ") + msg); } } else if (response.resultClass == GdbResultError) { - debugMessage("FETCHING START ADDRESS FAILED: " + response.toString()); + debugMessage(_("FETCHING START ADDRESS FAILED: " + response.toString())); } #endif } @@ -1796,7 +1818,7 @@ void GdbEngine::handleAttach() reloadStack(); if (supportsThreads()) - sendSynchronizedCommand("-thread-list-ids", StackListThreads, 0); + sendSynchronizedCommand(_("-thread-list-ids"), StackListThreads, 0); // // Disassembler @@ -1821,59 +1843,59 @@ void GdbEngine::stepExec() { setTokenBarrier(); qq->notifyInferiorRunningRequested(); - sendCommand("-exec-step", GdbExecStep); + sendCommand(_("-exec-step"), GdbExecStep); } void GdbEngine::stepIExec() { setTokenBarrier(); qq->notifyInferiorRunningRequested(); - sendCommand("-exec-step-instruction", GdbExecStepI); + sendCommand(_("-exec-step-instruction"), GdbExecStepI); } void GdbEngine::stepOutExec() { setTokenBarrier(); qq->notifyInferiorRunningRequested(); - sendCommand("-exec-finish", GdbExecFinish); + sendCommand(_("-exec-finish"), GdbExecFinish); } void GdbEngine::nextExec() { setTokenBarrier(); qq->notifyInferiorRunningRequested(); - sendCommand("-exec-next", GdbExecNext); + sendCommand(_("-exec-next"), GdbExecNext); } void GdbEngine::nextIExec() { setTokenBarrier(); qq->notifyInferiorRunningRequested(); - sendCommand("-exec-next-instruction", GdbExecNextI); + sendCommand(_("-exec-next-instruction"), GdbExecNextI); } void GdbEngine::runToLineExec(const QString &fileName, int lineNumber) { setTokenBarrier(); qq->notifyInferiorRunningRequested(); - sendCommand("-exec-until " + fileName + ":" + QString::number(lineNumber)); + sendCommand(_("-exec-until ") + fileName + _c(':') + QString::number(lineNumber)); } void GdbEngine::runToFunctionExec(const QString &functionName) { setTokenBarrier(); - sendCommand("-break-insert -t " + functionName); + sendCommand(_("-break-insert -t ") + functionName); qq->notifyInferiorRunningRequested(); - sendCommand("-exec-continue", GdbExecRunToFunction); + sendCommand(_("-exec-continue"), GdbExecRunToFunction); } void GdbEngine::jumpToLineExec(const QString &fileName, int lineNumber) { #if 1 // not available everywhere? - //sendCliCommand("tbreak " + fileName + ":" + QString::number(lineNumber)); - sendCommand("-break-insert -t " + fileName + ":" + QString::number(lineNumber)); - sendCommand("jump " + fileName + ":" + QString::number(lineNumber)); + //sendCliCommand(_("tbreak ") + fileName + ':' + QString::number(lineNumber)); + sendCommand(_("-break-insert -t ") + fileName + _c(':') + QString::number(lineNumber)); + sendCommand(_("jump ") + fileName + _c(':') + QString::number(lineNumber)); // will produce something like // &"jump /home/apoenitz/dev/work/test1/test1.cpp:242" // ~"Continuing at 0x4058f3." @@ -1882,11 +1904,11 @@ void GdbEngine::jumpToLineExec(const QString &fileName, int lineNumber) // 23^done" q->gotoLocation(fileName, lineNumber, true); //setBreakpoint(); - //sendCommand("jump " + fileName + ":" + QString::number(lineNumber)); + //sendCommand(_("jump ") + fileName + ':' + QString::number(lineNumber)); #else q->gotoLocation(fileName, lineNumber, true); setBreakpoint(fileName, lineNumber); - sendCommand("jump " + fileName + ":" + QString::number(lineNumber)); + sendCommand(_("jump ") + fileName + ':' + QString::number(lineNumber)); #endif } @@ -1918,20 +1940,20 @@ void GdbEngine::setTokenBarrier() ); } PENDING_DEBUG("\n--- token barrier ---\n"); - emit gdbInputAvailable(QString(), "--- token barrier ---"); + emit gdbInputAvailable(QString(), _("--- token barrier ---")); m_oldestAcceptableToken = currentToken(); } void GdbEngine::setDebugDebuggingHelpers(const QVariant &on) { if (on.toBool()) { - debugMessage("SWITCHING ON DUMPER DEBUGGING"); - sendCommand("set unwindonsignal off"); - q->breakByFunction("qDumpObjectData440"); + debugMessage(_("SWITCHING ON DUMPER DEBUGGING")); + sendCommand(_("set unwindonsignal off")); + q->breakByFunction(_("qDumpObjectData440")); //updateLocals(); } else { - debugMessage("SWITCHING OFF DUMPER DEBUGGING"); - sendCommand("set unwindonsignal on"); + debugMessage(_("SWITCHING OFF DUMPER DEBUGGING")); + sendCommand(_("set unwindonsignal on")); } } @@ -1954,30 +1976,30 @@ void GdbEngine::breakpointDataFromOutput(BreakpointData *data, const GdbMi &bkpt QStringList files; foreach (const GdbMi &child, bkpt.children()) { if (child.hasName("number")) { - data->bpNumber = child.data(); + data->bpNumber = _(child.data()); } else if (child.hasName("func")) { - data->bpFuncName = child.data(); + data->bpFuncName = _(child.data()); } else if (child.hasName("addr")) { // <MULTIPLE> happens in constructors. In this case there are // _two_ fields named "addr" in the response. On Linux that is... if (child.data() == "<MULTIPLE>") data->bpMultiple = true; else - data->bpAddress = child.data(); + data->bpAddress = _(child.data()); } else if (child.hasName("file")) { - files.append(child.data()); + files.append(QString::fromLocal8Bit(child.data())); } else if (child.hasName("fullname")) { - QString fullName = child.data(); + QString fullName = QString::fromLocal8Bit(child.data()); #ifdef Q_OS_WIN fullName = QDir::cleanPath(fullName); #endif files.prepend(fullName); } else if (child.hasName("line")) { - data->bpLineNumber = child.data(); + data->bpLineNumber = _(child.data()); if (child.data().toInt()) data->markerLineNumber = child.data().toInt(); } else if (child.hasName("cond")) { - data->bpCondition = child.data(); + data->bpCondition = _(child.data()); // gdb 6.3 likes to "rewrite" conditions. Just accept that fact. if (data->bpCondition != data->condition && data->conditionsMatch()) data->condition = data->bpCondition; @@ -1986,14 +2008,14 @@ void GdbEngine::breakpointDataFromOutput(BreakpointData *data, const GdbMi &bkpt data->pending = true; int pos = child.data().lastIndexOf(':'); if (pos > 0) { - data->bpLineNumber = child.data().mid(pos + 1); + data->bpLineNumber = _(child.data().mid(pos + 1)); data->markerLineNumber = child.data().mid(pos + 1).toInt(); - QString file = child.data().left(pos); - if (file.startsWith('"') && file.endsWith('"')) + QString file = QString::fromLocal8Bit(child.data().left(pos)); + if (file.startsWith(_c('"')) && file.endsWith(_c('"'))) file = file.mid(1, file.size() - 2); files.prepend(file); } else { - files.prepend(child.data()); + files.prepend(QString::fromLocal8Bit(child.data())); } } } @@ -2031,7 +2053,7 @@ void GdbEngine::sendInsertBreakpoint(int index) #endif // we need something like "\"file name.cpp\":100" to // survive the gdb command line parser with file names intact - where = "\"\\\"" + where + "\\\":" + data->lineNumber + "\""; + where = _("\"\\\"") + where + _("\\\":") + data->lineNumber + _c('"'); } else { where = data->funcName; } @@ -2039,24 +2061,24 @@ void GdbEngine::sendInsertBreakpoint(int index) // set up fallback in case of pending breakpoints which aren't handled // by the MI interface #ifdef Q_OS_LINUX - QString cmd = "-break-insert -f "; + QString cmd = _("-break-insert -f "); //if (!data->condition.isEmpty()) - // cmd += "-c " + data->condition + " "; + // cmd += _("-c ") + data->condition + ' '; cmd += where; #endif #ifdef Q_OS_MAC - QString cmd = "-break-insert -l -1 "; + QString cmd = _("-break-insert -l -1 "); //if (!data->condition.isEmpty()) // cmd += "-c " + data->condition + " "; cmd += where; #endif #ifdef Q_OS_WIN - QString cmd = "-break-insert "; + QString cmd = _("-break-insert "); //if (!data->condition.isEmpty()) // cmd += "-c " + data->condition + " "; cmd += where; #endif - debugMessage(QString("Current state: %1").arg(q->status())); + debugMessage(_("Current state: %1").arg(q->status())); sendCommand(cmd, BreakInsert, index, NeedsStop); } @@ -2134,11 +2156,11 @@ void GdbEngine::handleBreakIgnore(const GdbResultRecord &record, int index) // gdb 6.3 does not produce any console output BreakHandler *handler = qq->breakHandler(); if (record.resultClass == GdbResultDone && index < handler->size()) { - QString msg = record.data.findChild("consolestreamoutput").data(); + QString msg = _(record.data.findChild("consolestreamoutput").data()); BreakpointData *data = handler->at(index); - //if (msg.contains("Will stop next time breakpoint")) { - // data->bpIgnoreCount = "0"; - //} else if (msg.contains("Will ignore next")) { + //if (msg.contains(__("Will stop next time breakpoint"))) { + // data->bpIgnoreCount = _("0"); + //} else if (msg.contains(__("Will ignore next"))) { // data->bpIgnoreCount = data->ignoreCount; //} // FIXME: this assumes it is doing the right thing... @@ -2160,7 +2182,7 @@ void GdbEngine::handleBreakCondition(const GdbResultRecord &record, int index) attemptBreakpointSynchronization(); handler->updateMarkers(); } else if (record.resultClass == GdbResultError) { - QString msg = record.data.findChild("msg").data(); + QByteArray msg = record.data.findChild("msg").data(); // happens on Mac if (1 || msg.startsWith("Error parsing breakpoint condition. " " Will try again when we hit the breakpoint.")) { @@ -2192,31 +2214,31 @@ void GdbEngine::handleBreakInsert(const GdbResultRecord &record, int index) #ifdef Q_OS_LINUX //QString where = "\"\\\"" + data->fileName + "\\\":" // + data->lineNumber + "\""; - QString where = "\"" + data->fileName + "\":" + QString where = _c('"') + data->fileName + _("\":") + data->lineNumber; // Should not happen with -break-insert -f. gdb older than 6.8? QTC_ASSERT(false, /**/); - sendCommand("break " + where, BreakInsert1, index); + sendCommand(_("break ") + where, BreakInsert1, index); #endif #ifdef Q_OS_MAC QFileInfo fi(data->fileName); - QString where = "\"" + fi.fileName() + "\":" + QString where = _c('"') + fi.fileName() + _("\":") + data->lineNumber; - sendCommand("break " + where, BreakInsert1, index); + sendCommand(_("break ") + where, BreakInsert1, index); #endif #ifdef Q_OS_WIN QFileInfo fi(data->fileName); - QString where = "\"" + fi.fileName() + "\":" + QString where = _c('"') + fi.fileName() + _("\":") + data->lineNumber; - //QString where = m_data->fileName + QLatin1Char(':') + data->lineNumber; - sendCommand("break " + where, BreakInsert1, index); + //QString where = m_data->fileName + _c(':') + data->lineNumber; + sendCommand(_("break ") + where, BreakInsert1, index); #endif } } void GdbEngine::extractDataFromInfoBreak(const QString &output, BreakpointData *data) { - data->bpFileName = "<MULTIPLE>"; + data->bpFileName = _("<MULTIPLE>"); //qDebug() << output; if (output.isEmpty()) @@ -2235,7 +2257,7 @@ void GdbEngine::extractDataFromInfoBreak(const QString &output, BreakpointData * // 2.2 y 0x00401792 in MainWindow::MainWindow(QWidget*) at mainwindow.cpp:7 // tested in ../../../tests/auto/debugger/ - QRegExp re("MULTIPLE.*(0x[0-9a-f]+) in (.*)\\s+at (.*):([\\d]+)([^\\d]|$)"); + QRegExp re(_("MULTIPLE.*(0x[0-9a-f]+) in (.*)\\s+at (.*):([\\d]+)([^\\d]|$)")); re.setMinimal(true); if (re.indexIn(output) != -1) { @@ -2255,7 +2277,7 @@ void GdbEngine::extractDataFromInfoBreak(const QString &output, BreakpointData * // << re.cap(3) << "\n" << re.cap(4) << "\n"; } else { qDebug() << "COULD NOT MATCH " << re.pattern() << " AND " << output; - data->bpNumber = "<unavailable>"; + data->bpNumber = _("<unavailable>"); } } @@ -2267,7 +2289,7 @@ void GdbEngine::handleBreakInfo(const GdbResultRecord &record, int bpNumber) // constructor int found = handler->findBreakpoint(bpNumber); if (found != -1) { - QString str = record.data.findChild("consolestreamoutput").data(); + QString str = QString::fromLocal8Bit(record.data.findChild("consolestreamoutput").data()); extractDataFromInfoBreak(str, handler->at(found)); handler->updateMarkers(); attemptBreakpointSynchronization(); // trigger "ready" @@ -2288,7 +2310,7 @@ void GdbEngine::handleBreakInsert1(const GdbResultRecord &record, int index) } else if (record.resultClass == GdbResultError) { qDebug() << "INSERTING BREAKPOINT WITH BASE NAME FAILED. GIVING UP"; BreakpointData *data = handler->at(index); - data->bpNumber = "<unavailable>"; + data->bpNumber = _("<unavailable>"); attemptBreakpointSynchronization(); // trigger "ready" handler->updateMarkers(); } @@ -2306,23 +2328,23 @@ void GdbEngine::attemptBreakpointSynchronization() foreach (BreakpointData *data, handler->takeDisabledBreakpoints()) { QString bpNumber = data->bpNumber; if (!bpNumber.trimmed().isEmpty()) - sendCommand("-break-disable " + bpNumber, BreakDisable, QVariant(), + sendCommand(_("-break-disable ") + bpNumber, BreakDisable, QVariant(), NeedsStop); } foreach (BreakpointData *data, handler->takeEnabledBreakpoints()) { QString bpNumber = data->bpNumber; if (!bpNumber.trimmed().isEmpty()) - sendCommand("-break-enable " + bpNumber, BreakEnable, QVariant(), + sendCommand(_("-break-enable ") + bpNumber, BreakEnable, QVariant(), NeedsStop); } foreach (BreakpointData *data, handler->takeRemovedBreakpoints()) { QString bpNumber = data->bpNumber; - debugMessage(QString("DELETING BP %1 IN %2").arg(bpNumber) + debugMessage(_("DELETING BP %1 IN %2").arg(bpNumber) .arg(data->markerFileName)); if (!bpNumber.trimmed().isEmpty()) - sendCommand("-break-delete " + bpNumber, BreakDelete, QVariant(), + sendCommand(_("-break-delete ") + bpNumber, BreakDelete, QVariant(), NeedsStop); delete data; } @@ -2333,7 +2355,7 @@ void GdbEngine::attemptBreakpointSynchronization() BreakpointData *data = handler->at(index); // multiple breakpoints? if (data->bpMultiple && data->bpFileName.isEmpty()) { - sendCommand(QString("info break %1").arg(data->bpNumber), + sendCommand(_("info break %1").arg(data->bpNumber), BreakInfo, data->bpNumber.toInt()); updateNeeded = true; break; @@ -2344,7 +2366,7 @@ void GdbEngine::attemptBreakpointSynchronization() BreakpointData *data = handler->at(index); // unset breakpoints? if (data->bpNumber.isEmpty()) { - data->bpNumber = " "; + data->bpNumber = _(" "); sendInsertBreakpoint(index); //qDebug() << "UPDATE NEEDED BECAUSE OF UNKNOWN BREAKPOINT"; updateNeeded = true; @@ -2358,7 +2380,7 @@ void GdbEngine::attemptBreakpointSynchronization() // update conditions if needed if (data->bpNumber.toInt() && data->condition != data->bpCondition && !data->conditionsMatch()) { - sendCommand(QString("condition %1 %2").arg(data->bpNumber) + sendCommand(_("condition %1 %2").arg(data->bpNumber) .arg(data->condition), BreakCondition, index); //qDebug() << "UPDATE NEEDED BECAUSE OF CONDITION" // << data->condition << data->bpCondition; @@ -2367,7 +2389,7 @@ void GdbEngine::attemptBreakpointSynchronization() } // update ignorecount if needed if (data->bpNumber.toInt() && data->ignoreCount != data->bpIgnoreCount) { - sendCommand(QString("ignore %1 %2").arg(data->bpNumber) + sendCommand(_("ignore %1 %2").arg(data->bpNumber) .arg(data->ignoreCount), BreakIgnore, index); updateNeeded = true; break; @@ -2378,7 +2400,7 @@ void GdbEngine::attemptBreakpointSynchronization() for (int index = 0; index != handler->size(); ++index) { // happens sometimes on Mac. Brush over symptoms BreakpointData *data = handler->at(index); - if (data->markerFileName.startsWith("../")) { + if (data->markerFileName.startsWith(__("../"))) { data->markerFileName = fullName(data->markerFileName); handler->updateMarkers(); } @@ -2402,17 +2424,17 @@ void GdbEngine::attemptBreakpointSynchronization() void GdbEngine::reloadDisassembler() { - emit sendCommand("disassemble", DisassemblerList, m_address); + emit sendCommand(_("disassemble"), DisassemblerList, m_address); } void GdbEngine::handleDisassemblerList(const GdbResultRecord &record, const QString &cookie) { QList<DisassemblerLine> lines; - static const QString pad = QLatin1String(" "); + static const QString pad = _(" "); int currentLine = -1; if (record.resultClass == GdbResultDone) { - QString res = record.data.findChild("consolestreamoutput").data(); + QString res = _(record.data.findChild("consolestreamoutput").data()); QTextStream ts(&res, QIODevice::ReadOnly); while (!ts.atEnd()) { //0x0000000000405fd8 <_ZN11QTextStreamD1Ev@plt+0>: @@ -2424,7 +2446,7 @@ void GdbEngine::handleDisassemblerList(const GdbResultRecord &record, //0x0000000000405fe8 <_ZN9QHashData6rehashEi@plt+0>: // jmpq *2151882(%rip) # 0x6135b8 <_GLOBAL_OFFSET_TABLE_+648> QString str = ts.readLine(); - if (!str.startsWith(QLatin1String("0x"))) { + if (!str.startsWith(__("0x"))) { //qDebug() << "IGNORING DISASSEMBLER" << str; continue; } @@ -2432,10 +2454,10 @@ void GdbEngine::handleDisassemblerList(const GdbResultRecord &record, QTextStream ts(&str, QIODevice::ReadOnly); ts >> line.address >> line.symbol; line.mnemonic = ts.readLine().trimmed(); - if (line.symbol.endsWith(QLatin1Char(':'))) + if (line.symbol.endsWith(_c(':'))) line.symbol.chop(1); line.addressDisplay = line.address + pad; - if (line.addressDisplay.startsWith(QLatin1String("0x00000000"))) + if (line.addressDisplay.startsWith(__("0x00000000"))) line.addressDisplay.replace(2, 8, QString()); line.symbolDisplay = line.symbol + pad; @@ -2465,13 +2487,13 @@ void GdbEngine::handleDisassemblerList(const GdbResultRecord &record, void GdbEngine::loadSymbols(const QString &moduleName) { // FIXME: gdb does not understand quoted names here (tested with 6.8) - sendCommand("sharedlibrary " + dotEscape(moduleName)); + sendCommand(_("sharedlibrary ") + dotEscape(moduleName)); reloadModules(); } void GdbEngine::loadAllSymbols() { - sendCommand("sharedlibrary .*"); + sendCommand(_("sharedlibrary .*")); reloadModules(); } @@ -2481,17 +2503,17 @@ QList<Symbol> GdbEngine::moduleSymbols(const QString &moduleName) bool success = false; QString errorMessage; do { - const QString nmBinary = QLatin1String("nm"); + const QString nmBinary = _("nm"); QProcess proc; - proc.start(nmBinary, QStringList() << QLatin1String("-D") << moduleName); + proc.start(nmBinary, QStringList() << _("-D") << moduleName); if (!proc.waitForFinished()) { errorMessage = tr("Unable to run '%1': %2").arg(nmBinary, proc.errorString()); break; } const QString contents = QString::fromLocal8Bit(proc.readAllStandardOutput()); - const QRegExp re(QLatin1String("([0-9a-f]+)?\\s+([^\\s]+)\\s+([^\\s]+)")); + const QRegExp re(_("([0-9a-f]+)?\\s+([^\\s]+)\\s+([^\\s]+)")); Q_ASSERT(re.isValid()); - foreach (const QString &line, contents.split(QLatin1Char('\n'))) { + foreach (const QString &line, contents.split(_c('\n'))) { if (re.indexIn(line) != -1) { Symbol symbol; symbol.address = re.cap(1); @@ -2511,7 +2533,7 @@ QList<Symbol> GdbEngine::moduleSymbols(const QString &moduleName) void GdbEngine::reloadModules() { - sendCommand("info shared", ModulesList, QVariant()); + sendCommand(_("info shared"), ModulesList, QVariant()); } void GdbEngine::handleModulesList(const GdbResultRecord &record) @@ -2520,18 +2542,18 @@ void GdbEngine::handleModulesList(const GdbResultRecord &record) if (record.resultClass == GdbResultDone) { // that's console-based output, likely Linux or Windows, // but we can avoid the #ifdef here - QString data = record.data.findChild("consolestreamoutput").data(); + QString data = QString::fromLocal8Bit(record.data.findChild("consolestreamoutput").data()); QTextStream ts(&data, QIODevice::ReadOnly); while (!ts.atEnd()) { QString line = ts.readLine(); - if (!line.startsWith("0x")) + if (!line.startsWith(__("0x"))) continue; Module module; QString symbolsRead; QTextStream ts(&line, QIODevice::ReadOnly); ts >> module.startAddress >> module.endAddress >> symbolsRead; module.moduleName = ts.readLine().trimmed(); - module.symbolsRead = (symbolsRead == "Yes"); + module.symbolsRead = (symbolsRead == __("Yes")); modules.append(module); } if (modules.isEmpty()) { @@ -2542,10 +2564,11 @@ void GdbEngine::handleModulesList(const GdbResultRecord &record) // shlib-info={...}... foreach (const GdbMi &item, record.data.children()) { Module module; - module.moduleName = item.findChild("path").data(); + module.moduleName = QString::fromLocal8Bit(item.findChild("path").data()); module.symbolsRead = (item.findChild("state").data() == "Y"); - module.startAddress = item.findChild("loaded_addr").data(); - module.endAddress = "<unknown>"; + module.startAddress = _(item.findChild("loaded_addr").data()); + //: End address of loaded module + module.endAddress = tr("<unknown>"); modules.append(module); } } @@ -2562,7 +2585,7 @@ void GdbEngine::handleModulesList(const GdbResultRecord &record) void GdbEngine::reloadSourceFiles() { - sendCommand("-file-list-exec-source-files", GdbQuerySources); + sendCommand(_("-file-list-exec-source-files"), GdbQuerySources); } @@ -2586,7 +2609,7 @@ void GdbEngine::handleStackListFrames(const GdbResultRecord &record, bool isFull QList<StackFrame> stackFrames; const GdbMi stack = record.data.findChild("stack"); - QString dummy = stack.toString(); + stack.toString(); if (!stack.isValid()) { qDebug() << "FIXME: stack: " << stack.toString(); return; @@ -2600,13 +2623,13 @@ void GdbEngine::handleStackListFrames(const GdbResultRecord &record, bool isFull const GdbMi frameMi = stack.childAt(i); StackFrame frame(i); QStringList files; - files.append(frameMi.findChild("fullname").data()); - files.append(frameMi.findChild("file").data()); + files.append(QString::fromLocal8Bit(frameMi.findChild("fullname").data())); + files.append(QString::fromLocal8Bit(frameMi.findChild("file").data())); frame.file = fullName(files); - frame.function = frameMi.findChild("func").data(); - frame.from = frameMi.findChild("from").data(); + frame.function = _(frameMi.findChild("func").data()); + frame.from = _(frameMi.findChild("from").data()); frame.line = frameMi.findChild("line").data().toInt(); - frame.address = frameMi.findChild("addr").data(); + frame.address = _(frameMi.findChild("addr").data()); stackFrames.append(frame); @@ -2614,13 +2637,13 @@ void GdbEngine::handleStackListFrames(const GdbResultRecord &record, bool isFull const bool isBogus = // Assume this is wrong and points to some strange stl_algobase // implementation. Happens on Karsten's XP system with Gdb 5.50 - (frame.file.endsWith("/bits/stl_algobase.h") && frame.line == 150) + (frame.file.endsWith(_("/bits/stl_algobase.h")) && frame.line == 150) // Also wrong. Happens on Vista with Gdb 5.50 - || (frame.function == "operator new" && frame.line == 151); + || (frame.function == _("operator new") && frame.line == 151); // immediately leave bogus frames if (topFrame == -1 && isBogus) { - sendCommand("-exec-finish"); + sendCommand(_("-exec-finish")); return; } @@ -2659,7 +2682,7 @@ void GdbEngine::selectThread(int index) QTC_ASSERT(index < threads.size(), return); int id = threads.at(index).id; q->showStatusMessage(tr("Retrieving data for stack view..."), 10000); - sendCommand(QLatin1String("-thread-select ") + QString::number(id), + sendCommand(_("-thread-select ") + QString::number(id), StackSelectThread); } @@ -2685,7 +2708,7 @@ void GdbEngine::activateFrame(int frameIndex) // Assuming this always succeeds saves a roundtrip. // Otherwise the lines below would need to get triggered // after a response to this -stack-select-frame here. - sendCommand("-stack-select-frame " + QString::number(frameIndex)); + sendCommand(_("-stack-select-frame ") + QString::number(frameIndex)); stackHandler->setCurrentIndex(frameIndex); updateLocals(); @@ -2747,7 +2770,7 @@ static inline char registerFormatChar() void GdbEngine::reloadRegisters() { - sendCommand(QLatin1String("-data-list-register-values ") + QLatin1Char(registerFormatChar()), RegisterListValues); + sendCommand(_("-data-list-register-values ") + _c(registerFormatChar()), RegisterListValues); } void GdbEngine::handleRegisterListNames(const GdbResultRecord &record) @@ -2757,7 +2780,7 @@ void GdbEngine::handleRegisterListNames(const GdbResultRecord &record) QList<Register> registers; foreach (const GdbMi &item, record.data.findChild("register-names").children()) - registers.append(Register(item.data())); + registers.append(Register(_(item.data()))); qq->registerHandler()->setRegisters(registers); } @@ -2774,7 +2797,7 @@ void GdbEngine::handleRegisterListValues(const GdbResultRecord &record) int index = item.findChild("number").data().toInt(); if (index < registers.size()) { Register ® = registers[index]; - QString value = item.findChild("value").data(); + QString value = _(item.findChild("value").data()); reg.changed = (value != reg.value); if (reg.changed) reg.value = value; @@ -2838,7 +2861,7 @@ void GdbEngine::setToolTipExpression(const QPoint &pos, const QString &exp0) } QToolTip::hideText(); - if (exp.isEmpty() || exp.startsWith("#")) { + if (exp.isEmpty() || exp.startsWith(_c('#'))) { QToolTip::hideText(); return; } @@ -2852,18 +2875,18 @@ void GdbEngine::setToolTipExpression(const QPoint &pos, const QString &exp0) if (isKeyWord(exp)) return; - if (exp.startsWith('"') && exp.endsWith('"')) { + if (exp.startsWith(_c('"')) && exp.endsWith(_c('"'))) { QToolTip::showText(m_toolTipPos, tr("String literal %1").arg(exp)); return; } - if (exp.startsWith("++") || exp.startsWith("--")) + if (exp.startsWith(__("++")) || exp.startsWith(__("--"))) exp = exp.mid(2); - if (exp.endsWith("++") || exp.endsWith("--")) + if (exp.endsWith(__("++")) || exp.endsWith(__("--"))) exp = exp.mid(2); - if (exp.startsWith("<") || exp.startsWith("[")) + if (exp.startsWith(_c('<')) || exp.startsWith(_c('['))) return; if (hasSideEffects(exp)) { @@ -2912,7 +2935,9 @@ void GdbEngine::setToolTipExpression(const QPoint &pos, const QString &exp0) // ////////////////////////////////////////////////////////////////////// -static const QString strNotInScope = QLatin1String("<not in scope>"); +//: Variable +static const QString strNotInScope = + QApplication::translate("Debugger::Internal::GdbEngine", "<not in scope>"); static void setWatchDataValue(WatchData &data, const GdbMi &mi, int encoding = 0) @@ -2932,7 +2957,7 @@ static void setWatchDataEditValue(WatchData &data, const GdbMi &mi) static void setWatchDataValueToolTip(WatchData &data, const GdbMi &mi) { if (mi.isValid()) - data.setValueToolTip(mi.data()); + data.setValueToolTip(_(mi.data())); } static void setWatchDataChildCount(WatchData &data, const GdbMi &mi) @@ -2958,22 +2983,22 @@ static void setWatchDataValueDisabled(WatchData &data, const GdbMi &mi) static void setWatchDataExpression(WatchData &data, const GdbMi &mi) { if (mi.isValid()) - data.exp = "(" + mi.data() + ")"; + data.exp = _('(' + mi.data() + ')'); } static void setWatchDataAddress(WatchData &data, const GdbMi &mi) { if (mi.isValid()) { - data.addr = mi.data(); + data.addr = _(mi.data()); if (data.exp.isEmpty()) - data.exp = "(*(" + gdbQuoteTypes(data.type) + "*)" + data.addr + ")"; + data.exp = _("(*(") + gdbQuoteTypes(data.type) + _("*)") + data.addr + _c(')'); } } static void setWatchDataSAddress(WatchData &data, const GdbMi &mi) { if (mi.isValid()) - data.saddr = mi.data(); + data.saddr = _(mi.data()); } void GdbEngine::setUseDebuggingHelpers(const QVariant &on) @@ -2992,8 +3017,8 @@ bool GdbEngine::hasDebuggingHelperForType(const QString &type) const if (q->startMode() == AttachCore) { // "call" is not possible in gdb when looking at core files - return type == "QString" || type.endsWith("::QString") - || type == "QStringList" || type.endsWith("::QStringList"); + return type == __("QString") || type.endsWith(__("::QString")) + || type == __("QStringList") || type.endsWith(__("::QStringList")); } if (theDebuggerBoolSetting(DebugDebuggingHelpers) @@ -3013,10 +3038,10 @@ void GdbEngine::runDirectDebuggingHelper(const WatchData &data, bool dumpChildre QString type = data.type; QString cmd; - if (type == "QString" || type.endsWith("::QString")) - cmd = "qdumpqstring (&" + data.exp + ")"; - else if (type == "QStringList" || type.endsWith("::QStringList")) - cmd = "qdumpqstringlist (&" + data.exp + ")"; + if (type == __("QString") || type.endsWith(__("::QString"))) + cmd = _("qdumpqstring (&") + data.exp + _c(')'); + else if (type == __("QStringList") || type.endsWith(__("::QStringList"))) + cmd = _("qdumpqstringlist (&") + data.exp + _c(')'); QVariant var; var.setValue(data); @@ -3047,10 +3072,10 @@ void GdbEngine::runDebuggingHelper(const WatchData &data0, bool dumpChildren) //int protocol = isDisplayedIName(data.iname) ? 3 : 2; QString addr; - if (data.addr.startsWith(QLatin1String("0x"))) - addr = QLatin1String("(void*)") + data.addr; + if (data.addr.startsWith(__("0x"))) + addr = _("(void*)") + data.addr; else - addr = QLatin1String("&(") + data.exp + QLatin1Char(')'); + addr = _("&(") + data.exp + _c(')'); sendWatchParameters(params); @@ -3058,7 +3083,7 @@ void GdbEngine::runDebuggingHelper(const WatchData &data0, bool dumpChildren) QTextStream(&cmd) << "call " << "(void*)qDumpObjectData440(" << protocol << ',' << "%1+1" // placeholder for token <<',' << addr << ',' << (dumpChildren ? "1" : "0") - << ',' << extraArgs.join(QString(QLatin1Char(','))) << ')'; + << ',' << extraArgs.join(QString(_c(','))) << ')'; QVariant var; var.setValue(data); @@ -3069,18 +3094,18 @@ void GdbEngine::runDebuggingHelper(const WatchData &data0, bool dumpChildren) .arg(m_pendingRequests + 1), 10000); // retrieve response - sendSynchronizedCommand("p (char*)&qDumpOutBuffer", WatchDebuggingHelperValue2, var); + sendSynchronizedCommand(_("p (char*)&qDumpOutBuffer"), WatchDebuggingHelperValue2, var); } void GdbEngine::createGdbVariable(const WatchData &data) { - sendSynchronizedCommand("-var-delete \"" + data.iname + '"'); + sendSynchronizedCommand(_("-var-delete \"") + data.iname + _c('"')); QString exp = data.exp; - if (exp.isEmpty() && data.addr.startsWith("0x")) - exp = "*(" + gdbQuoteTypes(data.type) + "*)" + data.addr; + if (exp.isEmpty() && data.addr.startsWith(__("0x"))) + exp = _("*(") + gdbQuoteTypes(data.type) + _("*)") + data.addr; QVariant val = QVariant::fromValue<WatchData>(data); - sendSynchronizedCommand("-var-create \"" + data.iname + '"' + " * " - + '"' + exp + '"', WatchVarCreate, val); + sendSynchronizedCommand(_("-var-create \"") + data.iname + _("\" * \"") + + exp + _c('"'), WatchVarCreate, val); } void GdbEngine::updateSubItem(const WatchData &data0) @@ -3173,7 +3198,7 @@ void GdbEngine::updateSubItem(const WatchData &data0) #if DEBUG_SUBITEM qDebug() << "UPDATE SUBITEM: VALUE"; #endif - QString cmd = "-var-evaluate-expression \"" + data.iname + "\""; + QString cmd = _("-var-evaluate-expression \"") + data.iname + _c('"'); sendSynchronizedCommand(cmd, WatchEvaluateExpression, QVariant::fromValue(data)); return; @@ -3199,7 +3224,7 @@ void GdbEngine::updateSubItem(const WatchData &data0) if (data.isChildrenNeeded()) { QTC_ASSERT(!data.variable.isEmpty(), return); // tested above - QString cmd = "-var-list-children --all-values \"" + data.variable + "\""; + QString cmd = _("-var-list-children --all-values \"") + data.variable + _c('"'); sendSynchronizedCommand(cmd, WatchVarListChildren, QVariant::fromValue(data)); return; } @@ -3224,7 +3249,7 @@ void GdbEngine::updateSubItem(const WatchData &data0) if (data.isChildCountNeeded()) { QTC_ASSERT(!data.variable.isEmpty(), return); // tested above - QString cmd = "-var-list-children --all-values \"" + data.variable + "\""; + QString cmd = _("-var-list-children --all-values \"") + data.variable + _c('"'); sendCommand(cmd, WatchVarListChildren, QVariant::fromValue(data)); return; } @@ -3272,7 +3297,7 @@ void GdbEngine::updateWatchModel2() PENDING_DEBUG("REBUILDING MODEL"); emit gdbInputAvailable(QString(), - "[" + currentTime() + "] <Rebuild Watchmodel>"); + _c('[') + currentTime() + _("] <Rebuild Watchmodel>")); q->showStatusMessage(tr("Finished retrieving data."), 400); qq->watchHandler()->rebuildModel(); @@ -3281,7 +3306,7 @@ void GdbEngine::updateWatchModel2() if (data) { //m_toolTipCache[data->exp] = *data; QToolTip::showText(m_toolTipPos, - "(" + data->type + ") " + data->exp + " = " + data->value); + _c('(') + data->type + _(") ") + data->exp + _(" = ") + data->value); } else { QToolTip::showText(m_toolTipPos, tr("Cannot evaluate expression: %1").arg(m_toolTipExpression)); @@ -3306,7 +3331,7 @@ void GdbEngine::handleQueryDebuggingHelper(const GdbResultRecord &record) contents.fromString(out); GdbMi simple = contents.findChild("dumpers"); - m_dumperHelper.setQtNamespace(contents.findChild("namespace").data()); + m_dumperHelper.setQtNamespace(_(contents.findChild("namespace").data())); GdbMi qtversion = contents.findChild("qtversion"); int qtv = 0; if (qtversion.children().size() == 3) { @@ -3322,7 +3347,7 @@ void GdbEngine::handleQueryDebuggingHelper(const GdbResultRecord &record) QStringList availableSimpleDebuggingHelpers; foreach (const GdbMi &item, simple.children()) - availableSimpleDebuggingHelpers.append(item.data()); + availableSimpleDebuggingHelpers.append(_(item.data())); m_dumperHelper.parseQueryTypes(availableSimpleDebuggingHelpers, QtDumperHelper::GdbDebugger); if (availableSimpleDebuggingHelpers.isEmpty()) { @@ -3359,7 +3384,7 @@ void GdbEngine::sendWatchParameters(const QByteArray ¶ms0) } encoded[encoded.size() - 1] = '}'; - sendCommand(encoded); + sendCommand(_(encoded)); } void GdbEngine::handleVarAssign() @@ -3374,9 +3399,10 @@ void GdbEngine::handleVarAssign() void GdbEngine::setWatchDataType(WatchData &data, const GdbMi &mi) { if (mi.isValid()) { + QString miData = _(mi.data()); if (!data.framekey.isEmpty()) - m_varToType[data.framekey] = mi.data(); - data.setType(mi.data()); + m_varToType[data.framekey] = miData; + data.setType(miData); } else if (data.type.isEmpty()) { data.setTypeNeeded(); } @@ -3411,10 +3437,10 @@ void GdbEngine::handleVarCreate(const GdbResultRecord &record, insertData(data); } } else if (record.resultClass == GdbResultError) { - data.setError(record.data.findChild("msg").data()); + data.setError(QString::fromLocal8Bit(record.data.findChild("msg").data())); if (data.isWatcher()) { data.value = strNotInScope; - data.type = " "; + data.type = _(" "); data.setAllUnneeded(); data.setChildCount(0); data.valuedisabled = true; @@ -3434,7 +3460,7 @@ void GdbEngine::handleEvaluateExpression(const GdbResultRecord &record, //else setWatchDataValue(data, record.data.findChild("value")); } else if (record.resultClass == GdbResultError) { - data.setError(record.data.findChild("msg").data()); + data.setError(QString::fromLocal8Bit(record.data.findChild("msg").data())); } //qDebug() << "HANDLE EVALUATE EXPRESSION: " << data.toString(); insertData(data); @@ -3446,7 +3472,7 @@ void GdbEngine::handleDebuggingHelperSetup(const GdbResultRecord &record) //qDebug() << "CUSTOM SETUP RESULT: " << record.toString(); if (record.resultClass == GdbResultDone) { } else if (record.resultClass == GdbResultError) { - QString msg = record.data.findChild("msg").data(); + QString msg = QString::fromLocal8Bit(record.data.findChild("msg").data()); //qDebug() << "CUSTOM DUMPER SETUP ERROR MESSAGE: " << msg; q->showStatusMessage(tr("Custom dumper setup: %1").arg(msg), 10000); } @@ -3463,15 +3489,15 @@ void GdbEngine::handleDebuggingHelperValue1(const GdbResultRecord &record, // Record an extra result, as the socket result will be lost // in transmission //--m_pendingRequests; - QString msg = record.data.findChild("msg").data(); + QString msg = QString::fromLocal8Bit(record.data.findChild("msg").data()); //qDebug() << "CUSTOM DUMPER ERROR MESSAGE: " << msg; #ifdef QT_DEBUG // Make debugging of dumpers easier if (theDebuggerBoolSetting(DebugDebuggingHelpers) - && msg.startsWith("The program being debugged stopped while") - && msg.contains("qDumpObjectData440")) { + && msg.startsWith(__("The program being debugged stopped while")) + && msg.contains(__("qDumpObjectData440"))) { // Fake full stop - sendCommand("p 0", GdbAsyncOutput2); // dummy + sendCommand(_("p 0"), GdbAsyncOutput2); // dummy return; } #endif @@ -3552,17 +3578,17 @@ void GdbEngine::handleDebuggingHelperValue2(const GdbResultRecord &record, insertData(data); foreach (GdbMi item, children.children()) { WatchData data1 = childtemplate; - data1.name = item.findChild("name").data(); - data1.iname = data.iname + "." + data1.name; + data1.name = _(item.findChild("name").data()); + data1.iname = data.iname + _c('.') + data1.name; if (!data1.name.isEmpty() && data1.name.at(0).isDigit()) - data1.name = '[' + data1.name + ']'; + data1.name = _c('[') + data1.name + _c(']'); QByteArray key = item.findChild("key").data(); if (!key.isEmpty()) { int encoding = item.findChild("keyencoded").data().toInt(); QString skey = decodeData(key, encoding); if (skey.size() > 13) { skey = skey.left(12); - skey += "..."; + skey += _("..."); } //data1.name += " (" + skey + ")"; data1.name = skey; @@ -3594,39 +3620,42 @@ void GdbEngine::handleDebuggingHelperValue3(const GdbResultRecord &record, //qDebug() << "RECEIVED" << record.toString() << " FOR " << data0.toString() // << " STREAM: " << out; if (list.isEmpty()) { + //: Value for variable data.setValue(tr("<unavailable>")); data.setAllUnneeded(); insertData(data); - } else if (data.type == "QString" || data.type.endsWith("::QString")) { + } else if (data.type == __("QString") || data.type.endsWith(__("::QString"))) { QList<QByteArray> list = out.split(' '); QString str; for (int i = 0; i < list.size(); ++i) str.append(list.at(i).toInt()); - data.setValue('"' + str + '"'); + data.setValue(_c('"') + str + _c('"')); data.setChildCount(0); data.setAllUnneeded(); insertData(data); - } else if (data.type == "QStringList" || data.type.endsWith("::QStringList")) { + } else if (data.type == __("QStringList") || data.type.endsWith(__("::QStringList"))) { int l = list.size(); + //: In string list data.setValue(tr("<%1 items>").arg(l)); data.setChildCount(list.size()); data.setAllUnneeded(); insertData(data); for (int i = 0; i < l; ++i) { WatchData data1; - data1.name = QString("[%1]").arg(i); + data1.name = _("[%1]").arg(i); data1.type = data.type.left(data.type.size() - 4); - data1.iname = data.iname + QString(".%1").arg(i); - data1.addr = list.at(i); - data1.exp = "((" + gdbQuoteTypes(data1.type) + "*)" + data1.addr + ")"; + data1.iname = data.iname + _(".%1").arg(i); + data1.addr = _(list.at(i)); + data1.exp = _("((") + gdbQuoteTypes(data1.type) + _("*)") + data1.addr + _c(')'); data1.setChildCount(0); data1.setValueNeeded(); - QString cmd = "qdumpqstring (" + data1.exp + ")"; + QString cmd = _("qdumpqstring (") + data1.exp + _c(')'); QVariant var; var.setValue(data1); sendSynchronizedCommand(cmd, WatchDebuggingHelperValue3, var); } } else { + //: Value for variable data.setValue(tr("<unavailable>")); data.setAllUnneeded(); insertData(data); @@ -3642,12 +3671,12 @@ void GdbEngine::updateLocals() m_toolTipExpression.clear(); qq->watchHandler()->reinitializeWatchers(); - int level = currentFrame(); + QString level = QString::number(currentFrame()); // '2' is 'list with type and value' - QString cmd = QString("-stack-list-arguments 2 %1 %2").arg(level).arg(level); + QString cmd = _("-stack-list-arguments 2 ") + level + _c(' ') + level; sendSynchronizedCommand(cmd, StackListArguments); // stage 1/2 // '2' is 'list with type and value' - sendSynchronizedCommand("-stack-list-locals 2", StackListLocals); // stage 2/2 + sendSynchronizedCommand(_("-stack-list-locals 2"), StackListLocals); // stage 2/2 } void GdbEngine::handleStackListArguments(const GdbResultRecord &record) @@ -3698,7 +3727,7 @@ void GdbEngine::handleStackListLocals(const GdbResultRecord &record) void GdbEngine::setLocals(const QList<GdbMi> &locals) { //qDebug() << m_varToType; - QMap<QString, int> seen; + QMap<QByteArray, int> seen; foreach (const GdbMi &item, locals) { // Local variables of inlined code are reported as @@ -3712,27 +3741,31 @@ void GdbEngine::setLocals(const QList<GdbMi> &locals) numExps += int(child.name() == "exp"); if (numExps > 1) continue; - QString name = item.findChild("exp").data(); + QByteArray name = item.findChild("exp").data(); #else - QString name = item.findChild("name").data(); + QByteArray name = item.findChild("name").data(); #endif int n = seen.value(name); if (n) { seen[name] = n + 1; WatchData data; - data.iname = "local." + name + QString::number(n + 1); - data.name = tr("%1 <shadowed %2>").arg(name, n); + QString nam = _(name); + data.iname = _("local.") + nam + QString::number(n + 1); + //: Variable %1 <FIXME: does something - bug Andre about it> + data.name = tr("%1 <shadowed %2>").arg(nam, n); //data.setValue("<shadowed>"); setWatchDataValue(data, item.findChild("value")); - data.setType("<shadowed>"); + //: Type of variable <FIXME: what? bug Andre about it> + data.setType(tr("<shadowed>")); data.setChildCount(0); insertData(data); } else { seen[name] = 1; WatchData data; - data.iname = "local." + name; - data.name = name; - data.exp = name; + QString nam = _(name); + data.iname = _("local.") + nam; + data.name = nam; + data.exp = nam; data.framekey = m_currentFrame + data.name; setWatchDataType(data, item.findChild("type")); // set value only directly if it is simple enough, otherwise @@ -3741,7 +3774,7 @@ void GdbEngine::setLocals(const QList<GdbMi> &locals) setWatchDataValue(data, item.findChild("value")); if (!qq->watchHandler()->isExpandedIName(data.iname)) data.setChildrenUnneeded(); - if (isPointerType(data.type) || data.name == "this") + if (isPointerType(data.type) || data.name == __("this")) data.setChildCount(1); if (0 && m_varToType.contains(data.framekey)) { qDebug() << "RE-USING " << m_varToType.value(data.framekey); @@ -3756,7 +3789,7 @@ void GdbEngine::insertData(const WatchData &data0) { //qDebug() << "INSERT DATA" << data0.toString(); WatchData data = data0; - if (data.value.startsWith("mi_cmd_var_create:")) { + if (data.value.startsWith(__("mi_cmd_var_create:"))) { qDebug() << "BOGUS VALUE: " << data.toString(); return; } @@ -3771,20 +3804,20 @@ void GdbEngine::handleTypeContents(const QString &output) // "type = class QStringList : public QList<QString> {" QString tip; QString className; - if (output.startsWith("type = class")) { - int posBrace = output.indexOf('{'); + if (output.startsWith(__("type = class"))) { + int posBrace = output.indexOf(_c('{')); QString head = output.mid(13, posBrace - 13 - 1); - int posColon = head.indexOf(": public"); + int posColon = head.indexOf(__(": public")); if (posColon == -1) - posColon = head.indexOf(": protected"); + posColon = head.indexOf(__(": protected")); if (posColon == -1) - posColon = head.indexOf(": private"); + posColon = head.indexOf(__(": private")); if (posColon == -1) { className = head; - tip = "class " + className + " { ... }"; + tip = _("class ") + className + _(" { ... }"); } else { className = head.left(posColon - 1); - tip = "class " + head + " { ... }"; + tip = _("class ") + head + _(" { ... }"); } //qDebug() << "posColon: " << posColon; //qDebug() << "posBrace: " << posBrace; @@ -3808,10 +3841,10 @@ void GdbEngine::handleVarListChildrenHelper(const GdbMi &item, //qDebug() << "VAR_LIST_CHILDREN: APPENDEE " << data.toString(); QByteArray exp = item.findChild("exp").data(); QByteArray name = item.findChild("name").data(); - if (isAccessSpecifier(exp)) { + if (isAccessSpecifier(_(exp))) { // suppress 'private'/'protected'/'public' level WatchData data; - data.variable = name; + data.variable = _(name); data.iname = parent.iname; //data.iname = data.variable; data.exp = parent.exp; @@ -3820,26 +3853,26 @@ void GdbEngine::handleVarListChildrenHelper(const GdbMi &item, data.setChildCountUnneeded(); data.setChildrenUnneeded(); //qDebug() << "DATA" << data.toString(); - QString cmd = "-var-list-children --all-values \"" + data.variable + "\""; + QString cmd = _("-var-list-children --all-values \"") + data.variable + _c('"'); //iname += '.' + exp; sendSynchronizedCommand(cmd, WatchVarListChildren, QVariant::fromValue(data)); } else if (item.findChild("numchild").data() == "0") { // happens for structs without data, e.g. interfaces. WatchData data; - data.iname = parent.iname + '.' + exp; - data.name = exp; - data.variable = name; + data.name = _(exp); + data.iname = parent.iname + _c('.') + data.name; + data.variable = _(name); setWatchDataType(data, item.findChild("type")); setWatchDataValue(data, item.findChild("value")); setWatchDataAddress(data, item.findChild("addr")); setWatchDataSAddress(data, item.findChild("saddr")); data.setChildCount(0); insertData(data); - } else if (parent.iname.endsWith('.')) { + } else if (parent.iname.endsWith(_c('.'))) { // Happens with anonymous unions WatchData data; - data.iname = name; - QString cmd = "-var-list-children --all-values \"" + data.variable + "\""; + data.iname = _(name); + QString cmd = _("-var-list-children --all-values \"") + data.variable + _c('"'); sendSynchronizedCommand(cmd, WatchVarListChildren, QVariant::fromValue(data)); } else if (exp == "staticMetaObject") { // && item.findChild("type").data() == "const QMetaObject") @@ -3849,8 +3882,8 @@ void GdbEngine::handleVarListChildrenHelper(const GdbMi &item, // I am not sure this is a good idea... } else { WatchData data; - data.iname = parent.iname + '.' + exp; - data.variable = name; + data.iname = parent.iname + _c('.') + __(exp); + data.variable = _(name); setWatchDataType(data, item.findChild("type")); setWatchDataValue(data, item.findChild("value")); setWatchDataAddress(data, item.findChild("addr")); @@ -3859,33 +3892,35 @@ void GdbEngine::handleVarListChildrenHelper(const GdbMi &item, if (!qq->watchHandler()->isExpandedIName(data.iname)) data.setChildrenUnneeded(); - data.name = exp; - if (isPointerType(parent.type) && data.type == exp) { - data.exp = "*(" + parent.exp + ")"; - data.name = "*" + parent.name; - } else if (data.type == exp) { - // A type we derive from? gdb crashes when creating variables here - data.exp = parent.exp; + data.name = _(exp); + if (data.type == data.name) { + if (isPointerType(parent.type)) { + data.exp = _("*(") + parent.exp + _c(')'); + data.name = _("*") + parent.name; + } else { + // A type we derive from? gdb crashes when creating variables here + data.exp = parent.exp; + } } else if (exp.startsWith("*")) { // A pointer - data.exp = "*(" + parent.exp + ")"; - } else if (startsWithDigit(exp)) { + data.exp = _("*(") + parent.exp + _c(')'); + } else if (startsWithDigit(data.name)) { // An array. No variables needed? - data.name = "[" + data.name + "]"; - data.exp = parent.exp + "[" + exp + "]"; - } else if (0 && parent.name.endsWith('.')) { + data.name = _c('[') + data.name + _c(']'); + data.exp = parent.exp + _('[' + exp + ']'); + } else if (0 && parent.name.endsWith(_c('.'))) { // Happens with anonymous unions - data.exp = parent.exp + exp; + data.exp = parent.exp + data.name; //data.name = "<anonymous union>"; } else if (exp.isEmpty()) { // Happens with anonymous unions data.exp = parent.exp; data.name = tr("<n/a>"); - data.iname = parent.iname + ".@"; - data.type = "<anonymous union>"; + data.iname = parent.iname + _(".@"); + data.type = tr("<anonymous union>"); } else { // A structure. Hope there's nothing else... - data.exp = parent.exp + '.' + exp; + data.exp = parent.exp + _c('.') + data.name; } if (hasDebuggingHelperForType(data.type)) { @@ -3918,14 +3953,15 @@ void GdbEngine::handleVarListChildren(const GdbResultRecord &record, // happens e.g. if no debug information is present or // if the class really has no children WatchData data1; - data1.iname = data.iname + ".child"; + data1.iname = data.iname + _(".child"); + //: About variable's value data1.value = tr("<no information>"); data1.childCount = 0; data1.setAllUnneeded(); insertData(data1); data.setAllUnneeded(); insertData(data); - } else if (!isAccessSpecifier(data.variable.split('.').takeLast())) { + } else if (!isAccessSpecifier(data.variable.split(_c('.')).last())) { data.setChildrenUnneeded(); insertData(data); } else { @@ -3933,26 +3969,26 @@ void GdbEngine::handleVarListChildren(const GdbResultRecord &record, // gdb produces } } else if (record.resultClass == GdbResultError) { - data.setError(record.data.findChild("msg").data()); + data.setError(QString::fromLocal8Bit(record.data.findChild("msg").data())); } else { - data.setError(tr("Unknown error: ") + record.toString()); + data.setError(tr("Unknown error: ") + QString::fromLocal8Bit(record.toString())); } } void GdbEngine::handleToolTip(const GdbResultRecord &record, - const QString &what) + const QByteArray &what) { //qDebug() << "HANDLE TOOLTIP: " << what << m_toolTip.toString(); // << "record: " << record.toString(); if (record.resultClass == GdbResultError) { - QString msg = record.data.findChild("msg").data(); if (what == "create") { - sendCommand("ptype " + m_toolTip.exp, WatchToolTip, "ptype"); + sendCommand(_("ptype ") + m_toolTip.exp, WatchToolTip, QByteArray("ptype")); return; } if (what == "evaluate") { + QByteArray msg = record.data.findChild("msg").data(); if (msg.startsWith("Cannot look up value of a typedef")) { - m_toolTip.value = m_toolTip.exp + " is a typedef."; + m_toolTip.value = tr("%1 is a typedef.").arg(m_toolTip.exp); //return; } } @@ -3964,19 +4000,19 @@ void GdbEngine::handleToolTip(const GdbResultRecord &record, runDebuggingHelper(m_toolTip, false); else q->showStatusMessage(tr("Retrieving data for tooltip..."), 10000); - sendCommand("-data-evaluate-expression " + m_toolTip.exp, - WatchToolTip, "evaluate"); - //sendToolTipCommand("-var-evaluate-expression tooltip") + sendCommand(_("-data-evaluate-expression ") + m_toolTip.exp, + WatchToolTip, QByteArray("evaluate")); + //sendToolTipCommand(_("-var-evaluate-expression tooltip")) return; } if (what == "evaluate") { - m_toolTip.value = m_toolTip.type + ' ' + m_toolTip.exp - + " = " + record.data.findChild("value").data(); + m_toolTip.value = m_toolTip.type + _c(' ') + m_toolTip.exp + + _(" = " + record.data.findChild("value").data()); //return; } if (what == "ptype") { GdbMi mi = record.data.findChild("consolestreamoutput"); - m_toolTip.value = extractTypeFromPTypeOutput(mi.data()); + m_toolTip.value = extractTypeFromPTypeOutput(_(mi.data())); //return; } } @@ -4004,9 +4040,9 @@ void GdbEngine::handleChangedItem(QStandardItem *item) void GdbEngine::assignValueInDebugger(const QString &expression, const QString &value) { - sendCommand("-var-delete assign"); - sendCommand("-var-create assign * " + expression); - sendCommand("-var-assign assign " + value, WatchVarAssign); + sendCommand(_("-var-delete assign")); + sendCommand(_("-var-create assign * ") + expression); + sendCommand(_("-var-assign assign ") + value, WatchVarAssign); } void GdbEngine::tryLoadDebuggingHelpers() @@ -4031,42 +4067,41 @@ void GdbEngine::tryLoadDebuggingHelpers() m_debuggingHelperState = DebuggingHelperLoadTried; #if defined(Q_OS_WIN) - sendCommand("sharedlibrary .*"); // for LoadLibraryA - //sendCommand("handle SIGSEGV pass stop print"); - //sendCommand("set unwindonsignal off"); - sendCommand("call LoadLibraryA(\"" + lib + "\")", + sendCommand(_("sharedlibrary .*")); // for LoadLibraryA + //sendCommand(_("handle SIGSEGV pass stop print")); + //sendCommand(_("set unwindonsignal off")); + sendCommand(_("call LoadLibraryA(\"") + lib + _("\")"), WatchDebuggingHelperSetup); - sendCommand("sharedlibrary " + dotEscape(lib)); + sendCommand(_("sharedlibrary ") + dotEscape(lib)); #elif defined(Q_OS_MAC) - //sendCommand("sharedlibrary libc"); // for malloc - //sendCommand("sharedlibrary libdl"); // for dlopen - QString flag = QString::number(RTLD_NOW); - sendCommand("call (void)dlopen(\"" + lib + "\", " + flag + ")", + //sendCommand(_("sharedlibrary libc")); // for malloc + //sendCommand(_("sharedlibrary libdl")); // for dlopen + sendCommand(_("call (void)dlopen(\"") + lib + _("\", " STRINGIFY(RTLD_NOW) ")"), WatchDebuggingHelperSetup); - //sendCommand("sharedlibrary " + dotEscape(lib)); + //sendCommand(_("sharedlibrary ") + dotEscape(lib)); m_debuggingHelperState = DebuggingHelperLoadTried; #else - //sendCommand("p dlopen"); + //sendCommand(_("p dlopen")); QString flag = QString::number(RTLD_NOW); - sendCommand("sharedlibrary libc"); // for malloc - sendCommand("sharedlibrary libdl"); // for dlopen - sendCommand("call (void*)dlopen(\"" + lib + "\", " + flag + ")", + sendCommand(_("sharedlibrary libc")); // for malloc + sendCommand(_("sharedlibrary libdl")); // for dlopen + sendCommand(_("call (void*)dlopen(\"") + lib + _("\", " STRINGIFY(RTLD_NOW) ")"), WatchDebuggingHelperSetup); // some older systems like CentOS 4.6 prefer this: - sendCommand("call (void*)__dlopen(\"" + lib + "\", " + flag + ")", + sendCommand(_("call (void*)__dlopen(\"") + lib + _("\", " STRINGIFY(RTLD_NOW) ")"), WatchDebuggingHelperSetup); - sendCommand("sharedlibrary " + dotEscape(lib)); + sendCommand(_("sharedlibrary ") + dotEscape(lib)); #endif // retreive list of dumpable classes - sendCommand("call (void*)qDumpObjectData440(1,%1+1,0,0,0,0,0,0)"); - sendCommand("p (char*)&qDumpOutBuffer", GdbQueryDebuggingHelper); + sendCommand(_("call (void*)qDumpObjectData440(1,%1+1,0,0,0,0,0,0)")); + sendCommand(_("p (char*)&qDumpOutBuffer"), GdbQueryDebuggingHelper); } void GdbEngine::recheckDebuggingHelperAvailability() { // retreive list of dumpable classes - sendCommand("call (void*)qDumpObjectData440(1,%1+1,0,0,0,0,0,0)"); - sendCommand("p (char*)&qDumpOutBuffer", GdbQueryDebuggingHelper); + sendCommand(_("call (void*)qDumpObjectData440(1,%1+1,0,0,0,0,0,0)")); + sendCommand(_("p (char*)&qDumpOutBuffer"), GdbQueryDebuggingHelper); } IDebuggerEngine *createGdbEngine(DebuggerManager *parent, QList<Core::IOptionsPage*> *opts) diff --git a/src/plugins/debugger/gdbengine.h b/src/plugins/debugger/gdbengine.h index 5b12c8a7392d932ca8135d99222bf45391ade67d..7b07f5bc1833a2c9c79288ec91f813a28718b436 100644 --- a/src/plugins/debugger/gdbengine.h +++ b/src/plugins/debugger/gdbengine.h @@ -140,7 +140,7 @@ private: // int currentFrame() const; - QString currentWorkingDirectory() const { return m_pwd; } + //QString currentWorkingDirectory() const { return m_pwd; } bool supportsThreads() const; @@ -220,7 +220,7 @@ private: QByteArray m_pendingConsoleStreamOutput; QByteArray m_pendingTargetStreamOutput; QByteArray m_pendingLogStreamOutput; - QString m_pwd; + //QString m_pwd; // contains the first token number for the current round // of evaluation. Responses with older tokens are considers @@ -323,7 +323,7 @@ private: void handleEvaluateExpression(const GdbResultRecord &record, const WatchData &cookie); void handleToolTip(const GdbResultRecord &record, - const QString &cookie); + const QByteArray &cookie); void handleQueryDebuggingHelper(const GdbResultRecord &record); void handleDebuggingHelperValue1(const GdbResultRecord &record, const WatchData &cookie); diff --git a/src/plugins/debugger/gdbmi.cpp b/src/plugins/debugger/gdbmi.cpp index 82fdaf4fd13487684dd92c9de56e55de12008a26..e7d0434d8fd8381244b3ec3ca5caef240ae63761 100644 --- a/src/plugins/debugger/gdbmi.cpp +++ b/src/plugins/debugger/gdbmi.cpp @@ -269,7 +269,7 @@ void GdbMi::fromString(const QByteArray &ba) parseResultOrValue(from, to); } -GdbMi GdbMi::findChild(const QByteArray &name) const +GdbMi GdbMi::findChild(const char *name) const { for (int i = 0; i < m_children.size(); ++i) if (m_children.at(i).m_name == name) @@ -277,18 +277,6 @@ GdbMi GdbMi::findChild(const QByteArray &name) const return GdbMi(); } - -GdbMi GdbMi::findChild(const QByteArray &name, const QByteArray &defaultData) const -{ - for (int i = 0; i < m_children.size(); ++i) - if (m_children.at(i).m_name == name) - return m_children.at(i); - GdbMi result; - result.m_data = defaultData; - return result; -} - - ////////////////////////////////////////////////////////////////////////////////// // // GdbResultRecord diff --git a/src/plugins/debugger/gdbmi.h b/src/plugins/debugger/gdbmi.h index 86dfb4f0ef3d9e9787af7116c4899ed945005d16..311bef2a7ce3559dd24511341c0287da2d07d0c5 100644 --- a/src/plugins/debugger/gdbmi.h +++ b/src/plugins/debugger/gdbmi.h @@ -121,8 +121,7 @@ public: const GdbMi &childAt(int index) const { return m_children[index]; } GdbMi &childAt(int index) { return m_children[index]; } - GdbMi findChild(const QByteArray &name) const; - GdbMi findChild(const QByteArray &name, const QByteArray &defaultString) const; + GdbMi findChild(const char *name) const; QByteArray toString(bool multiline = false, int indent = 0) const; void fromString(const QByteArray &str); diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 035fdb6792846d9cbbec5558aae1836fbde3e6a5..52eb88e9164caa64e43137c32da799c05d7d53b1 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -794,7 +794,10 @@ void FakeVimHandler::Private::updateMiniBuffer() msg = "-- VISUAL BLOCK --"; } } else if (m_mode == InsertMode) { - msg = "-- INSERT --"; + if (m_submode == ReplaceSubMode) + msg = "-- REPLACE --"; + else + msg = "-- INSERT --"; } else { if (m_mode == SearchForwardMode) msg += '/'; @@ -1200,7 +1203,7 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified, moveDown(qMax(count() - 1, 0)); handleStartOfLine(); finishMovement(); - } else if (key == 'i') { + } else if (key == 'i' || key == Key_Insert) { setDotCommand("i"); // setDotCommand("%1i", count()); enterInsertMode(); updateMiniBuffer(); @@ -1484,6 +1487,16 @@ EventResult FakeVimHandler::Private::handleInsertMode(int key, int, m_dotCommand += QChar(27); recordNewUndo(); enterCommandMode(); + } else if (key == Key_Insert) { + if (m_submode == ReplaceSubMode) { + EDITOR(setCursorWidth(m_cursorWidth)); + EDITOR(setOverwriteMode(false)); + m_submode = NoSubMode; + } else { + EDITOR(setCursorWidth(m_cursorWidth)); + EDITOR(setOverwriteMode(true)); + m_submode = ReplaceSubMode; + } } else if (key == Key_Left) { moveLeft(count()); m_lastInsertion.clear(); diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp index 71920dd8b5c2ca87562e506bc9356718e4dbcdd9..e25718033c77a5b0738a5ffe9373aa78539411dc 100644 --- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp +++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp @@ -31,6 +31,8 @@ #include "environment.h" #include "project.h" +#include <projectexplorer/debugginghelper.h> + #include <QtGui/QCheckBox> #include <QtGui/QFormLayout> #include <QtGui/QLineEdit> @@ -312,11 +314,11 @@ void CustomExecutableRunConfiguration::setUserName(const QString &name) QString CustomExecutableRunConfiguration::dumperLibrary() const { - return QString(); + QString qmakePath = ProjectExplorer::DebuggingHelperLibrary::findSystemQt(environment()); + return ProjectExplorer::DebuggingHelperLibrary::debuggingHelperLibrary(qmakePath); } - // Factory CustomExecutableRunConfigurationFactory::CustomExecutableRunConfigurationFactory() diff --git a/src/plugins/quickopen/directoryfilter.cpp b/src/plugins/quickopen/directoryfilter.cpp index b1030ee66aaae47bc004b1134ab17171d201ba5a..714399dcb7a323bf032c3eba0336e98ce7e0aa15 100644 --- a/src/plugins/quickopen/directoryfilter.cpp +++ b/src/plugins/quickopen/directoryfilter.cpp @@ -42,7 +42,8 @@ using namespace QuickOpen::Internal; DirectoryFilter::DirectoryFilter() : m_name(tr("Generic Directory Filter")), - m_filters(QStringList() << "*.h" << "*.cpp" << "*.ui" << "*.qrc") + m_filters(QStringList() << QLatin1String("*.h") << QLatin1String("*.cpp") + << QLatin1String("*.ui") << QLatin1String("*.qrc")) { setIncludedByDefault(true); } @@ -112,7 +113,7 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) m_ui.nameEdit->selectAll(); m_ui.directoryList->clear(); m_ui.directoryList->addItems(m_directories); - m_ui.fileTypeEdit->setText(m_filters.join(tr(","))); + m_ui.fileTypeEdit->setText(m_filters.join(QString(QLatin1Char(',')))); m_ui.shortcutEdit->setText(shortcutString()); m_ui.defaultFlag->setChecked(!isIncludedByDefault()); updateOptionButtons(); @@ -132,7 +133,7 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) if (!directoriesChanged && m_directories.at(i) != oldDirectories.at(i)) directoriesChanged = true; } - m_filters = m_ui.fileTypeEdit->text().trimmed().split(tr(",")); + m_filters = m_ui.fileTypeEdit->text().trimmed().split(QLatin1Char(',')); setShortcutString(m_ui.shortcutEdit->text().trimmed()); setIncludedByDefault(!m_ui.defaultFlag->isChecked()); if (directoriesChanged || oldFilters != m_filters) @@ -207,7 +208,8 @@ void DirectoryFilter::refresh(QFutureInterface<void> &future) } while (!dirs.isEmpty() && !future.isCanceled()) { if (future.isProgressUpdateNeeded()) { - future.setProgressValueAndText(progress, tr("%1 filter update: %2 files").arg(m_name).arg(files.size())); + future.setProgressValueAndText(progress, + tr("%1 filter update: %n files", 0, files.size()).arg(m_name)); } QDir dir = dirs.pop(); int dirProgressMax = progressValues.pop(); diff --git a/src/plugins/quickopen/directoryfilter.ui b/src/plugins/quickopen/directoryfilter.ui index 41fa3d5bdeb155e15f5e24efff2e8df47bc7cd2d..9e618324e9491b20964275f27e30d5261fa763cd 100644 --- a/src/plugins/quickopen/directoryfilter.ui +++ b/src/plugins/quickopen/directoryfilter.ui @@ -63,7 +63,7 @@ </property> <property name="toolTip"> <string>Specify a short word/abbreviation that can be used to restrict completions to files from this directory tree. -To do this you type this shortcut and a space in the QuickOpen entry field, and then the word to search for.</string> +To do this, you type this shortcut and a space in the Locator entry field, and then the word to search for.</string> </property> </widget> </item> diff --git a/src/shared/help/bookmarkmanager.cpp b/src/shared/help/bookmarkmanager.cpp index e3cfbfc493b66e567c3b3b4bf6d414a952873523..4531cb5bb83eb7ce6a60e9abef0a45ce1fdefcd9 100644 --- a/src/shared/help/bookmarkmanager.cpp +++ b/src/shared/help/bookmarkmanager.cpp @@ -699,8 +699,8 @@ void BookmarkManager::removeBookmarkItem(QTreeView *treeView, const QModelIndex& QString data = index.data(Qt::UserRole + 10).toString(); if (data == QLatin1String("Folder") && item->rowCount() > 0) { int value = QMessageBox::question(treeView, tr("Remove"), - tr("You are going to delete a Folder, this will also<br>" - "remove it's content. Are you sure to continue?"), + tr("You are going to delete a Folder which will also<br>" + "remove its content. Are you sure to continue?"), QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel); if (value == QMessageBox::Cancel)