diff --git a/share/qtcreator/gdbmacros/gdbmacros.cpp b/share/qtcreator/gdbmacros/gdbmacros.cpp index 029de5f6a6c1c38703cb883a5b3d99c27005730f..5cd7ed519ce9210042b5fc4cffdf997d76fff0ec 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.cpp +++ b/share/qtcreator/gdbmacros/gdbmacros.cpp @@ -2187,6 +2187,44 @@ static void qDumpQVector(QDumper &d) d.disarm(); } +static void qDumpQWeakPointer(QDumper &d) +{ + const int v = sizeof(void *); + const void *value = deref(addOffset(d.data, v)); + + if (isSimpleType(d.innertype)) + qDumpInnerValueHelper(d, d.innertype, value); + else + P(d, "value", ""); + P(d, "valuedisabled", "true"); + P(d, "numchild", 1); + if (d.dumpChildren) { + d << ",children=["; + d.beginHash(); + P(d, "name", "data"); + qDumpInnerValue(d, d.innertype, value); + d.endHash(); + d.beginHash(); + const void *weak = addOffset(deref(d.data), v); + P(d, "name", "weakref"); + P(d, "value", *static_cast<const int *>(weak)); + P(d, "type", "int"); + P(d, "addr", weak); + P(d, "numchild", "0"); + d.endHash(); + d.beginHash(); + const void *strong = addOffset(weak, sizeof(int)); + P(d, "name", "strongref"); + P(d, "value", *static_cast<const int *>(strong)); + P(d, "type", "int"); + P(d, "addr", strong); + P(d, "numchild", "0"); + d.endHash(); + d << "]"; + } + d.disarm(); +} + static void qDumpStdList(QDumper &d) { const std::list<int> &list = *reinterpret_cast<const std::list<int> *>(d.data); @@ -2559,16 +2597,6 @@ static void handleProtocolVersion2and3(QDumper & d) else if (isEqual(type, "QStringList")) qDumpQStringList(d); break; - case 'T': - if (isEqual(type, "QTextCodec")) - qDumpQTextCodec(d); - break; - case 'V': - if (isEqual(type, "QVariant")) - qDumpQVariant(d); - else if (isEqual(type, "QVector")) - qDumpQVector(d); - break; case 's': if (isEqual(type, "wstring")) qDumpStdWString(d); @@ -2589,6 +2617,19 @@ static void handleProtocolVersion2and3(QDumper & d) else if (isEqual(type, "std::wstring")) qDumpStdWString(d); break; + case 'T': + if (isEqual(type, "QTextCodec")) + qDumpQTextCodec(d); + break; + case 'V': + if (isEqual(type, "QVariant")) + qDumpQVariant(d); + else if (isEqual(type, "QVector")) + qDumpQVector(d); + break; + case 'W': + if (isEqual(type, "QWeakPointer")) + qDumpQWeakPointer(d); } if (!d.success) @@ -2664,6 +2705,7 @@ void *qDumpObjectData440( "\""NS"QTextCodec\"," "\""NS"QVariant\"," "\""NS"QVector\"," + "\""NS"QWeakPointer\"," "\""NS"QWidget\"," #ifdef Q_OS_WIN "\"basic_string\"," 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/libs/utils/qstringbuilder.cpp b/src/libs/utils/qstringbuilder.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f3925e56b5e62bc0c81c554c17b68b67ff476ad9 --- /dev/null +++ b/src/libs/utils/qstringbuilder.cpp @@ -0,0 +1,131 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qstringbuilder.h" + +/*! + \class QLatin1Literal + \reentrant + + \brief The QLatin1Literal class provides a thin wrapper of string literal + used in source codes. + + The main use of \c QLatin1Literal is in conjunction with \c QStringBuilder + to reduce the number of reallocations needed to build up a string from + smaller chunks. + + Contrary to \c QLatin1String, a \c QLatin1Literal can retrieve its size + int \i{O(1)}. + + \ingroup tools + \ingroup shared + \ingroup text + \mainclass + + \sa QStringBuilder, QLatin1String, QString + +*/ + +/*! \fn QLatin1Literal::QLatin1Literal(const char(&literal)[]) + + The only constructor of the class. +*/ + +/*! \fn int QLatin1Literal::size() const + + Returns the number of characters in the literal \i{not} including + the trailing NUL char. +*/ + +/*! \fn char *QLatin1Literal::size() const + + Returns a pointer to the first character of the string literal. + The string literal is terminated by a NUL character. +*/ + +/*! \fn QLatin1Literal::operator QString() const + + Converts the \c QLatin1Literal into a \c QString object. +*/ + + +/*! + \class QStringBuilderPair + \reentrant + + \brief QStringBuilderPair is a helper class template for building + QStringBuilder objects wrapping two smaller QStringBuilder object. +*/ + + +/*! + \class QStringBuilder + \reentrant + + \brief QStringBuilder is a template class providing a facility to build + up QStrings from smaller chunks. + + \ingroup tools + \ingroup shared + \ingroup text + \mainclass + + When creating strings from smaller chunks, typically \c QString::operator+() + is used, resulting \i{n - 1} reallocations when operating on \i{n} chunks. + + QStringBuilder uses expression + templates to collect the individual parts, compute the total size, + allocate memory for the resulting QString object, and copy the contents + of the chunks into the result. + + Using \c QStringBuilder::operator%() yield generally better performance then + using \c QString::operator+() on the same chunks if there are three or + more of them, and equal performance otherwise. + + \sa QLatin1Literal, QString +*/ + +/* !fn template <class A, class B> QStringBuilder< QStringBuilderPair<A, B> > operator%(const A &a, const B &b) + + Creates a helper object containing both parameters. + + This is the main function to build up +*/ diff --git a/src/libs/utils/qstringbuilder.h b/src/libs/utils/qstringbuilder.h new file mode 100644 index 0000000000000000000000000000000000000000..d9a5d9132cfb7d79628fbe463cc7e8bea9a3fcaa --- /dev/null +++ b/src/libs/utils/qstringbuilder.h @@ -0,0 +1,206 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTRINGBUILDER_H +#define QSTRINGBUILDER_H + +#include <QtCore/qstring.h> + +#include <string.h> + +class QLatin1Literal +{ +public: + template <int N> + QLatin1Literal(const char (&str)[N]) : m_size(N - 1), m_data(str) {} + + int size() const { return m_size; } + const char *data() const { return m_data; } + + void append(QChar *&out) const + { + const char *s = m_data; + for (int i = m_size; --i >= 0;) + *out++ = *s++; + } + + operator QString() const + { + QString s; + s.resize(m_size); + QChar *d = s.data(); + append(d); + return s; + } + +private: + const int m_size; + const char *m_data; +}; + +template <class A> +class QStringBuilder : public A +{ +public: + QStringBuilder(A a_) : A(a_) {} + + operator QString() const + { + QString s; + s.resize(this->size()); + QChar *d = s.data(); + this->append(d); + return s; + } + +}; + +template <> +class QStringBuilder<QString> +{ +public: + QStringBuilder(const QString &a_) : a(&a_) {} + + inline int size() const { return a->size(); } + + inline void append(QChar *&out) const + { + const int n = a->size(); + memcpy(out, (char*)a->constData(), sizeof(QChar) * n); + out += n; + } + + inline operator QString() const { return *a; } + +private: + const QString *a; +}; + + +template <> +class QStringBuilder<char> +{ +public: + QStringBuilder(char c_) : c(c_) {} + + inline int size() const { return 1; } + inline void append(QChar *&out) const { *out++ = QLatin1Char(c); } + +private: + const char c; +}; + + + +template <class A, class B> +class QStringBuilderPair +{ +public: + QStringBuilderPair(A a_, B b_) : a(a_), b(b_) {} + inline int size() const { return a.size() + b.size(); } + inline void append(QChar *&out) const { a.append(out); b.append(out); } +private: + A a; + B b; +}; + + +template <class A, class B> +QStringBuilder< QStringBuilderPair<A, B> > +operator%(const A &a, const B &b) +{ + return QStringBuilderPair<A, B> (a, b); +} + + +// QString related specializations + +template <class A> +inline QStringBuilder< QStringBuilderPair<A, QStringBuilder<QString> > > +operator%(const A &a, const QString &b) +{ + return QStringBuilderPair<A, QStringBuilder<QString> > (a, b); +} + +template <class B> +inline QStringBuilder< QStringBuilderPair<QStringBuilder<QString>, B> > +operator%(const QString &a, const B &b) +{ + return QStringBuilderPair<QStringBuilder<QString>, B> (a, b); +} + +inline QStringBuilder< + QStringBuilderPair<QStringBuilder<QString>, QStringBuilder<QString> > +> +operator%(const QString &a, const QString &b) +{ + return QStringBuilderPair< QStringBuilder<QString>, + QStringBuilder<QString> > (a, b); +} + +// char related specializations + +template <class A> +inline QStringBuilder< QStringBuilderPair<A, QStringBuilder<char> > > +operator%(const A &a, char b) +{ + return QStringBuilderPair<A, QStringBuilder<char> > (a, b); +} + +template <class B> +inline QStringBuilder< QStringBuilderPair<QStringBuilder<char>, B> > +operator%(char a, const B &b) +{ + return QStringBuilderPair<QStringBuilder<QString>, B> (a, b); +} + +inline QStringBuilder< + QStringBuilderPair<QStringBuilder<QString>, QStringBuilder<char> > +> +operator%(const QString &a, char b) +{ + return QStringBuilderPair< + QStringBuilder<QString>, QStringBuilder<char> + > (a, b); +} + + +#endif // QSTRINGBUILDER_H 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/ioutputpane.h b/src/plugins/coreplugin/ioutputpane.h index e38e9fbe8b36269d1757d8d7041f5f14bea718e0..5a841011c9c00d96d9def197af1a44be890e394f 100644 --- a/src/plugins/coreplugin/ioutputpane.h +++ b/src/plugins/coreplugin/ioutputpane.h @@ -64,6 +64,12 @@ public: // Wheter the outputpane can be focused at the moment. // (E.g. the search result window doesn't want to be focussed if the are no results.) virtual bool canFocus() = 0; + + virtual bool canNavigate() = 0; + virtual bool canNext() = 0; + virtual bool canPrevious() = 0; + virtual void goToNext() = 0; + virtual void goToPrev() = 0; public slots: void popup() { @@ -89,10 +95,16 @@ public slots: emit togglePage(withFocusIfShown); } + void navigateStateChanged() + { + emit navigateStateUpdate(); + } + signals: void showPage(bool withFocus); void hidePage(); void togglePage(bool withFocusIfShown); + void navigateStateUpdate(); }; } // namespace Core diff --git a/src/plugins/coreplugin/messageoutputwindow.cpp b/src/plugins/coreplugin/messageoutputwindow.cpp index 3fb450344506b7ed0590e051fff1197cfa8930e3..7fc733744b5cd112be67057641f5c8acad11d905 100644 --- a/src/plugins/coreplugin/messageoutputwindow.cpp +++ b/src/plugins/coreplugin/messageoutputwindow.cpp @@ -89,3 +89,28 @@ int MessageOutputWindow::priorityInStatusBar() const { return -1; } + +bool MessageOutputWindow::canNext() +{ + return false; +} + +bool MessageOutputWindow::canPrevious() +{ + return false; +} + +void MessageOutputWindow::goToNext() +{ + +} + +void MessageOutputWindow::goToPrev() +{ + +} + +bool MessageOutputWindow::canNavigate() +{ + return false; +} diff --git a/src/plugins/coreplugin/messageoutputwindow.h b/src/plugins/coreplugin/messageoutputwindow.h index 70e1308e0dd577003f60dc6b08e768c690cfe6bf..821aa671420deb227323e3277dcf02c0a7f4df64 100644 --- a/src/plugins/coreplugin/messageoutputwindow.h +++ b/src/plugins/coreplugin/messageoutputwindow.h @@ -60,6 +60,12 @@ public: bool hasFocus(); void setFocus(); + virtual bool canNext(); + virtual bool canPrevious(); + virtual void goToNext(); + virtual void goToPrev(); + bool canNavigate(); + private: QTextEdit *m_widget; }; diff --git a/src/plugins/coreplugin/outputpane.cpp b/src/plugins/coreplugin/outputpane.cpp index e141473162d12ad1ae0d9b88e2594617e5239ed4..92adb63e89d0915e85721cd799bc059178360c91 100644 --- a/src/plugins/coreplugin/outputpane.cpp +++ b/src/plugins/coreplugin/outputpane.cpp @@ -40,6 +40,8 @@ #include <extensionsystem/pluginmanager.h> +#include <QtCore/QDebug> + #include <QtGui/QAction> #include <QtGui/QApplication> #include <QtGui/QComboBox> @@ -159,6 +161,8 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) : m_widgetComboBox(new QComboBox), m_clearButton(new QToolButton), m_closeButton(new QToolButton), + m_nextAction(0), + m_prevAction(0), m_closeAction(0), m_lastIndex(-1), m_outputWidgetPane(new QStackedWidget), @@ -171,6 +175,18 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) : m_clearButton->setToolTip(tr("Clear")); connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clearPage())); + m_nextAction = new QAction(this); + m_nextAction->setIcon(QIcon(":/core/images/next.png")); + m_nextAction->setProperty("type", QLatin1String("dockbutton")); + m_nextAction->setText(tr("Next Item")); + connect(m_nextAction, SIGNAL(triggered()), this, SLOT(slotNext())); + + m_prevAction = new QAction(this); + m_prevAction->setIcon(QIcon(":/core/images/prev.png")); + m_prevAction->setProperty("type", QLatin1String("dockbutton")); + m_prevAction->setText(tr("Previous Item")); + connect(m_prevAction, SIGNAL(triggered()), this, SLOT(slotPrev())); + m_closeButton->setIcon(QIcon(":/core/images/closebutton.png")); m_closeButton->setProperty("type", QLatin1String("dockbutton")); connect(m_closeButton, SIGNAL(clicked()), this, SLOT(slotHide())); @@ -178,12 +194,13 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) : QVBoxLayout *mainlayout = new QVBoxLayout; mainlayout->setSpacing(0); mainlayout->setMargin(0); - QToolBar *toolBar = new QToolBar; - toolBar->addWidget(m_widgetComboBox); - toolBar->addWidget(m_clearButton); - toolBar->addWidget(m_opToolBarWidgets); - m_closeAction = toolBar->addWidget(m_closeButton); - mainlayout->addWidget(toolBar); + m_toolBar = new QToolBar; + m_toolBar->addWidget(m_widgetComboBox); + m_toolBar->addWidget(m_clearButton); + + m_opToolBarAction = m_toolBar->addWidget(m_opToolBarWidgets); + m_closeAction = m_toolBar->addWidget(m_closeButton); + mainlayout->addWidget(m_toolBar); mainlayout->addWidget(m_outputWidgetPane, 10); setLayout(mainlayout); @@ -195,6 +212,7 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) : #else m_buttonsWidget->layout()->setSpacing(4); #endif + } OutputPaneManager::~OutputPaneManager() @@ -216,11 +234,32 @@ void OutputPaneManager::init() { ActionManager *am = Core::ICore::instance()->actionManager(); ActionContainer *mwindow = am->actionContainer(Constants::M_WINDOW); + QList<int> globalcontext; + globalcontext.append(Core::Constants::C_GLOBAL_ID); // Window->Output Panes ActionContainer *mpanes = am->createMenu(Constants::M_WINDOW_PANES); mwindow->addMenu(mpanes, Constants::G_WINDOW_PANES); mpanes->menu()->setTitle(tr("Output &Panes")); + mpanes->appendGroup("Coreplugin.OutputPane.ActionsGroup"); + mpanes->appendGroup("Coreplugin.OutputPane.PanesGroup"); + + Core::Command *cmd; + + cmd = am->registerAction(m_prevAction, "Coreplugin.OutputPane.previtem", globalcontext); + cmd->setDefaultKeySequence(QKeySequence("Shift+F6")); + m_toolBar->insertAction(m_opToolBarAction ,cmd->action()); + mpanes->addAction(cmd, "Coreplugin.OutputPane.ActionsGroup"); + + cmd = am->registerAction(m_nextAction, "Coreplugin.OutputPane.nextitem", globalcontext); + m_toolBar->insertAction(m_opToolBarAction, cmd->action()); + cmd->setDefaultKeySequence(QKeySequence("F6")); + mpanes->addAction(cmd, "Coreplugin.OutputPane.ActionsGroup"); + + QAction *sep = new QAction(this); + sep->setSeparator(true); + cmd = am->registerAction(sep, QLatin1String("Coreplugin.OutputPane.Sep"), globalcontext); + mpanes->addAction(cmd, "Coreplugin.OutputPane.ActionsGroup"); QList<IOutputPane*> panes = ExtensionSystem::PluginManager::instance() ->getObjects<IOutputPane>(); @@ -241,6 +280,7 @@ void OutputPaneManager::init() connect(outPane, SIGNAL(showPage(bool)), this, SLOT(showPage(bool))); connect(outPane, SIGNAL(hidePage()), this, SLOT(slotHide())); connect(outPane, SIGNAL(togglePage(bool)), this, SLOT(togglePage(bool))); + connect(outPane, SIGNAL(navigateStateUpdate()), this, SLOT(updateNavigateState())); QWidget *toolButtonsContainer = new QWidget(m_opToolBarWidgets); QHBoxLayout *toolButtonsLayout = new QHBoxLayout; @@ -265,7 +305,7 @@ void OutputPaneManager::init() cmd->setDefaultKeySequence(QKeySequence(paneShortCut(Qt::ALT, shortcutNumber))); #endif } - mpanes->addAction(cmd); + mpanes->addAction(cmd, "Coreplugin.OutputPane.PanesGroup"); m_actions.insert(cmd->action(), idx); // TODO priority -1 @@ -343,6 +383,24 @@ void OutputPaneManager::updateToolTip() } } +void OutputPaneManager::slotNext() +{ + int idx = m_widgetComboBox->itemData(m_widgetComboBox->currentIndex()).toInt(); + ensurePageVisible(idx); + IOutputPane *out = m_pageMap.value(idx); + if (out->canNext()) + out->goToNext(); +} + +void OutputPaneManager::slotPrev() +{ + int idx = m_widgetComboBox->itemData(m_widgetComboBox->currentIndex()).toInt(); + ensurePageVisible(idx); + IOutputPane *out = m_pageMap.value(idx); + if (out->canPrevious()) + out->goToPrev(); +} + void OutputPaneManager::slotHide() { if (OutputPanePlaceHolder::m_current) { @@ -384,6 +442,16 @@ void OutputPaneManager::ensurePageVisible(int idx) } } +void OutputPaneManager::updateNavigateState() +{ + IOutputPane* pane = qobject_cast<IOutputPane*>(sender()); + int idx = findIndexForPage(pane); + if (m_widgetComboBox->itemData(m_widgetComboBox->currentIndex()).toInt() == idx) { + m_prevAction->setEnabled(pane->canNavigate() && pane->canPrevious()); + m_nextAction->setEnabled(pane->canNavigate() && pane->canNext()); + } +} + // Slot connected to showPage signal of each page void OutputPaneManager::showPage(bool focus) { @@ -457,11 +525,17 @@ void OutputPaneManager::changePage() } int idx = m_widgetComboBox->itemData(m_widgetComboBox->currentIndex()).toInt(); + if (m_lastIndex == idx) + return; m_outputWidgetPane->setCurrentIndex(idx); m_opToolBarWidgets->setCurrentIndex(idx); m_pageMap.value(idx)->visibilityChanged(true); m_pageMap.value(m_lastIndex)->visibilityChanged(false); + bool canNavigate = m_pageMap.value(idx)->canNavigate(); + m_prevAction->setEnabled(canNavigate && m_pageMap.value(idx)->canPrevious()); + m_nextAction->setEnabled(canNavigate && m_pageMap.value(idx)->canNext()); + if (m_buttons.value(m_lastIndex)) m_buttons.value(m_lastIndex)->setChecked(false); diff --git a/src/plugins/coreplugin/outputpane.h b/src/plugins/coreplugin/outputpane.h index 86dccdcdb5a402fa765ddd8c66a99ae4ad7777b6..9fbbf780c6b1c60dc6a549262c620655f990e942 100644 --- a/src/plugins/coreplugin/outputpane.h +++ b/src/plugins/coreplugin/outputpane.h @@ -39,6 +39,7 @@ QT_BEGIN_NAMESPACE class QAction; class QComboBox; class QToolButton; +class QToolBar; class QStackedWidget; class QPushButton; QT_END_NAMESPACE @@ -89,6 +90,8 @@ public: public slots: void slotHide(); + void slotNext(); + void slotPrev(); void shortcutTriggered(); protected: @@ -101,6 +104,7 @@ private slots: void clearPage(); void updateToolTip(); void buttonTriggered(); + void updateNavigateState(); private: // the only class that is allowed to create and destroy @@ -118,13 +122,18 @@ private: QComboBox *m_widgetComboBox; QToolButton *m_clearButton; QToolButton *m_closeButton; + + QAction *m_nextAction; + QAction *m_prevAction; QAction *m_closeAction; + QToolBar *m_toolBar; QMap<int, Core::IOutputPane*> m_pageMap; int m_lastIndex; QStackedWidget *m_outputWidgetPane; QStackedWidget *m_opToolBarWidgets; + QAction *m_opToolBarAction; QWidget *m_buttonsWidget; QMap<int, QPushButton *> m_buttons; QMap<QAction *, int> m_actions; 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/cdb/cdbcom.h b/src/plugins/debugger/cdb/cdbcom.h index 8a631e3f1fc1da4b510ba008f7ec0fa23b9a3f42..19208710a9f4c687a3a8f63d2644199ef2635ff1 100644 --- a/src/plugins/debugger/cdb/cdbcom.h +++ b/src/plugins/debugger/cdb/cdbcom.h @@ -43,4 +43,5 @@ typedef IDebugDataSpaces4 CIDebugDataSpaces; typedef IDebugSymbolGroup2 CIDebugSymbolGroup; typedef IDebugBreakpoint2 CIDebugBreakpoint; + #endif // CDBCOM_H diff --git a/src/plugins/debugger/cdb/cdbdumperhelper.h b/src/plugins/debugger/cdb/cdbdumperhelper.h index b9ec2bccccbbf8248a94e833bc5a30b3b9e8cf18..9500d4d4e01c10e046535badfec348d73aed717b 100644 --- a/src/plugins/debugger/cdb/cdbdumperhelper.h +++ b/src/plugins/debugger/cdb/cdbdumperhelper.h @@ -32,6 +32,7 @@ #include "watchutils.h" #include "cdbcom.h" + #include <QtCore/QStringList> #include <QtCore/QMap> @@ -42,8 +43,7 @@ struct CdbComInterfaces; class IDebuggerManagerAccessForEngines; class DebuggerManager; -/* For code clarity, all the stuff related to custom dumpers - * goes here. +/* For code clarity, all the stuff related to custom dumpers goes here. * "Custom dumper" is a library compiled against the current * Qt containing functions to evaluate values of Qt classes * (such as QString, taking pointers to their addresses). diff --git a/src/plugins/debugger/cdb/cdboptions.cpp b/src/plugins/debugger/cdb/cdboptions.cpp index b26053beee85e7bee742752fb79a10d36a1a5aaa..1740c3a6d7b91ef077d4eed83713e95c63a062e0 100644 --- a/src/plugins/debugger/cdb/cdboptions.cpp +++ b/src/plugins/debugger/cdb/cdboptions.cpp @@ -28,6 +28,7 @@ **************************************************************************/ #include "cdboptions.h" + #include <QtCore/QSettings> #include <QtCore/QDir> #include <QtCore/QFileInfo> diff --git a/src/plugins/debugger/cdb/cdbstacktracecontext.h b/src/plugins/debugger/cdb/cdbstacktracecontext.h index 98e509ad982e99c500342f7ee9332b8add8936ac..b5e041d2c2f1f2b0fa21806aa3d41738148bd1b4 100644 --- a/src/plugins/debugger/cdb/cdbstacktracecontext.h +++ b/src/plugins/debugger/cdb/cdbstacktracecontext.h @@ -73,7 +73,7 @@ public: // Top-Level instruction offset for disassembler ULONG64 instructionOffset() const { return m_instructionOffset; } - CdbStackFrameContext*frameContextAt(int index, QString *errorMessage); + CdbStackFrameContext *frameContextAt(int index, QString *errorMessage); // Format for logging void format(QTextStream &str) const; diff --git a/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp b/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp index 7daba56a587ca91624b298569e391fb6ba727360..47035c5ec4df3d6d2d6834d854017b6ce8f80bdd 100644 --- a/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp +++ b/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp @@ -31,6 +31,7 @@ #include "cdbdebugengine_p.h" #include "watchhandler.h" #include "watchutils.h" + #include <QtCore/QTextStream> enum { debug = 0 }; @@ -40,7 +41,10 @@ static inline QString msgSymbolNotFound(const QString &s) return QString::fromLatin1("The symbol '%1' could not be found.").arg(s); } -static inline bool isTopLevelSymbol(const DEBUG_SYMBOL_PARAMETERS &p) { return p.ParentSymbol == DEBUG_ANY_ID; } +static inline bool isTopLevelSymbol(const DEBUG_SYMBOL_PARAMETERS &p) +{ + return p.ParentSymbol == DEBUG_ANY_ID; +} static inline void debugSymbolFlags(unsigned long f, QTextStream &str) { diff --git a/src/plugins/debugger/cdb/cdbsymbolgroupcontext.h b/src/plugins/debugger/cdb/cdbsymbolgroupcontext.h index 033252e387c989ac561d01073c95a1a38575d26c..ea992e546cfa898093eec84bd3563f0cd5f1d27f 100644 --- a/src/plugins/debugger/cdb/cdbsymbolgroupcontext.h +++ b/src/plugins/debugger/cdb/cdbsymbolgroupcontext.h @@ -130,7 +130,8 @@ private: }; // Helper to a sequence of WatchData into a list. -class WatchDataBackInserter { +class WatchDataBackInserter +{ public: explicit WatchDataBackInserter(QList<WatchData> &wh) : m_wh(wh) {} diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index 04966d4023daa58e959e19a8ef47d8249c5bc136..d391907adca77a109bdabbce9d738669d884905d 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -3047,11 +3047,10 @@ void GdbEngine::runDebuggingHelper(const WatchData &data0, bool dumpChildren) //int protocol = isDisplayedIName(data.iname) ? 3 : 2; QString addr; - if (data.addr.startsWith(QLatin1String("0x"))) { + if (data.addr.startsWith(QLatin1String("0x"))) addr = QLatin1String("(void*)") + data.addr; - } else { + else addr = QLatin1String("&(") + data.exp + QLatin1Char(')'); - } sendWatchParameters(params); diff --git a/src/plugins/debugger/scriptengine.cpp b/src/plugins/debugger/scriptengine.cpp index a0feae918268afa79ab2636700184907e70842d9..76451774c71a42a731536538270645c174f081a9 100644 --- a/src/plugins/debugger/scriptengine.cpp +++ b/src/plugins/debugger/scriptengine.cpp @@ -38,6 +38,7 @@ #include "registerhandler.h" #include "stackhandler.h" #include "watchhandler.h" +#include "watchutils.h" #include "moduleshandler.h" #include <utils/qtcassert.h> @@ -422,28 +423,6 @@ static WatchData m_toolTip; static QPoint m_toolTipPos; static QHash<QString, WatchData> m_toolTipCache; -static bool hasLetterOrNumber(const QString &exp) -{ - for (int i = exp.size(); --i >= 0; ) - if (exp[i].isLetterOrNumber()) - return true; - return false; -} - -static bool hasSideEffects(const QString &exp) -{ - // FIXME: complete? - return exp.contains("-=") - || exp.contains("+=") - || exp.contains("/=") - || exp.contains("*=") - || exp.contains("&=") - || exp.contains("|=") - || exp.contains("^=") - || exp.contains("--") - || exp.contains("++"); -} - void ScriptEngine::setToolTipExpression(const QPoint &pos, const QString &exp0) { Q_UNUSED(pos); diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp index c77fc0a5b39ecb030f35dff62ee2c28b30211233..5be973677e19338d6fe9360b8768f6d773005b72 100644 --- a/src/plugins/debugger/watchutils.cpp +++ b/src/plugins/debugger/watchutils.cpp @@ -166,8 +166,10 @@ bool isPointerType(const QString &type) bool isAccessSpecifier(const QString &str) { - static const QStringList items = - QStringList() << QLatin1String("private") << QLatin1String("protected") << QLatin1String("public"); + static const QStringList items = QStringList() + << QLatin1String("private") + << QLatin1String("protected") + << QLatin1String("public"); return items.contains(str); } @@ -326,28 +328,28 @@ static QString quoteUnprintableLatin1(const QByteArray &ba) return res; } -QString decodeData(const QByteArray &baIn, int encoding) +QString decodeData(const QByteArray &ba, int encoding) { switch (encoding) { case 0: // unencoded 8 bit data - return quoteUnprintableLatin1(baIn); + return quoteUnprintableLatin1(ba); case 1: { // base64 encoded 8 bit data, used for QByteArray const QChar doubleQuote(QLatin1Char('"')); QString rc = doubleQuote; - rc += quoteUnprintableLatin1(QByteArray::fromBase64(baIn)); + rc += quoteUnprintableLatin1(QByteArray::fromBase64(ba)); rc += doubleQuote; return rc; } case 2: { // base64 encoded 16 bit data, used for QString const QChar doubleQuote(QLatin1Char('"')); - const QByteArray ba = QByteArray::fromBase64(baIn); + const QByteArray ba = QByteArray::fromBase64(ba); QString rc = doubleQuote; rc += QString::fromUtf16(reinterpret_cast<const ushort *>(ba.data()), ba.size() / 2); rc += doubleQuote; return rc; } case 3: { // base64 encoded 32 bit data - const QByteArray ba = QByteArray::fromBase64(baIn); + const QByteArray ba = QByteArray::fromBase64(ba); const QChar doubleQuote(QLatin1Char('"')); QString rc = doubleQuote; rc += QString::fromUcs4(reinterpret_cast<const uint *>(ba.data()), ba.size() / 4); @@ -355,7 +357,7 @@ QString decodeData(const QByteArray &baIn, int encoding) return rc; } case 4: { // base64 encoded 16 bit data, without quotes (see 2) - const QByteArray ba = QByteArray::fromBase64(baIn); + const QByteArray ba = QByteArray::fromBase64(ba); return QString::fromUtf16(reinterpret_cast<const ushort *>(ba.data()), ba.size() / 2); } } @@ -374,7 +376,6 @@ QtDumperResult::QtDumperResult() : valuedisabled(false), childCount(0), internal(false) - { } @@ -598,7 +599,6 @@ QtDumperHelper::Type QtDumperHelper::specialType(QString s) return UnknownType; } - bool QtDumperHelper::needsExpressionSyntax(Type t) { switch (t) { @@ -614,7 +614,7 @@ bool QtDumperHelper::needsExpressionSyntax(Type t) return true; default: break; - } + } return false; } @@ -652,9 +652,8 @@ void QtDumperHelper::parseQueryTypes(const QStringList &l, Debugger debugger) const Type t = specialType(l.at(i)); if (t != UnknownType) { // Exclude types that require expression syntax for CDB - if (debugger == GdbDebugger || !needsExpressionSyntax(t)) { + if (debugger == GdbDebugger || !needsExpressionSyntax(t)) m_nameTypeMap.insert(l.at(i), t); - } } else { m_nameTypeMap.insert(l.at(i), SupportedType); } @@ -668,7 +667,8 @@ void QtDumperHelper::parseQueryTypes(const QStringList &l, Debugger debugger) * value="dABoAHIAZQBlAA==",valueencoded="2"}]" * Default implementation can be used for debugging purposes. */ -class DumperParser { +class DumperParser +{ public: explicit DumperParser(const char *s) : m_s(s) {} bool run(); @@ -1182,11 +1182,13 @@ void QtDumperHelper::evaluationParameters(const WatchData &data, /* Parse value: * "iname="local.sl",addr="0x0012BA84",value="<3 items>",valuedisabled="true", - * numchild="3",childtype="QString",childnumchild="0",children=[{name="0",value="<binhex>", - * valueencoded="2"},{name="1",value="dAB3AG8A",valueencoded="2"},{name="2", - * value="dABoAHIAZQBlAA==",valueencoded="2"}]" */ + * numchild="3",childtype="QString",childnumchild="0", + * children=[{name="0",value="<binhex>",valueencoded="2"}, + * {name="1",value="dAB3AG8A",valueencoded="2"}, + * {name="2",value="dABoAHIAZQBlAA==",valueencoded="2"}]" */ -class ValueDumperParser : public DumperParser { +class ValueDumperParser : public DumperParser +{ public: explicit ValueDumperParser(const char *s); diff --git a/src/plugins/debugger/watchutils.h b/src/plugins/debugger/watchutils.h index e316973ca13f0a5c07e955cec53cbbf6796ece76..47f73a8bb79cf8e1fbf418887c961d1d782bb0bf 100644 --- a/src/plugins/debugger/watchutils.h +++ b/src/plugins/debugger/watchutils.h @@ -114,7 +114,8 @@ QDebug operator<<(QDebug in, const QtDumperResult &d); * 2) Evaluate symbol, taking address and some additional parameters * depending on type. */ -class QtDumperHelper { +class QtDumperHelper +{ public: enum Debugger { GdbDebugger, // Can evalulate expressions in function calls @@ -127,7 +128,7 @@ public: // Below types require special handling QObjectType, QWidgetType, QObjectSlotType, QObjectSignalType, QVectorType, QMapType, QMultiMapType, QMapNodeType, - StdVectorType, StdDequeType, StdSetType,StdMapType, StdStackType, + StdVectorType, StdDequeType, StdSetType, StdMapType, StdStackType, StdStringType }; @@ -203,6 +204,7 @@ private: }; QDebug operator<<(QDebug in, const QtDumperHelper::TypeData &d); + } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/win/dbgwinutils.cpp b/src/plugins/debugger/win/dbgwinutils.cpp index 2145f001ad22eb2fb6964c872744168d7530f574..9ef66aa1ad9fac437159631b655002d90fc6a501 100644 --- a/src/plugins/debugger/win/dbgwinutils.cpp +++ b/src/plugins/debugger/win/dbgwinutils.cpp @@ -34,6 +34,7 @@ #ifdef USE_PSAPI # include <psapi.h> #endif + namespace Debugger { namespace Internal { @@ -75,5 +76,5 @@ QList<ProcData> winProcessList() return rc; } -} -} +} // namespace Internal +} // namespace Debugger diff --git a/src/plugins/debugger/win/dbgwinutils.h b/src/plugins/debugger/win/dbgwinutils.h index 1045e822b420396458ea1d3747f6b716421c1378..af16913a8ed33a87468c34a3971b1af543fb172a 100644 --- a/src/plugins/debugger/win/dbgwinutils.h +++ b/src/plugins/debugger/win/dbgwinutils.h @@ -27,8 +27,8 @@ ** **************************************************************************/ -#ifndef _DBG_WINDUTILS_H -#define _DBG_WINDUTILS_H +#ifndef DEBUGGER_DBG_WINUTILS_H +#define DEBUGGER_DBG_WINUTILS_H #include <QtCore/QList> @@ -39,6 +39,7 @@ struct ProcData; // debuggerdialogs, used by the process listing dialogs QList<ProcData> winProcessList(); -} -} -#endif +} // namespace Internal +} // namespace Debugger + +#endif // DEBUGGER_DBG_WINUTILS_H diff --git a/src/plugins/debugger/win/peutils.cpp b/src/plugins/debugger/win/peutils.cpp index 23cabb8bc3bf0a3b04032ee4742e96ebe058a94b..084e511f4688a19878af5a470d53cde01885f157 100644 --- a/src/plugins/debugger/win/peutils.cpp +++ b/src/plugins/debugger/win/peutils.cpp @@ -40,7 +40,7 @@ using Core::Utils::winErrorMessage; // a memory mapped file template <class Ptr> - inline Ptr *makePtr(void *base, ptrdiff_t offset) +inline Ptr *makePtr(void *base, ptrdiff_t offset) { return reinterpret_cast<Ptr*>(static_cast<char*>(base) + offset); } @@ -275,5 +275,5 @@ bool getPDBFiles(const QString &peExecutableFileName, QStringList *rc, QString * return success; } -} -} +} // namespace Internal +} // namespace Debugger diff --git a/src/plugins/debugger/win/peutils.h b/src/plugins/debugger/win/peutils.h index c9885991be903527b0052dfd07fa4c3304dae017..7b4b0061fc9008da733298eb0073390a5c53e8af 100644 --- a/src/plugins/debugger/win/peutils.h +++ b/src/plugins/debugger/win/peutils.h @@ -27,8 +27,8 @@ ** **************************************************************************/ -#ifndef PEUTILS_H -#define PEUTILS_H +#ifndef DEBUGGER_PEUTILS_H +#define DEBUGGER_PEUTILS_H #include <QtCore/qnamespace.h> @@ -45,7 +45,7 @@ namespace Internal { // Return a list of Program-Database (*.pdb) files a PE executable refers to. */ bool getPDBFiles(const QString &peExecutableFileName, QStringList *rc, QString *errorMessage); -} -} +} // namespace Internal +} // namespace Debugger -#endif // PEUTILS_H +#endif // DEBUGGER_PEUTILS_H diff --git a/src/plugins/find/searchresulttreemodel.cpp b/src/plugins/find/searchresulttreemodel.cpp index 68beb2afb8f3ace34b4a9fa0fbd5f25ae9d03962..0afd1fa459ee7a9914eccf1458c8ff810f48d5c0 100644 --- a/src/plugins/find/searchresulttreemodel.cpp +++ b/src/plugins/find/searchresulttreemodel.cpp @@ -255,3 +255,61 @@ void SearchResultTreeModel::clear() m_rootItem->clearChildren(); reset(); } + +QModelIndex SearchResultTreeModel::next(const QModelIndex &idx) const +{ + QModelIndex parent = idx.parent(); + if (parent.isValid()) { + int row = idx.row(); + if (row + 1 < rowCount(parent)) { + // Same parent + return index(row + 1, 0, parent); + } else { + // Next parent + int parentRow = parent.row(); + QModelIndex nextParent; + if (parentRow + 1 < rowCount()) { + nextParent = index(parentRow + 1, 0); + } else { + // Wrap around + nextParent = index(0,0); + } + return nextParent.child(0, 0); + } + } else { + // We are on a top level item + return idx.child(0,0); + } + return QModelIndex(); +} + +QModelIndex SearchResultTreeModel::prev(const QModelIndex &idx) const +{ + QModelIndex parent = idx.parent(); + if (parent.isValid()) { + int row = idx.row(); + if (row > 0) { + // Same parent + return index(row - 1, 0, parent); + } else { + // Prev parent + int parentRow = parent.row(); + QModelIndex prevParent; + if (parentRow > 0 ) { + prevParent = index(parentRow - 1, 0); + } else { + // Wrap around + prevParent = index(rowCount() - 1, 0); + } + return prevParent.child(rowCount(prevParent) - 1, 0); + } + } else { + // We are on a top level item + int row = idx.row(); + if (row > 0) { + QModelIndex prevParent = index(row - 1, 0); + return prevParent.child(rowCount(prevParent) ,0); + } + } + return QModelIndex(); +} diff --git a/src/plugins/find/searchresulttreemodel.h b/src/plugins/find/searchresulttreemodel.h index b4036c0e7b64b91525292d328399100af3ab3957..dacbf9e6b425a59b76e3e383355d287246c26e19 100644 --- a/src/plugins/find/searchresulttreemodel.h +++ b/src/plugins/find/searchresulttreemodel.h @@ -57,6 +57,9 @@ public: QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; + QModelIndex next(const QModelIndex &idx) const; + QModelIndex prev(const QModelIndex &idx) const; + signals: void jumpToSearchResult(const QString &fileName, int lineNumber, int searchTermStart, int searchTermLength); diff --git a/src/plugins/find/searchresulttreeview.cpp b/src/plugins/find/searchresulttreeview.cpp index b12e3f15885a0f33c8f5833132eb9b2ed7dcaf4e..7b5cc6ca35d44e0eb7e3c315c2901a3fce0631a8 100644 --- a/src/plugins/find/searchresulttreeview.cpp +++ b/src/plugins/find/searchresulttreeview.cpp @@ -99,3 +99,8 @@ void SearchResultTreeView::keyPressEvent(QKeyEvent *e) } QTreeView::keyPressEvent(e); } + +SearchResultTreeModel *SearchResultTreeView::model() const +{ + return m_model; +} diff --git a/src/plugins/find/searchresulttreeview.h b/src/plugins/find/searchresulttreeview.h index 1fcf03599f4d148b2ebe414da3f02d5e45afc1e9..37d137e81581dc9d621da5f3a9c95795b3a0b941 100644 --- a/src/plugins/find/searchresulttreeview.h +++ b/src/plugins/find/searchresulttreeview.h @@ -48,6 +48,8 @@ public: void setAutoExpandResults(bool expand); void setTextEditorFont(const QFont &font); + SearchResultTreeModel *model() const; + signals: void jumpToSearchResult(int index, const QString &fileName, int lineNumber, int searchTermStart, int searchTermLength); @@ -56,8 +58,6 @@ public slots: void clear(); void appendResultLine(int index, const QString &fileName, int lineNumber, const QString &lineText, int searchTermStart, int searchTermLength); - -private slots: void emitJumpToSearchResult(const QModelIndex &index); protected: diff --git a/src/plugins/find/searchresultwindow.cpp b/src/plugins/find/searchresultwindow.cpp index 19c252a417792f8054bd6c7eda754a37f6ea32fe..334bb862d9ceaa1d81a3c64d84483b7b916273ea 100644 --- a/src/plugins/find/searchresultwindow.cpp +++ b/src/plugins/find/searchresultwindow.cpp @@ -35,6 +35,7 @@ #include <QtCore/QFile> #include <QtCore/QTextStream> #include <QtCore/QSettings> +#include <QtCore/QDebug> #include <QtGui/QListWidget> #include <QtGui/QToolButton> @@ -102,6 +103,7 @@ void SearchResultWindow::clearContents() m_searchResultTreeView->clear(); qDeleteAll(m_items); m_items.clear(); + navigateStateChanged(); } void SearchResultWindow::showNoMatchesFound() @@ -160,8 +162,8 @@ ResultWindowItem *SearchResultWindow::addResult(const QString &fileName, int lin // We didn't have an item before, set the focus to the m_searchResultTreeView m_searchResultTreeView->setFocus(); m_searchResultTreeView->selectionModel()->select(m_searchResultTreeView->model()->index(0, 0, QModelIndex()), QItemSelectionModel::Select); + emit navigateStateChanged(); } - return item; } @@ -198,3 +200,39 @@ int SearchResultWindow::priorityInStatusBar() const { return 80; } + +bool SearchResultWindow::canNext() +{ + return m_searchResultTreeView->model()->rowCount(); +} + +bool SearchResultWindow::canPrevious() +{ + return m_searchResultTreeView->model()->rowCount(); +} + +void SearchResultWindow::goToNext() +{ + if (!m_searchResultTreeView->model()->rowCount()) + return; + QModelIndex idx = m_searchResultTreeView->model()->next(m_searchResultTreeView->currentIndex()); + if (idx.isValid()) { + m_searchResultTreeView->setCurrentIndex(idx); + m_searchResultTreeView->emitJumpToSearchResult(idx); + } +} +void SearchResultWindow::goToPrev() +{ + if (!m_searchResultTreeView->model()->rowCount()) + return; + QModelIndex idx = m_searchResultTreeView->model()->prev(m_searchResultTreeView->currentIndex()); + if (idx.isValid()) { + m_searchResultTreeView->setCurrentIndex(idx); + m_searchResultTreeView->emitJumpToSearchResult(idx); + } +} + +bool SearchResultWindow::canNavigate() +{ + return true; +} diff --git a/src/plugins/find/searchresultwindow.h b/src/plugins/find/searchresultwindow.h index da371971cf795910ca7880f139381461512ed3bc..83d4c9f3b1f699f9881f9d4ed70f5506445ff904 100644 --- a/src/plugins/find/searchresultwindow.h +++ b/src/plugins/find/searchresultwindow.h @@ -75,6 +75,12 @@ public: bool canFocus(); void setFocus(); + bool canNext(); + bool canPrevious(); + void goToNext(); + void goToPrev(); + bool canNavigate(); + void setTextEditorFont(const QFont &font); public slots: diff --git a/src/plugins/git/gitoutputwindow.cpp b/src/plugins/git/gitoutputwindow.cpp index 6985b64baeb3d71ca11b7429ef4ea7ee34370802..369df74fcac3c14c22c9ab1669a114644f48e86b 100644 --- a/src/plugins/git/gitoutputwindow.cpp +++ b/src/plugins/git/gitoutputwindow.cpp @@ -117,3 +117,27 @@ int GitOutputWindow::priorityInStatusBar() const { return -1; } + +bool GitOutputWindow::canNext() +{ + return false; +} + +bool GitOutputWindow::canPrevious() +{ + return false; +} + +void GitOutputWindow::goToNext() +{ +} + +void GitOutputWindow::goToPrev() +{ + +} + +bool GitOutputWindow::canNavigate() +{ + return false; +} diff --git a/src/plugins/git/gitoutputwindow.h b/src/plugins/git/gitoutputwindow.h index 8ada72c16be3b3f178d5893ed01118051215b138..81eff4fe66be8d05633edf348ea7880a85e7364d 100644 --- a/src/plugins/git/gitoutputwindow.h +++ b/src/plugins/git/gitoutputwindow.h @@ -59,6 +59,12 @@ public: bool hasFocus(); void setFocus(); + bool canNext(); + bool canPrevious(); + void goToNext(); + void goToPrev(); + bool canNavigate(); + public slots: void setText(const QString &text); void append(const QString &text); diff --git a/src/plugins/perforce/perforceoutputwindow.cpp b/src/plugins/perforce/perforceoutputwindow.cpp index 0ed35c401c77c711520d79f7a745cce4ecf1d459..93cdc5442c9a8074b292f5ccaf2c3ae461980498 100644 --- a/src/plugins/perforce/perforceoutputwindow.cpp +++ b/src/plugins/perforce/perforceoutputwindow.cpp @@ -159,3 +159,28 @@ int PerforceOutputWindow::priorityInStatusBar() const { return -1; } + +bool PerforceOutputWindow::canNext() +{ + return false; +} + +bool PerforceOutputWindow::canPrevious() +{ + return false; +} + +void PerforceOutputWindow::goToNext() +{ + +} + +void PerforceOutputWindow::goToPrev() +{ + +} + +bool PerforceOutputWindow::canNavigate() +{ + return false; +} diff --git a/src/plugins/perforce/perforceoutputwindow.h b/src/plugins/perforce/perforceoutputwindow.h index d88d5b57789648a532cadf3b2c463938c66c5566..da17a5d3f6d4bd598f0cc429d74a2cdf77326d57 100644 --- a/src/plugins/perforce/perforceoutputwindow.h +++ b/src/plugins/perforce/perforceoutputwindow.h @@ -61,6 +61,12 @@ public: bool hasFocus(); void setFocus(); + bool canNext(); + bool canPrevious(); + void goToNext(); + void goToPrev(); + bool canNavigate(); + public slots: void append(const QString &txt, bool doPopup = false); diff --git a/src/plugins/projectexplorer/compileoutputwindow.cpp b/src/plugins/projectexplorer/compileoutputwindow.cpp index 493e6c492dcf6d66b4b44ca418dfb35f23c7f87b..eeab3f133b1ea511c1676c90867b7d8788dcb8b6 100644 --- a/src/plugins/projectexplorer/compileoutputwindow.cpp +++ b/src/plugins/projectexplorer/compileoutputwindow.cpp @@ -93,3 +93,28 @@ int CompileOutputWindow::priorityInStatusBar() const { return 50; } + +bool CompileOutputWindow::canNext() +{ + return false; +} + +bool CompileOutputWindow::canPrevious() +{ + return false; +} + +void CompileOutputWindow::goToNext() +{ + +} + +void CompileOutputWindow::goToPrev() +{ + +} + +bool CompileOutputWindow::canNavigate() +{ + return false; +} diff --git a/src/plugins/projectexplorer/compileoutputwindow.h b/src/plugins/projectexplorer/compileoutputwindow.h index 55a4b988b004c0a35151f8eadafbe3470e4d41dd..f18c9a4b01ef88f7cb333bd82599b30189d11b10 100644 --- a/src/plugins/projectexplorer/compileoutputwindow.h +++ b/src/plugins/projectexplorer/compileoutputwindow.h @@ -57,6 +57,12 @@ public: bool hasFocus(); void setFocus(); + bool canNext(); + bool canPrevious(); + void goToNext(); + void goToPrev(); + bool canNavigate(); + private: QPlainTextEdit *m_textEdit; }; 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/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp index 3ead27b6105c43eae5361abdd9f52e01eb0231c8..74adafc2feeaf1a7a12f9867ce3c9925bfd9d881 100644 --- a/src/plugins/projectexplorer/outputwindow.cpp +++ b/src/plugins/projectexplorer/outputwindow.cpp @@ -305,6 +305,30 @@ RunControl* OutputPane::runControlForTab(int index) const return m_outputWindows.key(qobject_cast<OutputWindow *>(m_tabWidget->widget(index))); } +bool OutputPane::canNext() +{ + return false; +} + +bool OutputPane::canPrevious() +{ + return false; +} + +void OutputPane::goToNext() +{ + +} + +void OutputPane::goToPrev() +{ + +} + +bool OutputPane::canNavigate() +{ + return false; +} /*******************/ @@ -350,368 +374,3 @@ void OutputWindow::insertLine() appendPlainText(QString()); } -#if 0 -OutputWindow::OutputWindow(QWidget *parent) - : QAbstractScrollArea(parent) -{ - max_lines = 1000; - width_used = 0; - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); - same_height = true; - block_scroll = false; - setWindowTitle(tr("Application Output Window")); - setWindowIcon(QIcon(":/qt4projectmanager/images/window.png")); -} - -void OutputWindow::changed() { - int remove = lines.size() - max_lines; - if (remove > 0) { - selection_start.line -= remove; - selection_end.line -= remove; - selection_start = qMax(selection_start, Selection()); - selection_end = qMax(selection_end, Selection()); - if (remove > verticalScrollBar()->value()) { - if (same_height) - viewport()->scroll(0, -remove * fontMetrics().lineSpacing()); - else - viewport()->update(); - } else { - block_scroll = true; - verticalScrollBar()->setValue(verticalScrollBar()->value() - remove); - block_scroll = false; - } - while (remove--) - lines.removeFirst(); - } - - verticalScrollBar()->setRange(0, lines.size() - 1); - -} - - -bool OutputWindow::getCursorPos(int *lineNumber, int *position, const QPoint &pos) { - if (lines.isEmpty()) - return false; - *lineNumber = verticalScrollBar()->value(); - - int x = 4 - horizontalScrollBar()->value(); - - int spacing = fontMetrics().lineSpacing(); - int leading = fontMetrics().leading(); - int height = 0; - - QTextLayout textLayout; - textLayout.setFont(font()); - - if (same_height && pos.y() > 0) { - int skipLines = pos.y() / spacing; - height += skipLines * spacing; - *lineNumber = qMin(*lineNumber + skipLines, lines.size() - 1); - } - - same_height = true; - - while ( *lineNumber < lines.size()) { - textLayout.setText(lines.at(*lineNumber)); - - textLayout.beginLayout(); - while (1) { - QTextLine line = textLayout.createLine(); - if (!line.isValid()) - break; - line.setLineWidth(INT_MAX/256); - height += leading; - line.setPosition(QPoint(x, height)); - height += static_cast<int>(line.height()); - } - textLayout.endLayout(); - if (height > pos.y()) { - *position = textLayout.lineAt(0).xToCursor(pos.x()); - break; - } - ++*lineNumber; - } - return true; -} - -void OutputWindow::setNumberOfLines(int max) -{ - max_lines = qMax(1, max); - while (lines.size() > max_lines) - lines.removeLast(); - changed(); -} - -int OutputWindow::numberOfLines() const -{ - return max_lines; -} - -bool OutputWindow::hasSelectedText() const -{ - return selection_start != selection_end; -} - -void OutputWindow::clearSelection() -{ - bool hadSelectedText = hasSelectedText(); - selection_start = selection_end = Selection(); - if (hadSelectedText) - viewport()->update(); -} - -QString OutputWindow::selectedText() const -{ - Selection sel_start = qMin(selection_start, selection_end); - Selection sel_end = qMax(selection_start, selection_end); - QString text; - - if (sel_start.line == sel_end.line) { - text += lines.at(sel_start.line).mid(sel_start.pos, sel_end.pos - sel_start.pos); - } else { - int line = sel_start.line; - text += lines.at(line++).mid(sel_start.pos); - text += QLatin1Char('\n'); - while (line < sel_end.line) { - text += lines.at(line++); - text += QLatin1Char('\n'); - } - text += lines.at(sel_end.line).left(sel_end.pos); - } - return text; -} - -void OutputWindow::appendOutput(const QString &text) -{ - lines.append(text); - if (same_height) - viewport()->update( - QRect(0, (lines.size() - verticalScrollBar()->value() - 1) * fontMetrics().lineSpacing(), - viewport()->width(), viewport()->height())); - else - viewport()->update(); - - changed(); - int top = lines.size() - (viewport()->height() / fontMetrics().lineSpacing()); - if (verticalScrollBar()->value() == top - 1) - verticalScrollBar()->setValue(top); -} - -void OutputWindow::clear() -{ - clearSelection(); - lines.clear(); - viewport()->update(); -} - -void OutputWindow::copy() -{ - if (hasSelectedText()) - QApplication::clipboard()->setText(selectedText()); -} - -void OutputWindow::selectAll() -{ - selection_start = Selection(); - selection_end.line = lines.size() - 1; - selection_end.pos = lines.last().length() - 1; - viewport()->update(); -} - -void OutputWindow::scrollContentsBy(int dx, int dy) -{ - if (block_scroll) - return; - if (dx && dy) { - viewport()->update(); - } else if (dx && !dy) { - viewport()->scroll(dx, 0); - } else { - if (same_height) { - viewport()->scroll(0, fontMetrics().lineSpacing() * dy); - } else { - viewport()->update(); - } - } -} - -void OutputWindow::keyPressEvent(QKeyEvent *e) -{ - bool accept = true; - if (e == QKeySequence::Copy) { - copy(); - } else if (e == QKeySequence::SelectAll) { - selectAll(); - } else if (e->key() == Qt::Key_Enter - || e->key() == Qt::Key_Return) { - insertLine(); - } else { - accept = false; - } - - if (accept) - e->accept(); - else - QAbstractScrollArea::keyPressEvent(e); -} - -void OutputWindow::paintEvent(QPaintEvent *e) -{ - int lineNumber = verticalScrollBar()->value(); - - int x = 4 - horizontalScrollBar()->value(); - QPainter p(viewport()); - - int spacing = fontMetrics().lineSpacing(); - int leading = fontMetrics().leading(); - int height = 0; - - QTextLayout textLayout; - textLayout.setFont(font()); - - QTextCharFormat selectionFormat; - selectionFormat.setBackground(palette().highlight()); - selectionFormat.setForeground(palette().highlightedText()); - - if (e->rect().top() <= 0 && e->rect().bottom() >= viewport()->rect().bottom()) - width_used = 0; // recalculate - - if (same_height) { - int skipLines = e->rect().top() / spacing; - height += skipLines * spacing; - lineNumber += skipLines; - } - - same_height = true; - - Selection sel_start = qMin(selection_start, selection_end); - Selection sel_end = qMax(selection_start, selection_end); - - while ( lineNumber < lines.size() && height <= e->rect().bottom()) { - - QString line = lines.at(lineNumber); - - if (line.size() == 1 && line.at(0) == QChar::ParagraphSeparator) { - int y = height + spacing/2; - p.drawLine(e->rect().left(), y, e->rect().right(), y); - height += spacing; - - } else { - textLayout.setText(line); - textLayout.beginLayout(); - while (1) { - QTextLine line = textLayout.createLine(); - if (!line.isValid()) - break; - line.setLineWidth(INT_MAX/256); - height += leading; - line.setPosition(QPoint(x, height)); - height += static_cast<int>(line.height()); - - same_height = same_height && (line.height() + leading) == spacing; - width_used = qMax(width_used, 8 + static_cast<int>(line.naturalTextWidth())); - } - textLayout.endLayout(); - - if (lineNumber >= sel_start.line && lineNumber <= sel_end.line) { - QVector<QTextLayout::FormatRange> selection(1); - selection[0].start = (lineNumber == sel_start.line)? sel_start.pos : 0; - selection[0].length = ((lineNumber == sel_end.line) ? sel_end.pos : lines.at(lineNumber).size()) - selection[0].start; - selection[0].format = selectionFormat; - - textLayout.draw(&p, QPoint(0, 0), selection); - } else { - textLayout.draw(&p, QPoint(0, 0)); - } - } - - - ++lineNumber; - } - - horizontalScrollBar()->setRange(0, qMax(0, width_used - viewport()->width())); - if (horizontalScrollBar()->pageStep() != viewport()->width()) - horizontalScrollBar()->setPageStep(viewport()->width()); - if (height > viewport()->height()) - verticalScrollBar()->setPageStep(lineNumber - verticalScrollBar()->value()); - else if (verticalScrollBar()->pageStep() != viewport()->height() / fontMetrics().lineSpacing()) - verticalScrollBar()->setPageStep(viewport()->height() / fontMetrics().lineSpacing()); -} - -void OutputWindow::mousePressEvent(QMouseEvent *e) -{ - if (e->button() == Qt::LeftButton) { - clearSelection(); - if (getCursorPos(&selection_start.line, &selection_start.pos, e->pos())) { - selection_end = selection_start; - autoscroll = 0; - } - } -} - -void OutputWindow::timerEvent(QTimerEvent *e) -{ - if (e->timerId() == autoscroll_timer.timerId()) { - int autoscroll = 0; - if (lastMouseMove.y() < 0) - autoscroll = -1; - else if (lastMouseMove.y() > viewport()->height()) - autoscroll = 1; - if (autoscroll) { - verticalScrollBar()->setValue(verticalScrollBar()->value() + autoscroll); - OutputWindow::mouseMoveEvent(0); - } - } - QAbstractScrollArea::timerEvent(e); -} - -void OutputWindow::mouseReleaseEvent(QMouseEvent *e) -{ - if (e->button() == Qt::LeftButton) { - autoscroll_timer.stop(); - if (hasSelectedText() && QApplication::clipboard()->supportsSelection()) - QApplication::clipboard()->setText(selectedText(), QClipboard::Selection); - } -} - -void OutputWindow::mouseMoveEvent(QMouseEvent *e) -{ - if (e) { - lastMouseMove = e->pos(); - if (viewport()->rect().contains(e->pos())) - autoscroll_timer.stop(); - else - autoscroll_timer.start(20, this); - } - - - Selection old = selection_end; - if (!getCursorPos(&selection_end.line, &selection_end.pos, lastMouseMove)) - return; - if (same_height) { - Selection from = qMin(old, selection_end); - Selection to = qMax(old, selection_end); - viewport()->update(QRect(0, -1 + (from.line - verticalScrollBar()->value()) * fontMetrics().lineSpacing(), - viewport()->width(), 2 + (to.line - from.line + 1) * fontMetrics().lineSpacing())); - } else { - viewport()->update(); - } -} - -void OutputWindow::contextMenuEvent(QContextMenuEvent * e) -{ - QMenu menu(this); - QAction *clearAction = menu.addAction("Clear", this, SLOT(clear())); - QAction *copyAction = menu.addAction("Copy", this, SLOT(copy()), QKeySequence::Copy); - QAction *selectAllAction = menu.addAction("Select All", this, SLOT(selectAll()), QKeySequence::SelectAll); - if (lines.empty()) { - clearAction->setDisabled(true); - selectAllAction->setDisabled(true); - } - if (!hasSelectedText()) - copyAction->setDisabled(true); - - menu.exec(e->globalPos()); -} - -#endif // 0 diff --git a/src/plugins/projectexplorer/outputwindow.h b/src/plugins/projectexplorer/outputwindow.h index 7542269bfc54559ef1b597b891c0128c1aceeb2c..225ae4a3080bbe898c22325b1294c768f5236ca6 100644 --- a/src/plugins/projectexplorer/outputwindow.h +++ b/src/plugins/projectexplorer/outputwindow.h @@ -70,6 +70,12 @@ public: bool hasFocus(); void setFocus(); + bool canNext(); + bool canPrevious(); + void goToNext(); + void goToPrev(); + bool canNavigate(); + void appendOutput(const QString &out); // ApplicationOutputspecifics diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp index e3a431be859ce486e440645beded58ddac472940..2af18a03b788ec6b7da545717c3fddf3329983fc 100644 --- a/src/plugins/projectexplorer/taskwindow.cpp +++ b/src/plugins/projectexplorer/taskwindow.cpp @@ -319,6 +319,7 @@ void TaskWindow::clearContents() m_model->clear(); m_copyAction->setEnabled(false); emit tasksChanged(); + navigateStateChanged(); } void TaskWindow::visibilityChanged(bool /* b */) @@ -333,6 +334,8 @@ void TaskWindow::addItem(ProjectExplorer::BuildParserInterface::PatternType type ++m_errorCount; m_copyAction->setEnabled(true); emit tasksChanged(); + if (m_model->rowCount() == 1) + navigateStateChanged(); } void TaskWindow::showTaskInFile(const QModelIndex &index) @@ -406,8 +409,6 @@ bool TaskWindow::canFocus() return m_model->rowCount(); } -#include <QDebug> - void TaskWindow::setFocus() { if (m_model->rowCount()) { @@ -418,6 +419,55 @@ void TaskWindow::setFocus() } } +bool TaskWindow::canNext() +{ + return m_model->rowCount(); +} + +bool TaskWindow::canPrevious() +{ + return m_model->rowCount(); +} + +void TaskWindow::goToNext() +{ + if (!m_model->rowCount()) + return; + QModelIndex currentIndex = m_listview->currentIndex(); + if (currentIndex.isValid()) { + int row = currentIndex.row() + 1; + if (row == m_model->rowCount()) + row = 0; + currentIndex = m_model->index(row, 0); + } else { + currentIndex = m_model->index(0, 0); + } + m_listview->setCurrentIndex(currentIndex); + showTaskInFile(currentIndex); +} + +void TaskWindow::goToPrev() +{ + if (!m_model->rowCount()) + return; + QModelIndex currentIndex = m_listview->currentIndex(); + if (currentIndex.isValid()) { + int row = currentIndex.row() -1; + if (row < 0) + row = m_model->rowCount() - 1; + currentIndex = m_model->index(row, 0); + } else { + currentIndex = m_model->index(m_model->rowCount()-1, 0); + } + m_listview->setCurrentIndex(currentIndex); + showTaskInFile(currentIndex); +} + +bool TaskWindow::canNavigate() +{ + return true; +} + ///// // Delegate ///// diff --git a/src/plugins/projectexplorer/taskwindow.h b/src/plugins/projectexplorer/taskwindow.h index fffd6904e77cebc86de0ec6ed4f24b4d17d6c01b..862fa7dbceeed21e2662dd082f3b2cbc36b9711d 100644 --- a/src/plugins/projectexplorer/taskwindow.h +++ b/src/plugins/projectexplorer/taskwindow.h @@ -74,6 +74,12 @@ public: bool hasFocus(); void setFocus(); + bool canNext(); + bool canPrevious(); + void goToNext(); + void goToPrev(); + bool canNavigate(); + signals: void tasksChanged(); 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/plugins/subversion/subversionoutputwindow.cpp b/src/plugins/subversion/subversionoutputwindow.cpp index 387c88f3f331d725957ea9ba34344f2c1f0f5dc1..e7191bd1c9c56a095105184f5746f771564ec357 100644 --- a/src/plugins/subversion/subversionoutputwindow.cpp +++ b/src/plugins/subversion/subversionoutputwindow.cpp @@ -100,3 +100,28 @@ bool SubversionOutputWindow::hasFocus() void SubversionOutputWindow::setFocus() { } + +bool SubversionOutputWindow::canNext() +{ + return false; +} + +bool SubversionOutputWindow::canPrevious() +{ + return false; +} + +void SubversionOutputWindow::goToNext() +{ + +} + +void SubversionOutputWindow::goToPrev() +{ + +} + +bool SubversionOutputWindow::canNavigate() +{ + return false; +} diff --git a/src/plugins/subversion/subversionoutputwindow.h b/src/plugins/subversion/subversionoutputwindow.h index fc5b76eec46310347f8de6b35ca662b458e2d104..35c22423b11d5c725d0a031ec86e628e167528ba 100644 --- a/src/plugins/subversion/subversionoutputwindow.h +++ b/src/plugins/subversion/subversionoutputwindow.h @@ -59,9 +59,15 @@ public: int priorityInStatusBar() const; void visibilityChanged(bool visible); - virtual bool canFocus(); - virtual bool hasFocus(); - virtual void setFocus(); + bool canFocus(); + bool hasFocus(); + void setFocus(); + + bool canNext(); + bool canPrevious(); + void goToNext(); + void goToPrev(); + bool canNavigate(); public slots: void append(const QString &txt, bool popup = false); 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) diff --git a/tests/auto/qstringbuilder/qstringbuilder.pro b/tests/auto/qstringbuilder/qstringbuilder.pro new file mode 100644 index 0000000000000000000000000000000000000000..5416ca413ab313bea694286ce9a4c72d84466e2d --- /dev/null +++ b/tests/auto/qstringbuilder/qstringbuilder.pro @@ -0,0 +1,11 @@ +load(qttest_p4) +SOURCES += tst_qstringbuilder.cpp + +QT -= gui + +QT = core + +DEFINES += QT_NO_CAST_TO_ASCII + + + diff --git a/tests/auto/qstringbuilder/tst_qstringbuilder.cpp b/tests/auto/qstringbuilder/tst_qstringbuilder.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2e58d1252aa3386a58335948a6457c99401a6982 --- /dev/null +++ b/tests/auto/qstringbuilder/tst_qstringbuilder.cpp @@ -0,0 +1,48 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +****************************************************************************/ + +#include <QtTest/QtTest> +#include "../../../src/libs/utils/qstringbuilder.h" + +//TESTED_CLASS=QStringBuilder +//TESTED_FILES=qstringbuilder.h + +class tst_QStringBuilder : public QObject +{ + Q_OBJECT + +public: + tst_QStringBuilder(); + ~tst_QStringBuilder() {} + +public slots: + void init() {} + void cleanup() {} + +private slots: + void operator_percent(); +}; + + +tst_QStringBuilder::tst_QStringBuilder() +{ + //QTextCodec::setCodecForLocale(QTextCodec::codecForName("ISO 8859-1")); +} + +void tst_QStringBuilder::operator_percent() +{ + QLatin1Literal l1literal("a literal"); + QLatin1String l1string("a literal"); + QLatin1Char l1char('c'); + QChar qchar(l1char); + + QCOMPARE(QString(l1literal % l1literal), QString(l1string + l1string)); +} + +QTEST_APPLESS_MAIN(tst_QStringBuilder) + +#include "tst_qstringbuilder.moc" diff --git a/tests/benchmarks/qstringbuilder/main.cpp b/tests/benchmarks/qstringbuilder/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ba5cfe0a762e42aa674a9eaa3fe3decbffa980c8 --- /dev/null +++ b/tests/benchmarks/qstringbuilder/main.cpp @@ -0,0 +1,106 @@ + +#include <QDebug> +#include <QString> + +#include "../../../src/libs/utils/qstringbuilder.h" + +#include <qtest.h> + + +class tst_qstringbuilder : public QObject +{ + Q_OBJECT + +public: + tst_qstringbuilder(); + +private slots: + // QStringBuilder based + void b_separator() { qDebug() << "\n------- QStringBuilder based ----------"; } + void b_2_l1literal(); + void b_3_l1literal(); + void b_4_l1literal(); + void b_string_4_char(); + + // QString based for comparison + void s_separator() { qDebug() << "\n-------- QString based ---------"; } + void s_2_l1string(); + void s_3_l1string(); + void s_4_l1string(); + void s_string_4_char(); + +private: + const QLatin1Literal l1literal; + const QLatin1String l1string; + const QString string; + const char achar; +}; + + +tst_qstringbuilder::tst_qstringbuilder() + : l1literal("some literal"), + l1string("some literal"), + string(l1string), + achar('c') +{} + +void tst_qstringbuilder::b_2_l1literal() +{ + QString result; + QBENCHMARK { result = l1literal % l1literal; } + QCOMPARE(result, l1string + l1string); +} + +void tst_qstringbuilder::b_3_l1literal() +{ + QString result; + QBENCHMARK { result = l1literal % l1literal % l1literal; } + QCOMPARE(result, l1string + l1string + l1string); +} + +void tst_qstringbuilder::b_4_l1literal() +{ + QString result; + QBENCHMARK { result = l1literal % l1literal % l1literal % l1literal; } + QCOMPARE(result, l1string + l1string + l1string + l1string); +} + +void tst_qstringbuilder::b_string_4_char() +{ + QString result; + QBENCHMARK { result = string + achar + achar + achar; } + QCOMPARE(result, QString(string % achar % achar % achar)); +} + + +void tst_qstringbuilder::s_2_l1string() +{ + QString result; + QBENCHMARK { result = l1string + l1string; } + QCOMPARE(result, QString(l1literal % l1literal)); +} + +void tst_qstringbuilder::s_3_l1string() +{ + QString result; + QBENCHMARK { result = l1string + l1string + l1string; } + QCOMPARE(result, QString(l1literal % l1literal % l1literal)); +} + +void tst_qstringbuilder::s_4_l1string() +{ + QString result; + QBENCHMARK { result = l1string + l1string + l1string + l1string; } + QCOMPARE(result, QString(l1literal % l1literal % l1literal % l1literal)); +} + +void tst_qstringbuilder::s_string_4_char() +{ + QString result; + QBENCHMARK { result = string + achar + achar + achar; } + QCOMPARE(result, QString(string % achar % achar % achar)); +} + +QTEST_MAIN(tst_qstringbuilder) + +#include "main.moc" diff --git a/tests/benchmarks/qstringbuilder/qstringbuilder.pro b/tests/benchmarks/qstringbuilder/qstringbuilder.pro new file mode 100644 index 0000000000000000000000000000000000000000..81c42bc565d2fa4183dad8022d125f26fc4f4f31 --- /dev/null +++ b/tests/benchmarks/qstringbuilder/qstringbuilder.pro @@ -0,0 +1,12 @@ +load(qttest_p4) +TEMPLATE = app +TARGET = tst_qstringbuilder +DEPENDPATH += . +INCLUDEPATH += . + +QT -= gui + +CONFIG += release + +# Input +SOURCES += main.cpp diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp index 608198bb28de4f70d4631c920790b70ff9fa909c..a5b0d0c2a6ab2a0d5343fa4e5b7f3eb41d63d439 100644 --- a/tests/manual/gdbdebugger/simple/app.cpp +++ b/tests/manual/gdbdebugger/simple/app.cpp @@ -549,9 +549,13 @@ void testQSharedPointer() QSharedPointer<QString> ptr2 = ptr; QSharedPointer<QString> ptr3 = ptr; - //QWeakPointer<QString> wptr(ptr); - //QWeakPointer<QString> wptr2 = wptr; - //QWeakPointer<QString> wptr3 = wptr; + QWeakPointer<int> wiptr(iptr); + QWeakPointer<int> wiptr2 = wiptr; + QWeakPointer<int> wiptr3 = wiptr; + + QWeakPointer<QString> wptr(ptr); + QWeakPointer<QString> wptr2 = wptr; + QWeakPointer<QString> wptr3 = wptr; } void stringRefTest(const QString &refstring)