diff --git a/dist/changes-2.0.0 b/dist/changes-2.0.0 index 81e4b8266746880552899bb57cf796999ba501df..1a9ab1cbbc9618d46d8a5d3c29a7a491d27e006c 100644 --- a/dist/changes-2.0.0 +++ b/dist/changes-2.0.0 @@ -57,9 +57,21 @@ Project support directory Debugging - * CDB: Fixed bug in location marker - * CDB: Fixed handling of mixed-case file names correctly by normalizing file + * Add on-device debugging for the Symbian platform using gdb + * Add on-device debugging for the Maemo platform using gdb + * gdb: Replace compiled "debugging helpers" by Python based ones + (except on Mac) + * New debugging helpers for QUrl, QAtomicInt, __gnu_ext::hash_map and more + * Additional features for breakpoint, disassembler output, stack, + registers and watchers views + * Improve variable tooltip handling + * gdb: Support reverse execution where available + * gdb: Added mixed disassembler/source output whenever possible + * cdb: Fixed bug in location marker + * cdb: Fixed handling of mixed-case file names correctly by normalizing file names + * pdb: Added some basic debugging for Python scripts based on pdb + * Improvements in the dialogs, status messages, and general appearance Help diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 10e85dfe24685d00b4c01d9cc22606b4f7361241..046c1c1a305d9f224bd7462514347ba36f126109 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -51,7 +51,7 @@ </message> <message> <location/> - <source>Attach to Process ID:</source> + <source>Attach to process ID:</source> <translation>Prozess-Id:</translation> </message> </context> @@ -96,7 +96,7 @@ <translation>Neuer Ordner</translation> </message> <message> - <location filename="../../../src/shared/help/bookmarkmanager.cpp" line="+175"/> + <location filename="../../../src/shared/help/bookmarkmanager.cpp" line="+178"/> <location line="+18"/> <location line="+39"/> <location line="+18"/> @@ -118,7 +118,7 @@ <context> <name>BookmarkManager</name> <message> - <location line="+424"/> + <location line="+432"/> <source>Bookmarks</source> <translation>Lesezeichen</translation> </message> @@ -142,7 +142,7 @@ <context> <name>BookmarkWidget</name> <message> - <location line="-420"/> + <location line="-428"/> <source>Delete Folder</source> <translation>Ordner löschen</translation> </message> @@ -172,12 +172,7 @@ <translation>Lesezeichen umbenennen</translation> </message> <message> - <location line="+38"/> - <source>Filter:</source> - <translation>Filter:</translation> - </message> - <message> - <location line="+26"/> + <location line="+72"/> <source>Add</source> <translation>Hinzufügen</translation> </message> @@ -271,12 +266,12 @@ </message> <message> <location line="+10"/> - <source>Previous Bookmark In Document</source> + <source>Previous Bookmark in Document</source> <translation>Vorhergehendes Lesezeichen im Dokument</translation> </message> <message> <location line="+5"/> - <source>Next Bookmark In Document</source> + <source>Next Bookmark in Document</source> <translation>Nächstes Lesezeichen im Dokument</translation> </message> </context> @@ -349,7 +344,7 @@ </message> <message> <location line="+5"/> - <source>Select the working directory</source> + <source>Select Working Directory</source> <translation>Wählen Sie das Arbeitsverzeichnis aus</translation> </message> <message> @@ -862,10 +857,14 @@ </context> <context> <name>CVS::Internal::CheckoutWizard</name> + <message> + <source>Checks out a project from a CVS repository and tries to load the contained project.</source> + <translation type="obsolete">Holt ein Projekt aus einem CVS-Repository und versucht, das darin enthaltene Projekt zu laden.</translation> + </message> <message> <location filename="../../../src/plugins/cvs/checkoutwizard.cpp" line="+56"/> - <source>Checks out a project from a CVS repository.</source> - <translation>Holt ein Projekt aus einem CVS-Repository.</translation> + <source>Checks out a CVS repository and tries to load the contained project.</source> + <translation>Erstellt einen Checkout eines CVS-Repositories und versucht, das darin enthaltene Projekt zu laden.</translation> </message> <message> <location line="+5"/> @@ -893,11 +892,6 @@ </context> <context> <name>CVS::Internal::SettingsPage</name> - <message> - <location filename="../../../src/plugins/cvs/settingspage.ui"/> - <source>When checked, all files touched by a commit will be displayed when clicking on a revision number in the annotation view (retrieved via commit id). Otherwise, only the respective file will be displayed.</source> - <translation>Wenn die Option aktiviert ist, werden beim Klick auf die Revisionsnummer in der Annotationsansicht alle Dateien angezeigt, die zu einer Abgabe gehören (mittels Commit-Id bestimmt). Ansonsten wird nur die betreffende Datei angezeigt.</translation> - </message> <message> <location filename="../../../src/plugins/cvs/settingspage.cpp" line="+98"/> <source>CVS</source> @@ -948,6 +942,11 @@ <source>Diff options:</source> <translation>Optionen für Diff:</translation> </message> + <message> + <location/> + <source>When checked, all files touched by a commit will be displayed when clicking on a revision number in the annotation view (retrieved via commit ID). Otherwise, only the respective file will be displayed.</source> + <translation>Wenn die Option aktiviert ist, werden beim Klick auf die Revisionsnummer in der Annotationsansicht alle Dateien angezeigt, die zu einer Abgabe gehören (mittels Commit-Id bestimmt). Ansonsten wird nur die betreffende Datei angezeigt.</translation> + </message> </context> <context> <name>CVS::Internal::SettingsPageWidget</name> @@ -972,12 +971,6 @@ <source>These options take effect at the next start of Qt Creator.</source> <translation>Die Einstellungen werden beim nächsten Start von Qt Creator wirksam.</translation> </message> - <message> - <location/> - <source>Cdb</source> - <extracomment>Placeholder</extracomment> - <translation>Cdb</translation> - </message> <message> <location/> <source>Debugger Paths</source> @@ -1016,12 +1009,18 @@ </message> <message> <location filename="../../../src/plugins/debugger/cdb/cdboptionspagewidget.ui"/> - <source>Other options</source> - <translation>Weiter Optionen:</translation> + <source>CDB</source> + <extracomment>Placeholder</extracomment> + <translation>CDB</translation> </message> <message> <location/> - <source>Verbose Symbol Loading</source> + <source>Other Options</source> + <translation>Weiter Optionen</translation> + </message> + <message> + <location/> + <source>Verbose symbol loading</source> <translation>Ausführliche Meldungen beim Laden der Symbole</translation> </message> </context> @@ -1047,11 +1046,6 @@ <name>ChangeSelectionDialog</name> <message> <location filename="../../../src/plugins/git/changeselectiondialog.ui"/> - <source>Repository Location:</source> - <translation>Repository:</translation> - </message> - <message> - <location/> <source>Select</source> <translation>Auswählen</translation> </message> @@ -1060,6 +1054,11 @@ <source>Change:</source> <translation>Änderung:</translation> </message> + <message> + <location/> + <source>Repository location:</source> + <translation>Repository:</translation> + </message> </context> <context> <name>CodePaster::CodePasterProtocol</name> @@ -1170,16 +1169,6 @@ <source>Username:</source> <translation>Nutzername:</translation> </message> - <message> - <location/> - <source>Copy Paste URL to clipboard</source> - <translation>Kopiere den URL in die Zwischenablage</translation> - </message> - <message> - <location/> - <source>Display Output Pane after sending a post</source> - <translation>Ausgabepanel nach Senden anzeigen</translation> - </message> <message> <location filename="../../../src/plugins/cpaster/settingspage.cpp" line="+94"/> <source>General</source> @@ -1190,6 +1179,16 @@ <source>Default protocol:</source> <translation>Vorgabeprotokoll:</translation> </message> + <message> + <location/> + <source>Display Output pane after sending a post</source> + <translation>Ausgabepanel nach Senden anzeigen</translation> + </message> + <message> + <location/> + <source>Copy-paste URL to clipboard</source> + <translation>Kopiere den URL in die Zwischenablage</translation> + </message> </context> <context> <name>CommonOptionsPage</name> @@ -1245,13 +1244,13 @@ </message> <message> <location/> - <source>Use Creator for post-mortem debugging</source> - <translation>Qt Creator als Post-Mortem-Debugger verwenden</translation> + <source>GUI Behavior</source> + <translation>Verhalten</translation> </message> <message> <location/> - <source>Gui behavior</source> - <translation>Verhalten</translation> + <source>Use Qt Creator for post-mortem debugging</source> + <translation>Qt Creator als Post-Mortem-Debugger verwenden</translation> </message> </context> <context> @@ -1298,19 +1297,19 @@ </message> <message> <location/> - <source>First letter</source> - <translation>Erster Buchstabe</translation> + <source>Insert &space after function name</source> + <translation>Leerzeichen nach &Funktionsname einfügen</translation> </message> <message> <location/> - <source>Insert &space after function name</source> - <translation>Leerzeichen nach &Funktionsname einfügen</translation> + <source>First Letter</source> + <translation>Erster Buchstabe</translation> </message> </context> <context> <name>ContentWindow</name> <message> - <location filename="../../../src/shared/help/contentwindow.cpp" line="+136"/> + <location filename="../../../src/shared/help/contentwindow.cpp" line="+138"/> <source>Open Link</source> <translation>Adresse öffnen</translation> </message> @@ -1391,30 +1390,31 @@ Sollen sie überschrieben werden?</translation> <context> <name>Core::EditorManager</name> <message> - <location filename="../../../src/plugins/coreplugin/editormanager/editormanager.cpp" line="+225"/> - <location line="+1540"/> + <location filename="../../../src/plugins/coreplugin/editormanager/editormanager.cpp" line="+226"/> + <location line="+1547"/> <source>Revert to Saved</source> <translation>Wiederherstellen</translation> </message> <message> - <location line="-1537"/> + <location line="-1544"/> + <location line="+97"/> <location filename="../../../src/plugins/coreplugin/editortoolbar.cpp" line="+302"/> <source>Close</source> <translation>Schließen</translation> </message> <message> - <location line="+1"/> + <location line="-96"/> <source>Close All</source> <translation>Alle schließen</translation> </message> <message> <location line="+1"/> - <location line="+1336"/> + <location line="+1343"/> <source>Close Others</source> <translation>Andere schließen</translation> </message> <message> - <location line="-1331"/> + <location line="-1338"/> <source>Open in External Editor</source> <translation>Öffne in externem Editor</translation> </message> @@ -1424,17 +1424,17 @@ Sollen sie überschrieben werden?</translation> <translation>Gespeicherten Stand wiederherstellen</translation> </message> <message> - <location line="+29"/> + <location line="+38"/> <source>Ctrl+F4</source> <translation>Ctrl+F4</translation> </message> <message> - <location line="+2"/> + <location line="-10"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> - <location line="+9"/> + <location line="+17"/> <source>Ctrl+Shift+W</source> <translation>Ctrl+Shift+W</translation> </message> @@ -1509,12 +1509,12 @@ Sollen sie überschrieben werden?</translation> <translation>Alle Teilungen aufheben</translation> </message> <message> - <location line="+1158"/> + <location line="+1160"/> <source>Save %1 &As...</source> <translation>Speichere '%1' &unter...</translation> </message> <message> - <location line="-1143"/> + <location line="-1145"/> <source>&Advanced</source> <translation>&Weitere</translation> </message> @@ -1524,7 +1524,7 @@ Sollen sie überschrieben werden?</translation> <translation>Alt+V,Alt+I</translation> </message> <message> - <location line="+748"/> + <location line="+750"/> <source>All Files (*)</source> <translation>Alle Dateien (*)</translation> </message> @@ -1587,7 +1587,7 @@ Sollen sie überschrieben werden?</translation> <translation>Schreibbar machen</translation> </message> <message> - <location line="-1308"/> + <location line="-1315"/> <source>Next Open Document in History</source> <translation>Nächstes geöffnetes Dokument im Verlauf</translation> </message> @@ -1609,7 +1609,7 @@ Sollen sie überschrieben werden?</translation> <translation>Nächstes</translation> </message> <message> - <location line="+150"/> + <location line="+155"/> <source>%1,2</source> <translation>%1,2</translation> </message> @@ -1639,7 +1639,7 @@ Sollen sie überschrieben werden?</translation> <translation>%1,o</translation> </message> <message> - <location line="+1151"/> + <location line="+1153"/> <source>&Save %1</source> <translation>&Speichere %1</translation> </message> @@ -1715,7 +1715,7 @@ Sollen sie überschrieben werden?</translation> <context> <name>Core::Internal::ComboBox</name> <message> - <location filename="../../../src/plugins/coreplugin/sidebar.cpp" line="+464"/> + <location filename="../../../src/plugins/coreplugin/sidebar.cpp" line="+475"/> <source>Activate %1</source> <translation>Aktiviere %1</translation> </message> @@ -1872,16 +1872,6 @@ Sollen sie überschrieben werden?</translation> <source>When files are externally modified:</source> <translation>Wenn externe Änderungen an Dateien festgestellt werden:</translation> </message> - <message> - <location/> - <source>Always ask</source> - <translation>Stets fragen</translation> - </message> - <message> - <location/> - <source>Ignore modifications</source> - <translation>Änderungen ignorieren</translation> - </message> <message> <location/> <source>External file browser:</source> @@ -1909,13 +1899,23 @@ Sollen sie überschrieben werden?</translation> </message> <message> <location/> - <source>Reload all unchanged editors</source> + <source>Default file encoding: </source> + <translation>Vorgabe-Encoding:</translation> + </message> + <message> + <location/> + <source>Always Ask</source> + <translation>Stets fragen</translation> + </message> + <message> + <location/> + <source>Reload All Unchanged Editors</source> <translation>Alle Dateien in ungeänderten Editoren neu laden</translation> </message> <message> <location/> - <source>Default file encoding: </source> - <translation>Vorgabe-Encoding:</translation> + <source>Ignore Modifications</source> + <translation>Änderungen ignorieren</translation> </message> </context> <context> @@ -2402,7 +2402,7 @@ Sollen sie überschrieben werden?</translation> <context> <name>Core::Internal::SideBarWidget</name> <message> - <location filename="../../../src/plugins/coreplugin/sidebar.cpp" line="-145"/> + <location filename="../../../src/plugins/coreplugin/sidebar.cpp" line="-147"/> <source>Split</source> <translation>Teilen</translation> </message> @@ -2420,23 +2420,24 @@ Sollen sie überschrieben werden?</translation> <translation>Über Qt Creator</translation> </message> <message> - <location line="+11"/> + <location line="+9"/> + <source>(%1)</source> + <translation>(%1)</translation> + </message> + <message> + <location line="+6"/> <source>From revision %1<br/></source> <extracomment>This gets conditionally inserted as argument %8 into the description string.</extracomment> <translation>Revision %1<br/></translation> </message> <message> <location line="+3"/> - <source><h3>Qt Creator %1</h3>Based on Qt %2 (%3 bit)<br/><br/>Built on %4 at %5<br /><br/>%8<br/>Copyright 2008-%6 %7. All rights reserved.<br/><br/>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.<br/></source> + <source><h3>Qt Creator %1 %8</h3>Based on Qt %2 (%3 bit)<br/><br/>Built on %4 at %5<br /><br/>%9<br/>Copyright 2008-%6 %7. All rights reserved.<br/><br/>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.<br/></source> <translation><h3>Qt Creator %1</h3>Basierend auf Qt %2 (%3 bit)<br/><br/>Erstellt am %4 um %5<br /><br/>%8<br/>Copyright 2008-%6 %7. Alle Rechte vorbehalten.<br/><br/>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.<br/></translation> </message> </context> <context> <name>Core::ModeManager</name> - <message> - <source>Switch to %1 mode</source> - <translation type="obsolete">Gehe zu Mode '%1'</translation> - </message> <message> <location filename="../../../src/plugins/coreplugin/modemanager.cpp" line="+180"/> <source>Switch to <b>%1</b> mode</source> @@ -2545,14 +2546,14 @@ Sollen sie überschrieben werden?</translation> <translation>C++ Header-Datei</translation> </message> <message> - <location line="-1"/> - <source>Creates a C++ header file.</source> - <translation>Erzeugt eine neue C++-Header-Datei.</translation> + <location line="-10"/> + <source>Creates a C++ header and a source file for a new class that you can add to a C++ project.</source> + <translation>Erstellt C++-Header- und Quelldateien für eine neue Klasse eines C++-Projekts.</translation> </message> <message> - <location line="-5"/> - <source>Creates a C++ source file.</source> - <translation>Erzeugt eine neue C++-Quelldatei</translation> + <location line="+4"/> + <source>Creates a C++ source file that you can add to a C++ project.</source> + <translation>Erstellt eine C++-Quelldatei für ein C++-Projekt.</translation> </message> <message> <location line="+1"/> @@ -2560,7 +2561,12 @@ Sollen sie überschrieben werden?</translation> <translation>C++-Quelldatei</translation> </message> <message> - <location line="+18"/> + <location line="+4"/> + <source>Creates a C++ header file that you can add to a C++ project.</source> + <translation>Erstellt eine C++-Header-Datei für ein C++-Projekt.</translation> + </message> + <message> + <location line="+14"/> <source>Follow Symbol Under Cursor</source> <translation>Symbol unter Einfügemarke verfolgen</translation> </message> @@ -2575,17 +2581,17 @@ Sollen sie überschrieben werden?</translation> <translation>Symbol unter Einfügemarke umbenennen</translation> </message> <message> - <location line="-51"/> - <source>C++ Class</source> - <translation>C++-Klasse</translation> + <location line="+12"/> + <source>Update Code Model</source> + <translation>Code-Modell aktualisieren</translation> </message> <message> - <location line="+3"/> - <source>Creates a header and a source file for a new class.</source> - <translation>Erzeugt C++-Header- und Quelldatei für eine neue Klasse</translation> + <location line="-63"/> + <source>C++ Class</source> + <translation>C++-Klasse</translation> </message> <message> - <location line="+41"/> + <location line="+44"/> <source>Find Usages</source> <translation>Verwendung suchen</translation> </message> @@ -2594,11 +2600,6 @@ Sollen sie überschrieben werden?</translation> <source>Ctrl+Shift+U</source> <translation>Ctrl+Shift+U</translation> </message> - <message> - <location line="+17"/> - <source>Update code model</source> - <translation>Code-Modell aktualisieren</translation> - </message> </context> <context> <name>CppFileSettingsPage</name> @@ -2694,7 +2695,7 @@ Sollen sie überschrieben werden?</translation> </message> <message> <location line="+62"/> - <source>Choose a location for the new license template file</source> + <source>Choose Location for New License Template File</source> <translation>Dateiname für eine neue Lizenzvorlage</translation> </message> <message> @@ -2749,7 +2750,7 @@ Sollen sie überschrieben werden?</translation> <context> <name>CppTools::Internal::CppToolsPlugin</name> <message> - <location filename="../../../src/plugins/cpptools/cpptoolsplugin.cpp" line="+128"/> + <location filename="../../../src/plugins/cpptools/cpptoolsplugin.cpp" line="+129"/> <source>&C++</source> <translation>&C++</translation> </message> @@ -2762,7 +2763,7 @@ Sollen sie überschrieben werden?</translation> <context> <name>CppTools::Internal::FunctionArgumentWidget</name> <message> - <location filename="../../../src/plugins/cpptools/cppcodecompletion.cpp" line="+412"/> + <location filename="../../../src/plugins/cpptools/cppcodecompletion.cpp" line="+413"/> <source>%1 of %2</source> <translation>%1 von %2</translation> </message> @@ -5334,11 +5335,6 @@ Möchten Sie den zu debuggenden Prozess anhalten und den gewählten Snapshot lad <source>Use code model</source> <translation>Code-Modell verwenden</translation> </message> - <message> - <location/> - <source>Use debugging helper</source> - <translation>Ausgabe-Hilfsbibliothek benutzen</translation> - </message> <message> <location/> <source><html><head/><body> @@ -5348,6 +5344,11 @@ Möchten Sie den zu debuggenden Prozess anhalten und den gewählten Snapshot lad Die Ausgabe-Hilfsbibliothek dient lediglich zur formatierten Ausgabe von Objekten bestimmten Typs wie QString oder std::map im Fenster "Lokale Variablen und überwachte Ausdrücke".</p> <p>Zum Debuggen mit Qt Creator ist sie jedoch nicht unbedingt erforderlich. </p></body></html></translation> </message> + <message> + <location/> + <source>Use Debugging Helper</source> + <translation>Ausgabe-Hilfsbibliothek benutzen</translation> + </message> </context> <context> <name>DependenciesModel</name> @@ -5444,11 +5445,6 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation> <source>Aggregation</source> <translation>Aggregation</translation> </message> - <message> - <location/> - <source>Multiple Inheritance</source> - <translation>Mehrfachvererbung</translation> - </message> <message> <location/> <source>Code Generation</source> @@ -5464,6 +5460,11 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation> <source>Use Qt module name in #include-directive</source> <translation>Qt-Modulnamen in #include-Direktive verwenden</translation> </message> + <message> + <location/> + <source>Multiple inheritance</source> + <translation>Mehrfachvererbung</translation> + </message> </context> <context> <name>Designer::Internal::FormClassWizardDialog</name> @@ -5515,13 +5516,13 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation> </message> <message> <location line="+2"/> - <source>Creates a Qt Designer form file (.ui).</source> - <translation>Erstellt eine Qt Designer-Formular-Datei (.ui).</translation> + <source>Creates a Qt Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt C++ Project.</source> + <translation>Erstellt eine Qt Designer-Formular-Datei mit zugehörigem Klassenrumpf (bestehend aus C++-Header- und Quelldatei) für ein existierendes C++-Projekt.</translation> </message> <message> - <location line="+7"/> - <source>Creates a Qt Designer form file (.ui) with a matching class.</source> - <translation>Erstellt eine Qt Designer-Formular-Datei (.ui) mit zugehörigem Klassenrumpf.</translation> + <location line="+8"/> + <source>Creates a Qt Designer form that you can add to a Qt C++ project. This is useful if you already have an existing class for the UI business logic.</source> + <translation>Erstellt eine Qt Designer-Formular-Datei für ein C++-Projekt. Verwenden Sie diese Vorlage, wenn bereits Geschäftslogik existiert.</translation> </message> <message> <location line="-2"/> @@ -5560,37 +5561,17 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation> <translation>For&mulareditor</translation> </message> <message> - <location line="+34"/> - <source>Edit widgets</source> - <translation>Widgets bearbeiten</translation> - </message> - <message> - <location line="+1"/> + <location line="+35"/> <source>F3</source> <translation>F3</translation> </message> <message> - <location line="+4"/> - <source>Edit signals/slots</source> - <translation>Signale und Slots bearbeiten</translation> - </message> - <message> - <location line="+1"/> + <location line="+5"/> <source>F4</source> <translation>F4</translation> </message> <message> - <location line="+4"/> - <source>Edit buddies</source> - <translation>Buddies bearbeiten</translation> - </message> - <message> - <location line="+5"/> - <source>Edit tab order</source> - <translation>Tabulatorreihenfolge bearbeiten</translation> - </message> - <message> - <location line="+5"/> + <location line="+14"/> <source>Meta+H</source> <translation>Meta+H</translation> </message> @@ -5641,7 +5622,27 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation> <translation>Widget-Box</translation> </message> <message> - <location line="+280"/> + <location line="+207"/> + <source>Edit Widgets</source> + <translation>Widgets bearbeiten</translation> + </message> + <message> + <location line="+5"/> + <source>Edit Signals/Slots</source> + <translation>Signale und Slots bearbeiten</translation> + </message> + <message> + <location line="+5"/> + <source>Edit Buddies</source> + <translation>Buddies bearbeiten</translation> + </message> + <message> + <location line="+5"/> + <source>Edit Tab Order</source> + <translation>Tabulatorreihenfolge bearbeiten</translation> + </message> + <message> + <location line="+58"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> @@ -5837,7 +5838,7 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation> <context> <name>ExtensionSystem::Internal::PluginSpecPrivate</name> <message> - <location filename="../../../src/libs/extensionsystem/pluginspec.cpp" line="+482"/> + <location filename="../../../src/libs/extensionsystem/pluginspec.cpp" line="+471"/> <source>File does not exist: %1</source> <translation>Die Datei '%1' existiert nicht.</translation> </message> @@ -5961,7 +5962,7 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation> <context> <name>ExtensionSystem::PluginManager</name> <message> - <location filename="../../../src/libs/extensionsystem/pluginmanager.cpp" line="+758"/> + <location filename="../../../src/libs/extensionsystem/pluginmanager.cpp" line="+777"/> <source>Circular dependency detected: </source> <translation>Zirkuläre Abhängigkeit festgestellt: @@ -5997,7 +5998,7 @@ Grund: %3</translation> <name>FakeVim::Internal</name> <message> <location filename="../../../src/plugins/fakevim/fakevimactions.cpp" line="+120"/> - <source>Use vim-style editing</source> + <source>Use Vim-style Editing</source> <translation>Vim benutzen</translation> </message> <message> @@ -6189,21 +6190,6 @@ Grund: %3</translation> <source>Backspace:</source> <translation>Rücktaste:</translation> </message> - <message> - <location/> - <source>Copy text editor settings</source> - <translation>Texteditor-Einstellungen</translation> - </message> - <message> - <location/> - <source>Set Qt style</source> - <translation>Qt-Stil setzen</translation> - </message> - <message> - <location/> - <source>Set plain style</source> - <translation>Einfachen Stil setzen</translation> - </message> <message> <location/> <source>Use FakeVim</source> @@ -6264,6 +6250,21 @@ Grund: %3</translation> <source>Keyword characters:</source> <translation></translation> </message> + <message> + <location/> + <source>Copy Text Editor Settings</source> + <translation>Texteditor-Einstellungen übernehmen</translation> + </message> + <message> + <location/> + <source>Set Qt Style</source> + <translation>Qt-Stil setzen</translation> + </message> + <message> + <location/> + <source>Set Plain Style</source> + <translation>Einfachen Stil setzen</translation> + </message> </context> <context> <name>FilterNameDialogClass</name> @@ -6498,11 +6499,6 @@ Add, modify, and remove document filters, which determine the documentation set <source>Gdb startup script:</source> <translation>Gdb-Startskript:</translation> </message> - <message> - <location/> - <source>Behaviour of breakpoint setting in plugins</source> - <translation>Setzen von Haltepunkten in Plugins</translation> - </message> <message> <location/> <source>This is the slowest but safest option.</source> @@ -6581,6 +6577,11 @@ on slow machines. In this case, the value should be increased.</source> <source>Show a message box when receiving a signal</source> <translation>Empfang eines Signals durch Dialogbox anzeigen</translation> </message> + <message> + <location/> + <source>Behavior of Breakpoint Setting in Plugins</source> + <translation>Setzen von Haltepunkten in Plugins</translation> + </message> </context> <context> <name>GeneralSettingsPage</name> @@ -6621,73 +6622,73 @@ on slow machines. In this case, the value should be increased.</source> </message> <message> <location/> - <source>Show side-by-side if possible</source> - <translation>Möglichst nebeneinander zeigen</translation> + <source>On help start:</source> + <translation>Zu Beginn:</translation> </message> <message> <location/> - <source>Always show side-by-side</source> - <translation>Immer nebeneinander zeigen</translation> + <source>Use &Current Page</source> + <translation>&Aktuelle Seite nehmen</translation> </message> <message> <location/> - <source>Always start full help</source> - <translation>Stets Vollbild</translation> + <source>Use &Blank Page</source> + <translation>&Leere Seite</translation> </message> <message> <location/> - <source>On help start:</source> - <translation>Zu Beginn:</translation> + <source>Restore to Default</source> + <translation>&Vorgabe wiederherstellen</translation> </message> <message> <location/> - <source>Show my home page</source> - <translation>Startseite zeigen</translation> + <source>Help Bookmarks</source> + <translation>Hilfe-Lesezeichen</translation> </message> <message> <location/> - <source>Show a blank page</source> - <translation>Leere Seite zeigen</translation> + <source>Import...</source> + <translation>Importieren...</translation> </message> <message> <location/> - <source>Show my tabs from last session</source> - <translation>Reiter aus letzter Sitzung zeigen</translation> + <source>Export...</source> + <translation>Exportieren...</translation> </message> <message> <location/> - <source>Use &Current Page</source> - <translation>&Aktuelle Seite nehmen</translation> + <source>Home page:</source> + <translation>Startseite:</translation> </message> <message> <location/> - <source>Use &Blank Page</source> - <translation>&Leere Seite</translation> + <source>Show Side-by-Side if Possible</source> + <translation>Möglichst nebeneinander zeigen</translation> </message> <message> <location/> - <source>Restore to Default</source> - <translation>&Vorgabe wiederherstellen</translation> + <source>Always Show Side-by-Side</source> + <translation>Immer nebeneinander zeigen</translation> </message> <message> <location/> - <source>Help Bookmarks</source> - <translation>Hilfe-Lesezeichen</translation> + <source>Always Start Full Help</source> + <translation>Stets Vollbild</translation> </message> <message> <location/> - <source>Import...</source> - <translation>Importieren...</translation> + <source>Show My Home Page</source> + <translation>Startseite zeigen</translation> </message> <message> <location/> - <source>Export...</source> - <translation>Exportieren...</translation> + <source>Show a Blank Page</source> + <translation>Leere Seite zeigen</translation> </message> <message> <location/> - <source>Home page:</source> - <translation>Startseite:</translation> + <source>Show My Tabs from Last Session</source> + <translation>Reiter aus letzter Sitzung zeigen</translation> </message> </context> <context> @@ -6777,8 +6778,8 @@ on slow machines. In this case, the value should be increased.</source> </message> <message> <location line="+2"/> - <source>Creates a generic project, supporting any build system.</source> - <translation>Erstellt ein generisches Projekt, was ein beliebiges Build-System unterstützt.</translation> + <source>Imports existing projects that do not use qmake or CMake. This allows you to use Qt Creator as a code editor.</source> + <translation>Importiert bereits existierende Projekte, die weder qmake noch CMake verwenden. Dadurch kann Qt Creator als Code-Editor benutzt werden.</translation> </message> </context> <context> @@ -6901,7 +6902,7 @@ on slow machines. In this case, the value should be increased.</source> </message> <message> <location/> - <source>Remote branches</source> + <source>Remote Branches</source> <translation>Nichtlokale Branches</translation> </message> </context> @@ -6909,12 +6910,12 @@ on slow machines. In this case, the value should be increased.</source> <name>Git::Internal::ChangeSelectionDialog</name> <message> <location filename="../../../src/plugins/git/changeselectiondialog.cpp" line="+43"/> - <source>Select a Git commit</source> + <source>Select a Git Commit</source> <translation>Wählen Sie einen Commit aus</translation> </message> <message> <location line="+22"/> - <source>Select Git repository</source> + <source>Select Git Repository</source> <translation>Wählen ein Git-Repository aus</translation> </message> <message> @@ -6930,10 +6931,14 @@ on slow machines. In this case, the value should be increased.</source> </context> <context> <name>Git::Internal::CloneWizard</name> + <message> + <source>Clones a project from a Git repository and tries to load the contained project.</source> + <translation type="obsolete">Holt ein Projekt aus einem Git-Repository und versucht, es zu laden.</translation> + </message> <message> <location filename="../../../src/plugins/git/clonewizard.cpp" line="+55"/> - <source>Clones a project from a git repository.</source> - <translation>Erstellt einen Clone eines Projektes aus einem Git-Repository.</translation> + <source>Clones a Git repository and tries to load the contained project.</source> + <translation>Erstellt einen Clone eines Git-Repositories und versucht, das darin enthaltene Projekt zu laden.</translation> </message> <message> <location line="+5"/> @@ -7076,13 +7081,13 @@ on slow machines. In this case, the value should be increased.</source> </message> <message> <location line="+45"/> - <source>Stash description</source> - <translation>Beschreibung</translation> + <source>Description:</source> + <translation>Beschreibung:</translation> </message> <message> <location line="+0"/> - <source>Description:</source> - <translation>Beschreibung:</translation> + <source>Stash Description</source> + <translation>Beschreibung</translation> </message> <message> <location line="+94"/> @@ -7331,7 +7336,12 @@ on slow machines. In this case, the value should be increased.</source> <translation>Diff für Projekt "%1"</translation> </message> <message> - <location line="+98"/> + <location line="+64"/> + <source>Stash Snapshot...</source> + <translation>Snapshot als Stash speichern...</translation> + </message> + <message> + <location line="+34"/> <source>Stashes...</source> <translation>Stashes...</translation> </message> @@ -7422,12 +7432,7 @@ on slow machines. In this case, the value should be increased.</source> <translation>Repository bereinigen...</translation> </message> <message> - <location line="+7"/> - <source>Stash snapshot...</source> - <translation>Snapshot als Stash speichern...</translation> - </message> - <message> - <location line="+7"/> + <location line="+14"/> <source>Saves the current state of your work and resets the repository.</source> <translation>Speichert den gegenwärtigen Stand der Arbeit und setzt das Repository zurück.</translation> </message> @@ -7653,19 +7658,9 @@ on slow machines. In this case, the value should be increased.</source> </message> <message> <location filename="../../../src/plugins/git/settingspage.ui"/> - <source>Environment variables</source> - <translation>Umgebungsvariablen</translation> - </message> - <message> - <location/> <source>PATH:</source> <translation>Pfad-Variable:</translation> </message> - <message> - <location/> - <source>From system</source> - <translation>Vom System</translation> - </message> <message> <location/> <source><b>Note:</b></source> @@ -7726,6 +7721,16 @@ on slow machines. In this case, the value should be increased.</source> <source>Pull with rebase</source> <translation>pull mit rebase</translation> </message> + <message> + <location/> + <source>Environment Variables</source> + <translation>Umgebungsvariablen</translation> + </message> + <message> + <location/> + <source>From System</source> + <translation>Vom System</translation> + </message> </context> <context> <name>GitCommand</name> @@ -7768,10 +7773,14 @@ on slow machines. In this case, the value should be increased.</source> </context> <context> <name>Gitorious::Internal::GitoriousCloneWizard</name> + <message> + <source>Clones a project from a Gitorious repository and tries to load the contained project.</source> + <translation type="obsolete">Holt ein Projekt aus einem Gitorious-Repository und versucht, das darin enthaltene Projekt zu laden.</translation> + </message> <message> <location filename="../../../src/plugins/git/gitorious/gitoriousclonewizard.cpp" line="+83"/> - <source>Clones a project from a Gitorious repository.</source> - <translation>Erstellt einen Clone eines Projektes aus einem Gitorious-Repository.</translation> + <source>Clones a Gitorious repository and tries to load the contained project.</source> + <translation>Erstellt einen Clone eines Gitorious-Repositories und versucht, das darin enthaltene Projekt zu laden.</translation> </message> <message> <location line="+5"/> @@ -8003,7 +8012,7 @@ on slow machines. In this case, the value should be increased.</source> <name>Help::Internal::GeneralSettingsPage</name> <message> <location filename="../../../src/plugins/help/generalsettingspage.cpp" line="+71"/> - <source>General settings</source> + <source>General Settings</source> <translation>Allgemeine Einstellungen</translation> </message> <message> @@ -8266,12 +8275,12 @@ on slow machines. In this case, the value should be increased.</source> <context> <name>IndexWindow</name> <message> - <location filename="../../../src/shared/help/indexwindow.cpp" line="+55"/> + <location filename="../../../src/shared/help/indexwindow.cpp" line="+67"/> <source>&Look for:</source> <translation>&Suche nach:</translation> </message> <message> - <location line="+72"/> + <location line="+77"/> <source>Open Link</source> <translation>Adresse öffnen</translation> </message> @@ -8895,7 +8904,7 @@ on slow machines. In this case, the value should be increased.</source> <context> <name>OpenWith::Editors</name> <message> - <location filename="../../../src/plugins/coreplugin/coreconstants.h" line="+99"/> + <location filename="../../../src/plugins/coreplugin/coreconstants.h" line="+105"/> <source>Plain Text Editor</source> <translation>Texteditor</translation> </message> @@ -8965,20 +8974,20 @@ on slow machines. In this case, the value should be increased.</source> <source>Form</source> <translation>Formular</translation> </message> + <message> + <location/> + <source>Server prefix:</source> + <translation>Server-Präfix:</translation> + </message> <message> <location/> <source><html><head/><body> -<p><a href="http://pastebin.com">pastebin.com</a> allows to send posts to custom subdomains (eg. qtcreator.pastebin.com). Fill in the desired prefix.</p> +<p><a href="http://pastebin.com">pastebin.com</a> allows to send posts to custom subdomains (eg. creator.pastebin.com). Fill in the desired prefix.</p> <p>Note that the plugin will use this for posting as well as fetching.</p></body></html></source> <translation><html><head/><body> -<p><a href="http://pastebin.com">pastebin.com</a> erlaubt das Senden an benutzerdefinierte Subdomänen (zum Beispiel qtcreator.pastebin.com). Geben Sie den gewünschten Präfix an.</p> +<p><a href="http://pastebin.com">pastebin.com</a> erlaubt das Senden an benutzerdefinierte Subdomänen (zum Beispiel creator.pastebin.com). Geben Sie den gewünschten Präfix an.</p> <p>Hinweis: Es wird sowohl zum Senden als auch zum Abholen verwendet.</p></body></html></translation> </message> - <message> - <location/> - <source>Server prefix:</source> - <translation>Server-Präfix:</translation> - </message> </context> <context> <name>Perforce::Internal::ChangeNumberDialog</name> @@ -9450,11 +9459,6 @@ on slow machines. In this case, the value should be increased.</source> </context> <context> <name>Perforce::Internal::SettingsPage</name> - <message> - <location filename="../../../src/plugins/perforce/settingspage.ui"/> - <source>Environment variables</source> - <translation>Umgebungsvariablen</translation> - </message> <message> <location filename="../../../src/plugins/perforce/settingspage.cpp" line="+137"/> <source>Perforce</source> @@ -9515,6 +9519,11 @@ on slow machines. In this case, the value should be increased.</source> <source>P4 port:</source> <translation>P4 Port-Nummer:</translation> </message> + <message> + <location/> + <source>Environment Variables</source> + <translation>Umgebungsvariablen</translation> + </message> </context> <context> <name>Perforce::Internal::SettingsPageWidget</name> @@ -10004,17 +10013,17 @@ Fehler: %2</translation> <translation>Erstellungsschritte</translation> </message> <message> - <location line="-135"/> - <source>Edit Build Configuration:</source> - <translation>Build-Konfiguration bearbeiten:</translation> - </message> - <message> - <location line="-13"/> - <source>No Build Settings available</source> + <location line="-148"/> + <source>No build settings available</source> <translation>Es sind keine Build-Einstellungen verfügbar</translation> </message> <message> - <location line="+19"/> + <location line="+13"/> + <source>Edit build configuration:</source> + <translation>Build-Konfiguration bearbeiten:</translation> + </message> + <message> + <location line="+6"/> <source>Add</source> <translation>Hinzufügen</translation> </message> @@ -10073,13 +10082,13 @@ Fehler: %2</translation> </message> <message> <location line="+7"/> - <source>Add build step</source> - <translation>Build-Schritt hinzufügen</translation> + <source>Add Clean Step</source> + <translation>Schritt zur Bereinigung hinzufügen</translation> </message> <message> <location line="+0"/> - <source>Add clean step</source> - <translation>Schritt zur Bereinigung hinzufügen</translation> + <source>Add Build Step</source> + <translation>Build-Schritt hinzufügen</translation> </message> <message> <location line="-218"/> @@ -10340,18 +10349,18 @@ Fehler: %2</translation> </message> <message> <location/> - <source>Working Directory:</source> - <translation>Arbeitsverzeichnis:</translation> + <source>Enable custom process step</source> + <translation>Benutzerdefinierten Verarbeitungsschritt aktivieren</translation> </message> <message> <location/> - <source>Command Arguments:</source> - <translation>Kommandozeilenargumente:</translation> + <source>Working directory:</source> + <translation>Arbeitsverzeichnis:</translation> </message> <message> <location/> - <source>Enable Custom Process Step</source> - <translation>Benutzerdefinierten Verarbeitungsschritt aktivieren</translation> + <source>Command arguments:</source> + <translation>Kommandozeilenargumente:</translation> </message> </context> <context> @@ -10523,10 +10532,6 @@ No project selected</extracomment> <source>%1 (current session)</source> <translation>%1 (aktuelle Sitzung)</translation> </message> - <message> - <source>Open Project</source> - <translation type="obsolete">Projekt öffnen</translation> - </message> <message> <location line="+47"/> <source>New Project</source> @@ -11150,28 +11155,28 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <name>QMakeStep</name> <message> <location filename="../../../src/plugins/qt4projectmanager/qmakestep.ui"/> - <source>debug</source> - <translation>debug</translation> + <source>Additional arguments:</source> + <translation>Zusätzliche Argumente:</translation> </message> <message> <location/> - <source>release</source> - <translation>release</translation> + <source>Effective qmake call:</source> + <translation>Resultierender qmake-Aufruf:</translation> </message> <message> <location/> - <source>Additional arguments:</source> - <translation>Zusätzliche Argumente:</translation> + <source>qmake build configuration:</source> + <translation>qmake Build-Konfiguration:</translation> </message> <message> <location/> - <source>Effective qmake call:</source> - <translation>Resultierender qmake-Aufruf:</translation> + <source>Debug</source> + <translation>Debug</translation> </message> <message> <location/> - <source>qmake Build Configuration:</source> - <translation>qmake Build-Konfiguration:'</translation> + <source>Release</source> + <translation>Release</translation> </message> </context> <context> @@ -11464,8 +11469,12 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> </message> <message> <location line="+1"/> - <source>Creates a Qt console application.</source> - <translation>Erstellt eine Qt Konsolenanwendung.</translation> + <source>Creates a project containing a single main.cpp file with a stub implementation. + +Preselects a desktop Qt for building the application if available.</source> + <translation>Erstellt ein Projekt welches aus einer main.cpp-Datei mit einem Implementationsrumpf besteht. + +Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfügbar ist.</translation> </message> </context> <context> @@ -11605,8 +11614,8 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> </message> <message> <location line="+1"/> - <source>Creates an empty Qt project.</source> - <translation>Erstellt ein leeres Qt-Projekt.</translation> + <source>Creates a qmake-based project without any files. This allows you to create an application without any default classes.</source> + <translation>Erstellt ein auf qmake basierendes Qt-Projekt ohne Dateien und vorgegebene Klassen.</translation> </message> </context> <context> @@ -11858,11 +11867,15 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> </message> <message> <location line="+1"/> - <source>Creates a Qt Gui Application with one form.</source> - <translation>Erstellt eine Qt-Gui-Anwendung mit einem Formular.</translation> + <source>Creates a Qt application for the desktop. Includes a Qt Designer-based main window. + +Preselects a desktop Qt for building the application if available.</source> + <translation>Erstellt eine Qt-Anwendung für den Desktop mit einem Qt Designer-basierten Hauptfenster. + +Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfügbar ist.</translation> </message> <message> - <location line="+160"/> + <location line="+162"/> <source>The template file '%1' could not be opened for reading: %2</source> <translation>Die Vorgabendatei '%1' konnte nicht zum Lesen geöffnet werden: %2</translation> </message> @@ -11889,8 +11902,8 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> </message> <message> <location line="+1"/> - <source>Creates a Qt based C++ Library.</source> - <translation>Erstellt eine Qt-basierte C++-Bibliothek.</translation> + <source>Creates a C++ library based on qmake. This can be used to create:<ul><li>a shared C++ library for use with <tt>QPluginLoader</tt> and runtime (Plugins)</li><li>a shared or static C++ library for use with another project at linktime</li></ul>.</source> + <translation type="unfinished">Erstellt qmake-basierte C++-Bibliotheken:<ul><li>Dynamisch linkbare C++-Bibliothek zur Verwendung mit <tt>QPluginLoader</tt> zur Laufzeit (Plugin)</li><li>Statisch oder dynamisch linkbare C++-Bibliothek zur Verwendung in einem anderen Projekt zur Linkzeit</li></ul>.</translation> </message> </context> <context> @@ -12053,31 +12066,6 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <name>Qt4ProjectManager::Internal::Qt4ProjectConfigWidget</name> <message> <location filename="../../../src/plugins/qt4projectmanager/qt4projectconfigwidget.ui"/> - <source>Configuration Name:</source> - <translation>Name der Konfiguration:</translation> - </message> - <message> - <location/> - <source>Qt Version:</source> - <translation>Qt-Version:</translation> - </message> - <message> - <location/> - <source>This Qt-Version is invalid.</source> - <translation>Diese Qt-Version ist ungültig.</translation> - </message> - <message> - <location/> - <source>Shadow Build:</source> - <translation>Shadow-Build:</translation> - </message> - <message> - <location/> - <source>Build Directory:</source> - <translation>Build-Verzeichnis:</translation> - </message> - <message> - <location/> <source><a href="import">Import existing build</a></source> <translation><a href="import">Existierenden Build importieren</a></translation> </message> @@ -12124,13 +12112,38 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> </message> <message> <location/> - <source>Tool Chain:</source> + <source>problemLabel</source> + <translation>problemLabel</translation> + </message> + <message> + <location/> + <source>Configuration name:</source> + <translation>Name der Konfiguration:</translation> + </message> + <message> + <location/> + <source>Qt version:</source> + <translation>Qt-Version:</translation> + </message> + <message> + <location/> + <source>This Qt version is invalid.</source> + <translation>Diese Qt-Version ist ungültig.</translation> + </message> + <message> + <location/> + <source>Tool chain:</source> <translation>Toolchain:</translation> </message> <message> <location/> - <source>problemLabel</source> - <translation>problemLabel</translation> + <source>Shadow build:</source> + <translation>Shadow-Build:</translation> + </message> + <message> + <location/> + <source>Build directory:</source> + <translation>Build-Verzeichnis:</translation> </message> </context> <context> @@ -12188,8 +12201,18 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <translation>Argumente:</translation> </message> <message> - <location line="+20"/> - <source>Run in Terminal</source> + <location line="+8"/> + <source>Select Working Directory</source> + <translation>Wählen Sie das Arbeitsverzeichnis aus</translation> + </message> + <message> + <location line="+10"/> + <source>Working directory:</source> + <translation>Arbeitsverzeichnis:</translation> + </message> + <message> + <location line="+2"/> + <source>Run in terminal</source> <translation>In Terminal ausführen</translation> </message> <message> @@ -12228,22 +12251,12 @@ unter Versionsverwaltung (%2) gestellt werden?</translation> <translation>Ausführbare Datei:</translation> </message> <message> - <location line="+10"/> - <source>Select the working directory</source> - <translation>Wählen Sie das Arbeitsverzeichnis aus</translation> - </message> - <message> - <location line="+3"/> + <location line="+13"/> <source>Reset to default</source> <translation>Zurücksetzen</translation> </message> <message> - <location line="+7"/> - <source>Working Directory:</source> - <translation>Arbeitsverzeichnis:</translation> - </message> - <message> - <location line="+7"/> + <location line="+14"/> <source>Use debug version of frameworks (DYLD_IMAGE_SUFFIX=_debug)</source> <translation>Debug-Version von Frameworks verwenden (DYLD_IMAGE_SUFFIX=_debug)</translation> </message> @@ -12496,12 +12509,12 @@ p, li { white-space: pre-wrap; } </message> <message> <location line="+1"/> - <source>Install File:</source> + <source>Installation file:</source> <translation>Installationspaket:</translation> </message> <message> <location line="+19"/> - <source>Device on Serial Port:</source> + <source>Device on serial port:</source> <translation>Gerät auf serieller Schnittstelle:</translation> </message> <message> @@ -12630,12 +12643,7 @@ Installiere Anwendung auf '%2'...</translation> <translation>Es konnte keine Verbindung zu App TRK über den Port '%1' hergestellt werden. Bitte versuchen Sie, App TRK neu zu starten.</translation> </message> <message> - <location line="+5"/> - <source>Copying install file...</source> - <translation>Kopiere Installationspaket...</translation> - </message> - <message> - <location line="+100"/> + <location line="+105"/> <source>The device '%1' has been disconnected</source> <translation>Das Gerät '%1' wurde entfernt</translation> </message> @@ -12645,7 +12653,12 @@ Installiere Anwendung auf '%2'...</translation> <translation>Installiere Anwendung...</translation> </message> <message> - <location line="+47"/> + <location line="-11"/> + <source>Copying installation file...</source> + <translation>Kopiere Installationspaket...</translation> + </message> + <message> + <location line="+58"/> <source>Waiting for App TRK</source> <translation>Warte auf App TRK</translation> </message> @@ -13010,8 +13023,8 @@ Installiere Anwendung auf '%2'...</translation> <message> <location line="+45"/> <location line="+11"/> - <source>Choose a directory to add</source> - <translation>Bitte wählen Sie das hinzuzufügende Verzeichnis</translation> + <source>Select Directory</source> + <translation>Arbeitsordner</translation> </message> <message> <location line="+30"/> @@ -13039,11 +13052,6 @@ Installiere Anwendung auf '%2'...</translation> <source>Name:</source> <translation>Name:</translation> </message> - <message> - <location/> - <source>File Types:</source> - <translation>Dateitypen:</translation> - </message> <message> <location/> <source>Specify file name filters, separated by comma. Filters may contain wildcards.</source> @@ -13086,6 +13094,11 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <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> + <message> + <location/> + <source>File types:</source> + <translation>Dateitypen:</translation> + </message> </context> <context> <name>Locator::Internal::FileSystemFilter</name> @@ -13184,7 +13197,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich <name>Locator::Internal::SettingsPage</name> <message> <location filename="../../../src/plugins/locator/settingspage.cpp" line="+168"/> - <source>%1 (Prefix: %2)</source> + <source>%1 (prefix: %2)</source> <translation>%1 (Präfix: %2)</translation> </message> </context> @@ -13328,8 +13341,8 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich <name>ResourceEditor::Internal::ResourceEditorPlugin</name> <message> <location filename="../../../src/plugins/resourceeditor/resourceeditorplugin.cpp" line="+78"/> - <source>Creates a Qt Resource file (.qrc).</source> - <translation>Erzeugt eine neue Qt-Ressource-Datei (.qrc).</translation> + <source>Creates a Qt Resource file (.qrc) that you can add to a Qt C++ project.</source> + <translation>Erstellt eine C++-Quelldatei für ein C++-Projekt.</translation> </message> <message> <location line="+1"/> @@ -13386,7 +13399,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich <translation>Präfix hinzufügen</translation> </message> <message> - <location line="+158"/> + <location line="+159"/> <source>Copy</source> <translation>Kopieren</translation> </message> @@ -13439,7 +13452,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich <context> <name>SharedTools::ResourceView</name> <message> - <location filename="../../../src/shared/qrceditor/resourceview.cpp" line="+362"/> + <location filename="../../../src/shared/qrceditor/resourceview.cpp" line="+355"/> <source>Add Files...</source> <translation>Dateien hinzufügen...</translation> </message> @@ -13601,10 +13614,14 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich </context> <context> <name>Subversion::Internal::CheckoutWizard</name> + <message> + <source>Checks out a project from a Subversion repository and tries to load the contained project.</source> + <translation type="obsolete">Holt ein Projekt aus einem Subversion-Repository und versucht, das darin enthaltene Projekt zu laden.</translation> + </message> <message> <location filename="../../../src/plugins/subversion/checkoutwizard.cpp" line="+56"/> - <source>Checks out a project from a Subversion repository.</source> - <translation>Holt ein Projekt aus einem Subversion-Repository.</translation> + <source>Checks out a Subversion repository and tries to load the contained project.</source> + <translation>Erstellt einen Checkout eines Subversion-Repositories und versucht, das darin enthaltene Projekt zu laden.</translation> </message> <message> <location line="+5"/> @@ -13637,11 +13654,6 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich <source>Authentication</source> <translation>Authentifizierung</translation> </message> - <message> - <location/> - <source>User name:</source> - <translation>Nutzername:</translation> - </message> <message> <location/> <source>Password:</source> @@ -13692,6 +13704,11 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich <source>Subversion command:</source> <translation>Subversion-Kommando:</translation> </message> + <message> + <location/> + <source>Username:</source> + <translation>Nutzername:</translation> + </message> </context> <context> <name>Subversion::Internal::SettingsPageWidget</name> @@ -14030,7 +14047,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich </message> <message> <location line="+27"/> - <source>Use Regular E&xpressions</source> + <source>Use regular e&xpressions</source> <translation>Benutze reguläre Ausdrücke</translation> </message> </context> @@ -14050,7 +14067,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich <context> <name>TextEditor::BaseTextEditor</name> <message> - <location filename="../../../src/plugins/texteditor/basetexteditor.cpp" line="+277"/> + <location filename="../../../src/plugins/texteditor/basetexteditor.cpp" line="+275"/> <source>Print Document</source> <translation>Dokument drucken</translation> </message> @@ -14068,7 +14085,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich <context> <name>TextEditor::BaseTextEditorEditable</name> <message> - <location line="+4802"/> + <location line="+4828"/> <source>Line: %1, Col: %2</source> <translation>Zeile: %1, Spalte: %2</translation> </message> @@ -14170,11 +14187,6 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich <source>Always</source> <translation>Immer</translation> </message> - <message> - <location/> - <source>In leading white space</source> - <translation>Nur in Leerzeichen am Zeilenanfang</translation> - </message> <message> <location/> <source>Automatically determine based on the nearest indented line (previous line preferred over next line)</source> @@ -14220,6 +14232,11 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich <source>GNU Style</source> <translation>GNU-Stil</translation> </message> + <message> + <location/> + <source>In Leading White Space</source> + <translation>Nur in Leerzeichen am Zeilenanfang</translation> + </message> </context> <context> <name>TextEditor::DisplaySettingsPage</name> @@ -14308,7 +14325,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich </message> <message> <location line="+1"/> - <source>Color Scheme name:</source> + <source>Color scheme name:</source> <translation>Name des Farbschemas:</translation> </message> <message> @@ -14869,7 +14886,7 @@ Die folgenden Encodings scheinen der Datei zu entsprechen:</translation> <context> <name>TextEditor::TextEditorSettings</name> <message> - <location filename="../../../src/plugins/texteditor/texteditorsettings.cpp" line="+65"/> + <location filename="../../../src/plugins/texteditor/texteditorsettings.cpp" line="+103"/> <source>Text</source> <translation>Text</translation> </message> @@ -15379,13 +15396,13 @@ Die folgenden Encodings scheinen der Datei zu entsprechen:</translation> </message> <message> <location line="+123"/> - <source>Choose a directory</source> - <translation>Wählen Sie ein Verzeichnis</translation> + <source>Choose Directory</source> + <translation>Ordner wählen</translation> </message> <message> <location line="+6"/> - <source>Choose a file</source> - <translation>Wählen Sie eine Datei</translation> + <source>Choose File</source> + <translation>Datei wählen</translation> </message> <message> <location line="+33"/> @@ -15427,7 +15444,7 @@ Die folgenden Encodings scheinen der Datei zu entsprechen:</translation> </message> <message> <location line="+1"/> - <source>Delete line</source> + <source>Delete Line</source> <translation>Zeile löschen</translation> </message> <message> @@ -15853,11 +15870,6 @@ Hinweis: Unter Umständen wird die Datei gelöscht.</translation> <source>Protocol:</source> <translation>Protokoll:</translation> </message> - <message> - <location/> - <source>Parts to send to server</source> - <translation>Zu versendende Ausschnitte</translation> - </message> <message> <location/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -15871,6 +15883,11 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">&lt;Kommentar&gt;</span></p></body></html></translation> </message> + <message> + <location/> + <source>Parts to Send to Server</source> + <translation>Zu versendende Ausschnitte</translation> + </message> </context> <context> <name>Welcome::Internal::CommunityWelcomePage</name> @@ -16472,11 +16489,6 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <source>Email to use by default on commit.</source> <translation>Email-Addresse für Abgabe.</translation> </message> - <message> - <location/> - <source>Default Email:</source> - <translation>Vorgabe-Email:</translation> - </message> <message> <location/> <source>Miscellaneous</source> @@ -16512,6 +16524,11 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <source>Log count:</source> <translation>Log-Anzeige beschränken auf:</translation> </message> + <message> + <location/> + <source>Default email:</source> + <translation>Vorgabe-Email:</translation> + </message> </context> <context> <name>Mercurial::Internal::RevertDialog</name> @@ -16591,7 +16608,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <context> <name>QmlDesigner::ItemLibrary</name> <message> - <location filename="../../../src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp" line="+127"/> + <location filename="../../../src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp" line="+128"/> <source>Library</source> <comment>Title of library view</comment> <translation>Bibliothek</translation> @@ -17531,7 +17548,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <context> <name>Core</name> <message> - <location filename="../../../src/plugins/coreplugin/coreconstants.h" line="+130"/> + <location filename="../../../src/plugins/coreplugin/coreconstants.h" line="+131"/> <source>Qt</source> <translation>Qt</translation> </message> @@ -17875,8 +17892,8 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <name>Mercurial::Internal::CloneWizard</name> <message> <location filename="../../../src/plugins/mercurial/clonewizard.cpp" line="+56"/> - <source>Clone a Mercurial repository</source> - <translation>Clone eines Mercurial-Repository erstellen</translation> + <source>Clones a Mercurial repository and tries to load the contained project.</source> + <translation>Erstellt einen Clone eines Mercurial-Repositories und versucht, das darin enthaltene Projekt zu laden.</translation> </message> <message> <location line="+5"/> @@ -18642,7 +18659,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <context> <name>QmlDesigner::NavigatorTreeModel</name> <message> - <location filename="../../../src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp" line="+277"/> + <location filename="../../../src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp" line="+279"/> <source>Invalid Id</source> <translation>Ungültige Id</translation> </message> @@ -19003,9 +19020,9 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <context> <name>QmlJSEditor::Internal::QmlJSEditorPlugin</name> <message> - <location filename="../../../src/plugins/qmljseditor/qmljseditorplugin.cpp" line="+112"/> + <location filename="../../../src/plugins/qmljseditor/qmljseditorplugin.cpp" line="+111"/> <source>Creates a Qt QML file.</source> - <translation>Erzeugt eine Qt-QML-Datei.</translation> + <translation>Erstellt eine Qt-QML-Datei.</translation> </message> <message> <location line="+1"/> @@ -19118,7 +19135,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio </message> <message> <location line="+5"/> - <source>Device Configuration:</source> + <source>Device configuration:</source> <translation>Geräte-Konfiguration:</translation> </message> <message> @@ -19218,12 +19235,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <context> <name>Qt4ProjectManager::Internal::MaemoSettingsWidget</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.cpp" line="+341"/> - <source>Choose public key file</source> - <translation>Datei mit öffentlichem Schlüssel</translation> - </message> - <message> - <location line="+1"/> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.cpp" line="+342"/> <source>Public Key Files(*.pub);;All Files (*)</source> <translation>Öffentliche Schlüssel (*.pub);;Alle Dateien (*)</translation> </message> @@ -19233,12 +19245,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <translation>Die öffentliche Schlüsseldatei '%1' konnte nicht gelesen werden.</translation> </message> <message> - <location line="+10"/> - <source>Stop deploying</source> - <translation>Deployement beenden</translation> - </message> - <message> - <location line="+12"/> + <location line="+22"/> <source>Key deployment failed: %1</source> <translation>Das Versenden des Schlüssels schlug fehl: %1</translation> </message> @@ -19260,7 +19267,17 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <translation>New Device Configuration %1</translation> </message> <message> - <location line="+226"/> + <location line="+189"/> + <source>Choose Public Key File</source> + <translation>Datei mit öffentlichem Schlüssel</translation> + </message> + <message> + <location line="+22"/> + <source>Stop Deploying</source> + <translation>Deployement beenden</translation> + </message> + <message> + <location line="+15"/> <source>Key was successfully deployed.</source> <translation>Der Schlüssel wurde erfolgreich versandt.</translation> </message> @@ -19319,7 +19336,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio <context> <name>QtVersion</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="+928"/> + <location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="+918"/> <source>No qmake path set</source> <translation>Es ist keine qmake-Pfad gesetzt</translation> </message> @@ -19353,8 +19370,8 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio </message> <message> <location line="+1"/> - <source>Creates a Qt Unit Test.</source> - <translation>Erstellt einen Qt-Unit-Test.</translation> + <source>Creates a QTestLib-based unit test for a feature or a class. Unit tests allow you to verify that the code is fit for use and that there are no regressions.</source> + <translation>Erstellt einen auf QTestLib basierenden Unit-Test für eine Funktion oder eine Klasse. Unit-Tests dienen zur Überprüfung der Verwendbarkeit des Codes und der Feststellung von Regressionen.</translation> </message> </context> <context> @@ -19400,7 +19417,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio </message> <message> <location line="+20"/> - <source>Choose repository directory</source> + <source>Choose Repository Directory</source> <translation>Ordner für Repository wählen</translation> </message> <message> @@ -19879,11 +19896,15 @@ Please check your project settings.</source> </message> <message> <location line="+2"/> - <source>Creates a Qt QML application.</source> - <translation>Erstellt eine Qt-QML-Anwendung.</translation> + <source>Creates a Qt QML application project with a single QML file containing the main view. + +QML application projects are executed through the QML runtime and do not need to be built.</source> + <translation>Erstellt eine Qt-QML-Anwendung aus einer einzelnen QML-Datei, die die Hauptansicht enthält. + +QML-Anwendungen werden durch die QML-Laufzeitumgebung direkt ausgeführt und benötigen keine Compilierung.</translation> </message> <message> - <location line="+66"/> + <location line="+67"/> <source>File generated by QtCreator</source> <comment>qmlproject Template</comment> <extracomment>Comment added to generated .qmlproject file</extracomment> @@ -20178,16 +20199,6 @@ Please check your project settings.</source> <source>Device type:</source> <translation>Gerätetyp:</translation> </message> - <message> - <location/> - <source>Remote Device</source> - <translation>Gerät</translation> - </message> - <message> - <location/> - <source>Local Simulator</source> - <translation>Lokaler Simulator</translation> - </message> <message> <location/> <source>Authentication type:</source> @@ -20203,21 +20214,6 @@ Please check your project settings.</source> <source>Key</source> <translation>Schlüssel</translation> </message> - <message> - <location/> - <source>Host Name:</source> - <translation>Hostname:</translation> - </message> - <message> - <location/> - <source>Connection Timeout:</source> - <translation>Zeitlimit der Verbindung:</translation> - </message> - <message> - <location/> - <source>User Name:</source> - <translation>Nutzername:</translation> - </message> <message> <location/> <source>Password:</source> @@ -20288,6 +20284,31 @@ Please check your project settings.</source> <source>Deploy Public Key ...</source> <translation>Öffentlichen Schlüssel senden...</translation> </message> + <message> + <location/> + <source>Remote device</source> + <translation>Gerät</translation> + </message> + <message> + <location/> + <source>Maemo emulator</source> + <translation>Maemo-Emulator</translation> + </message> + <message> + <location/> + <source>Host name:</source> + <translation>Hostname:</translation> + </message> + <message> + <location/> + <source>Connection timeout:</source> + <translation>Zeitlimit der Verbindung:</translation> + </message> + <message> + <location/> + <source>Username:</source> + <translation>Nutzername:</translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::S60CreatePackageStepWidget</name> @@ -20319,11 +20340,6 @@ Please check your project settings.</source> </context> <context> <name>VCSBase::CleanDialog</name> - <message> - <location filename="../../../src/plugins/vcsbase/cleandialog.ui"/> - <source>Clean repository</source> - <translation>Repository bereinigen</translation> - </message> <message> <location filename="../../../src/plugins/vcsbase/cleandialog.cpp" line="+68"/> <source>The directory %1 could not be deleted.</source> @@ -20377,6 +20393,11 @@ Please check your project settings.</source> <source>Cleaning %1</source> <translation>Bereinige %1</translation> </message> + <message> + <location filename="../../../src/plugins/vcsbase/cleandialog.ui"/> + <source>Clean Repository</source> + <translation>Repository bereinigen</translation> + </message> </context> <context> <name>ExtensionSystem::PluginDetailsView</name> @@ -20553,7 +20574,7 @@ Please check your project settings.</source> <context> <name>QmlDesigner::Internal::SubComponentManagerPrivate</name> <message> - <location filename="../../../src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp" line="+307"/> + <location filename="../../../src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp" line="+309"/> <source>QML Components</source> <translation>QML-Komponenten</translation> </message> @@ -20838,17 +20859,17 @@ Haben Sie Qemu gestartet?</translation> <name>Qt4ProjectManager::Internal::S60CreatePackageStep</name> <message> <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp" line="+74"/> - <source>Create sis Package</source> - <comment>Create sis package build step name</comment> - <translation>sis-Paketdatei erzeugen</translation> + <source>Create SIS Package</source> + <comment>Create SIS package build step name</comment> + <translation>SIS-Paketdatei erzeugen</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::S60CreatePackageStepFactory</name> <message> <location line="+149"/> - <source>Create sis Package</source> - <translation>Erzeuge sis-Paketdatei</translation> + <source>Create SIS Package</source> + <translation>SIS-Paketdatei erzeugen</translation> </message> </context> <context> @@ -20865,8 +20886,8 @@ Haben Sie Qemu gestartet?</translation> </message> <message> <location line="+4"/> - <source><b>Create sis Package:</b> %1</source> - <translation><b>Erzeuge sis-Paketdatei:</b> %1</translation> + <source><b>Create SIS Package:</b> %1</source> + <translation><b>Erzeuge SIS-Paketdatei:</b> %1</translation> </message> </context> <context> @@ -20900,7 +20921,7 @@ Haben Sie Qemu gestartet?</translation> <translation><%1> hat kein gültiges Attribut %2</translation> </message> <message> - <location line="+1631"/> + <location line="+1635"/> <source>%1: %2</source> <translation>%1: %2</translation> </message> @@ -21437,14 +21458,6 @@ Haben Sie Qemu gestartet?</translation> </context> <context> <name>Designer::Internal::FormEditorFactory</name> - <message> - <source>This file can only be edited in Design Mode.</source> - <translation type="obsolete">Datei kann nur im Entwurfsmodus bearbeitet werden.</translation> - </message> - <message> - <source>Open Designer</source> - <translation type="obsolete">Designer öffnen</translation> - </message> <message> <location filename="../../../src/plugins/designer/formeditorfactory.cpp" line="+93"/> <source>This file can only be edited in <b>Design</b> mode.</source> @@ -21515,8 +21528,12 @@ Haben Sie Qemu gestartet?</translation> </message> <message> <location line="+1"/> - <source>Creates a mobile Qt Gui Application with one form.</source> - <translation>Erstellt eine mobile Qt-Gui-Anwendung mit einem Formular.</translation> + <source>Creates a Qt application optimized for mobile devices with a Qt Designer-based main window. + +Preselects Qt for Simulator and mobile targets if available</source> + <translation>Erstellt eine Qt-Anwendung für mobile Geräte mit einem Qt Designer-basierten Hauptfenster. + +Wählt Qt-Versionen für Simulator und mobile Ziele aus, sofern sie verfügbar sind.</translation> </message> </context> <context> @@ -21594,7 +21611,7 @@ Haben Sie Qemu gestartet?</translation> </message> <message> <location/> - <source>Import existing shadow build...</source> + <source>Import Existing Shadow Build...</source> <translation>Importiere existierenden Shadow-Build...</translation> </message> </context> @@ -21673,8 +21690,9 @@ Haben Sie Qemu gestartet?</translation> </message> <message> <location filename="customwizard_tr.h" line="+1"/> - <source>Creates a plug-in for the QML runtime.</source> - <translation>Erzeugt ein Plugin für die QML-Laufzeitumgebung.</translation> + <source>Creates a C++ plugin to extend the funtionality of the QML runtime.</source> + <oldsource>Creates a plug-in for the QML runtime.</oldsource> + <translation>Erstellt ein C++-Plugin zur Erweiterung der Funktionalität der QML-Laufzeitumgebung.</translation> </message> <message> <location line="+1"/> @@ -21799,18 +21817,18 @@ Haben Sie Qemu gestartet?</translation> </message> <message> <location/> - <source>Save public Key...</source> - <translation>Öffentlichen Schlüssel speichern...</translation> + <source>Close</source> + <translation>Schließen</translation> </message> <message> <location/> - <source>Save private Key...</source> - <translation>Privaten Schlüssel speichern...</translation> + <source>Save Public Key...</source> + <translation>Öffentlichen Schlüssel speichern...</translation> </message> <message> <location/> - <source>Close</source> - <translation>Schließen</translation> + <source>Save Private Key...</source> + <translation>Privaten Schlüssel speichern...</translation> </message> </context> <context> @@ -22183,12 +22201,12 @@ Namen <E-Mail> Alias <E-Mail?</translation> <name>Qt4ProjectManager::Internal::MaemoSshConfigDialog</name> <message> <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.cpp" line="+124"/> - <source>Save public key file</source> + <source>Save Public Key File</source> <translation>Öffentlichen Schlüssel speichern</translation> </message> <message> <location line="+0"/> - <source>Save private key file</source> + <source>Save Private Key File</source> <translation>Privaten Schlüssel speichern</translation> </message> <message> @@ -22432,7 +22450,7 @@ Namen <E-Mail> Alias <E-Mail?</translation> <context> <name>CodePaster::FileShareProtocolSettingsPage</name> <message> - <location filename="../../../src/plugins/cpaster/fileshareprotocolsettingspage.cpp" line="+105"/> + <location filename="../../../src/plugins/cpaster/fileshareprotocolsettingspage.cpp" line="+110"/> <source>Fileshare</source> <translation>Dateibasiert</translation> </message> @@ -22490,11 +22508,11 @@ Namen <E-Mail> Alias <E-Mail?</translation> <name>TextEditor::Internal::TextEditorPlugin</name> <message> <location filename="../../../src/plugins/texteditor/texteditorplugin.cpp" line="+94"/> - <source>Creates a text file (.txt).</source> - <translation>Erzeugt eine Textdatei (.txt)</translation> + <source>Creates a text file. The default file extension is <tt>.txt</tt>. You can specify a different extension as part of the filename.</source> + <translation>Erstellt eine Textdatei mit der Erweiterung <tt>.txt</tt>. Sie können eine andere Erweiterung als Teil des Dateinamens angeben.</translation> </message> <message> - <location line="+1"/> + <location line="+2"/> <source>Text File</source> <translation>Textdatei</translation> </message> @@ -22711,4 +22729,12 @@ Ids müssen mit einem Kleinbuchstaben beginnen und dürfen nur alphanumerische Z <translation>Es konnte kein Element des Typs %1 erzeugt werden</translation> </message> </context> +<context> + <name>QmlDesigner::QmlModelView</name> + <message> + <location filename="../../../src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp" line="+179"/> + <source>Invalid Id</source> + <translation>Ungültige Id</translation> + </message> +</context> </TS> diff --git a/src/libs/qmljs/qmljsdocument.cpp b/src/libs/qmljs/qmljsdocument.cpp index 216fd7a738eb4e9d8d261dbe72f8f41431b40204..3cb6162d4fc052a39fdeec95b392f571306efdb8 100644 --- a/src/libs/qmljs/qmljsdocument.cpp +++ b/src/libs/qmljs/qmljsdocument.cpp @@ -251,8 +251,14 @@ Snapshot::~Snapshot() void Snapshot::insert(const Document::Ptr &document) { if (document && (document->qmlProgram() || document->jsProgram())) { - _documents.insert(document->fileName(), document); - _documentsByPath.insert(document->path(), document); + const QString fileName = document->fileName(); + const QString path = document->path(); + + Document::Ptr old = _documents.value(fileName); + if (old) + _documentsByPath.remove(path, old); + _documentsByPath.insert(path, document); + _documents.insert(fileName, document); } } diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index 75bbafa2a4f1c1c29c8bded92a6cd43b861b0711..06dadcd4b35ce4ce446833b7a49d78ce47135523 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -171,13 +171,13 @@ void PathChooser::slotBrowse() switch (m_d->m_acceptingKind) { case PathChooser::Directory: newPath = QFileDialog::getExistingDirectory(this, - makeDialogTitle(tr("Choose a directory")), predefined); + makeDialogTitle(tr("Choose Directory")), predefined); break; case PathChooser::File: // fall through case PathChooser::Command: newPath = QFileDialog::getOpenFileName(this, - makeDialogTitle(tr("Choose a file")), predefined, + makeDialogTitle(tr("Choose File")), predefined, m_d->m_dialogFilter); break; diff --git a/src/libs/utils/pathlisteditor.cpp b/src/libs/utils/pathlisteditor.cpp index 9525f209db92d021eeab6678b0a84a28b212da53..b76721e72ac9e05b49bd1e560175451c4c025408 100644 --- a/src/libs/utils/pathlisteditor.cpp +++ b/src/libs/utils/pathlisteditor.cpp @@ -121,7 +121,7 @@ PathListEditor::PathListEditor(QWidget *parent) : connect(m_d->toolButton, SIGNAL(clicked()), this, SLOT(slotInsert())); addAction(tr("Add..."), this, SLOT(slotAdd())); - addAction(tr("Delete line"), this, SLOT(deletePathAtCursor())); + addAction(tr("Delete Line"), this, SLOT(deletePathAtCursor())); addAction(tr("Clear"), this, SLOT(clear())); } diff --git a/src/plugins/bookmarks/bookmarksplugin.cpp b/src/plugins/bookmarks/bookmarksplugin.cpp index 15eb13a8c1aa3fd8b8759fee6a48cd95b81bd6fb..3f5ef3f6c0182963e28f1aed74983052991801a7 100644 --- a/src/plugins/bookmarks/bookmarksplugin.cpp +++ b/src/plugins/bookmarks/bookmarksplugin.cpp @@ -126,12 +126,12 @@ bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *) mbm->addAction(cmd); //Previous Doc - m_docPrevAction = new QAction(tr("Previous Bookmark In Document"), this); + m_docPrevAction = new QAction(tr("Previous Bookmark in Document"), this); cmd = am->registerAction(m_docPrevAction, BOOKMARKS_PREVDOC_ACTION, globalcontext); mbm->addAction(cmd); //Next Doc - m_docNextAction = new QAction(tr("Next Bookmark In Document"), this); + m_docNextAction = new QAction(tr("Next Bookmark in Document"), this); cmd = am->registerAction(m_docNextAction, BOOKMARKS_NEXTDOC_ACTION, globalcontext); mbm->addAction(cmd); diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp index dcc25e3c3f33c3d9d29e8b7dc470f1c3976b335b..f45a479008cc7adcb8fc379d902ca05048bd4c27 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -312,7 +312,7 @@ CMakeRunConfigurationWidget::CMakeRunConfigurationWidget(CMakeRunConfiguration * m_workingDirectoryEdit = new Utils::PathChooser(); m_workingDirectoryEdit->setPath(m_cmakeRunConfiguration->workingDirectory()); m_workingDirectoryEdit->setExpectedKind(Utils::PathChooser::Directory); - m_workingDirectoryEdit->setPromptDialogTitle(tr("Select the working directory")); + m_workingDirectoryEdit->setPromptDialogTitle(tr("Select Working Directory")); QToolButton *resetButton = new QToolButton(); resetButton->setToolTip(tr("Reset to default")); diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index c976cbef925c3e4f5461cd39ac8c571fdfb4535a..9bce32adc12857e9f2c33176d4af690a3042fb57 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -141,6 +141,7 @@ const char * const GOTO_OTHER_SPLIT = "QtCreator.GotoOtherSplit"; const char * const SAVEASDEFAULT = "QtCreator.SaveAsDefaultLayout"; const char * const RESTOREDEFAULT = "QtCreator.RestoreDefaultLayout"; const char * const CLOSE = "QtCreator.Close"; +const char * const CLOSE_ALTERNATIVE = "QtCreator.Close_Alternative"; // temporary, see QTCREATORBUG-72 const char * const CLOSEALL = "QtCreator.CloseAll"; const char * const CLOSEOTHERS = "QtCreator.CloseOthers"; const char * const GOTONEXT = "QtCreator.GotoNext"; diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index d596348202b86d46bb646b629d87806ee16fcd5a..0c14e43a31957bff7e0e0e091733a75015b3850d 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -382,6 +382,7 @@ void SettingsDialog::updateEnabledTabs(Category *category, const QString &search for (int i = 0; i < category->pages.size(); ++i) { const IOptionsPage *page = category->pages.at(i); const bool enabled = searchText.isEmpty() + || page->category().contains(searchText, Qt::CaseInsensitive) || page->displayName().contains(searchText, Qt::CaseInsensitive) || page->matches(searchText); category->tabWidget->setTabEnabled(i, enabled); diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index da4bca7efd9452a5e149763698ab1b15a94f08a8..a296741aa05c307caba7b58b876929891216877f 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -67,6 +67,7 @@ #include <QtCore/QSettings> #include <QtGui/QAction> +#include <QtGui/QShortcut> #include <QtGui/QApplication> #include <QtGui/QFileDialog> #include <QtGui/QLayout> @@ -311,16 +312,21 @@ EditorManager::EditorManager(ICore *core, QWidget *parent) : // Close Action cmd = am->registerAction(m_d->m_closeCurrentEditorAction, Constants::CLOSE, editManagerContext); -#ifdef Q_WS_WIN - cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+F4"))); -#else cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+W"))); -#endif cmd->setAttribute(Core::Command::CA_UpdateText); cmd->setDefaultText(m_d->m_closeCurrentEditorAction->text()); mfile->addAction(cmd, Constants::G_FILE_CLOSE); connect(m_d->m_closeCurrentEditorAction, SIGNAL(triggered()), this, SLOT(closeEditor())); +#ifdef Q_WS_WIN + // workaround for QTCREATORBUG-72 + QShortcut *sc = new QShortcut(parent); + cmd = am->registerShortcut(sc, Constants::CLOSE_ALTERNATIVE, editManagerContext); + cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+F4"))); + cmd->setDefaultText(EditorManager::tr("Close")); + connect(sc, SIGNAL(activated()), this, SLOT(closeEditor())); +#endif + // Close All Action cmd = am->registerAction(m_d->m_closeAllEditorsAction, Constants::CLOSEALL, editManagerContext); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+W"))); @@ -733,6 +739,8 @@ void EditorManager::closeOtherEditors() // SLOT connected to action void EditorManager::closeEditor() { + if (!m_d->m_currentEditor) + return; addCurrentPositionToNavigationHistory(); closeEditor(m_d->m_currentEditor); } diff --git a/src/plugins/coreplugin/generalsettings.ui b/src/plugins/coreplugin/generalsettings.ui index 73fb6764fb12c9bdbd1eccff9d9ac3207754eb36..a44dfdef5a30a15acd1aa5738e8a47ef18bfc121 100644 --- a/src/plugins/coreplugin/generalsettings.ui +++ b/src/plugins/coreplugin/generalsettings.ui @@ -270,17 +270,17 @@ </property> <item> <property name="text"> - <string>Always ask</string> + <string>Always Ask</string> </property> </item> <item> <property name="text"> - <string>Reload all unchanged editors</string> + <string>Reload All Unchanged Editors</string> </property> </item> <item> <property name="text"> - <string>Ignore modifications</string> + <string>Ignore Modifications</string> </property> </item> </widget> diff --git a/src/plugins/cpaster/fileshareprotocolsettingspage.cpp b/src/plugins/cpaster/fileshareprotocolsettingspage.cpp index f678e7a0153763fc325a19e7b072ac1f58bce21b..ea19de63e27e2a728a2e8772d1e22667f3e5066c 100644 --- a/src/plugins/cpaster/fileshareprotocolsettingspage.cpp +++ b/src/plugins/cpaster/fileshareprotocolsettingspage.cpp @@ -72,6 +72,11 @@ FileShareProtocolSettingsWidget::FileShareProtocolSettingsWidget(QWidget *parent QWidget(parent) { m_ui.setupUi(this); + + // Add a space in front of the suffix + QString suffix = m_ui.displayCountSpinBox->suffix(); + suffix.prepend(QLatin1Char(' ')); + m_ui.displayCountSpinBox->setSuffix(suffix); } void FileShareProtocolSettingsWidget::setSettings(const FileShareProtocolSettings &s) diff --git a/src/plugins/cpaster/pastebindotcomsettings.ui b/src/plugins/cpaster/pastebindotcomsettings.ui index 3f2fd6c773c7528b869c2ea2de5b486bb415f6bc..73844e4d5ee3f923f96af97facd91397b4d7602a 100644 --- a/src/plugins/cpaster/pastebindotcomsettings.ui +++ b/src/plugins/cpaster/pastebindotcomsettings.ui @@ -51,15 +51,18 @@ <widget class="QLabel" name="explanatoryTextLabel"> <property name="text"> <string><html><head/><body> -<p><a href="http://pastebin.com">pastebin.com</a> allows to send posts to custom subdomains (eg. qtcreator.pastebin.com). Fill in the desired prefix.</p> +<p><a href="http://pastebin.com">pastebin.com</a> allows to send posts to custom subdomains (eg. creator.pastebin.com). Fill in the desired prefix.</p> <p>Note that the plugin will use this for posting as well as fetching.</p></body></html></string> </property> <property name="textFormat"> - <enum>Qt::RichText</enum> + <enum>Qt::AutoText</enum> </property> <property name="wordWrap"> <bool>true</bool> </property> + <property name="openExternalLinks"> + <bool>true</bool> + </property> </widget> </item> <item> diff --git a/src/plugins/cpaster/pasteview.ui b/src/plugins/cpaster/pasteview.ui index b7764d29d24b5a1dfa9b521b1bc9a5982d7f0576..80dc556023359d0f3ad8bdd8c910eb22f5142704 100644 --- a/src/plugins/cpaster/pasteview.ui +++ b/src/plugins/cpaster/pasteview.ui @@ -97,7 +97,7 @@ p, li { white-space: pre-wrap; } </sizepolicy> </property> <property name="title"> - <string>Parts to send to server</string> + <string>Parts to Send to Server</string> </property> <property name="flat"> <bool>true</bool> diff --git a/src/plugins/cpaster/settingspage.ui b/src/plugins/cpaster/settingspage.ui index e4566d219e9da30ffddd9c6f41dd1f0e148bb23c..043f046d9b591d0017330734f2ec2f56d5e22606 100644 --- a/src/plugins/cpaster/settingspage.ui +++ b/src/plugins/cpaster/settingspage.ui @@ -27,14 +27,14 @@ <item row="4" column="0" colspan="2"> <widget class="QCheckBox" name="displayBox"> <property name="text"> - <string>Display Output Pane after sending a post</string> + <string>Display Output pane after sending a post</string> </property> </widget> </item> <item row="3" column="0" colspan="2"> <widget class="QCheckBox" name="clipboardBox"> <property name="text"> - <string>Copy Paste URL to clipboard</string> + <string>Copy-paste URL to clipboard</string> </property> </widget> </item> diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp index 57528bf6f715070c0e9f61b2e63fa86ba8c5875a..c7a1398b25665936421d3175933e66718dcf7fc2 100644 --- a/src/plugins/cppeditor/cppplugin.cpp +++ b/src/plugins/cppeditor/cppplugin.cpp @@ -275,7 +275,7 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess QList<int> globalContext; globalContext.append(Core::Constants::C_GLOBAL_ID); cppToolsMenu->addAction(createSeparator(am, this, globalContext, CppEditor::Constants::SEPARATOR2)); - m_updateCodeModelAction = new QAction(tr("Update code model"), this); + m_updateCodeModelAction = new QAction(tr("Update Code Model"), this); cmd = am->registerAction(m_updateCodeModelAction, QLatin1String(Constants::UPDATE_CODEMODEL), globalContext); CppTools::CppModelManagerInterface *cppModelManager = CppTools::CppModelManagerInterface::instance(); connect(m_updateCodeModelAction, SIGNAL(triggered()), cppModelManager, SLOT(updateModifiedSourceFiles())); diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp index 5a7b97e87256ab71480e01de0f0820f5815ab952..def7d89d251f21b1ef000a9c56787c88937e1692 100644 --- a/src/plugins/cppeditor/cppquickfix.cpp +++ b/src/plugins/cppeditor/cppquickfix.cpp @@ -49,6 +49,7 @@ #include <cpptools/cpptoolsconstants.h> #include <cpptools/cppmodelmanagerinterface.h> +#include <QtGui/QApplication> #include <QtGui/QTextBlock> using namespace CppEditor::Internal; @@ -129,7 +130,7 @@ public: virtual QString description() const { - return QLatin1String("Rewrite using ") + replacement; // ### tr? + return QApplication::translate("CppTools::QuickFix", "Rewrite Using %1").arg(replacement); } virtual int match(const QList<AST *> &path) @@ -223,9 +224,9 @@ public: virtual QString description() const { if (replacement.isEmpty()) - return QLatin1String("Flip"); + return QApplication::translate("CppTools::QuickFix", "Swap Operands"); else - return QLatin1String("Flip to use ") + replacement; // ### tr? + return QApplication::translate("CppTools::QuickFix", "Rewrite Using %1").arg(replacement); } virtual int match(const QList<AST *> &path) @@ -297,7 +298,7 @@ public: virtual QString description() const { - return QLatin1String("Rewrite condition using ||"); // ### tr? + return QApplication::translate("CppTools::QuickFix", "Rewrite Condition Using ||"); } virtual int match(const QList<AST *> &path) @@ -358,7 +359,7 @@ public: virtual QString description() const { - return QLatin1String("Split declaration"); // ### tr? + return QApplication::translate("CppTools::QuickFix", "Split Declaration"); } bool checkDeclaration(SimpleDeclarationAST *declaration) const @@ -464,7 +465,7 @@ public: virtual QString description() const { - return QLatin1String("Add curly braces"); // ### tr? + return QApplication::translate("CppTools::QuickFix", "Add Curly Braces"); } virtual int match(const QList<AST *> &path) @@ -524,7 +525,7 @@ public: virtual QString description() const { - return QLatin1String("Move declaration out of condition"); // ### tr? + return QApplication::translate("CppTools::QuickFix", "Move Declaration out of Condition"); } virtual int match(const QList<AST *> &path) @@ -587,7 +588,7 @@ public: virtual QString description() const { - return QLatin1String("Move declaration out of condition"); // ### tr? + return QApplication::translate("CppTools::QuickFix", "Move Declaration out of Condition"); } virtual int match(const QList<AST *> &path) @@ -672,7 +673,7 @@ public: virtual QString description() const { - return QLatin1String("Split if statement"); // ### tr? + return QApplication::translate("CppTools::QuickFix", "Split if Statement"); } virtual int match(const QList<AST *> &path) @@ -782,7 +783,7 @@ public: virtual QString description() const { - return QLatin1String("Enclose in QLatin1String(...)"); // ### tr? + return QApplication::translate("CppTools::QuickFix", "Enclose in QLatin1String(...)"); } virtual int match(const QList<AST *> &path) @@ -849,7 +850,9 @@ public: {} virtual QString description() const - { return QLatin1String("Convert to Objective-C string literal"); }// ### tr? + { + return QApplication::translate("CppTools::QuickFix", "Convert to Objective-C String Literal"); + } virtual int match(const QList<AST *> &path) { @@ -922,7 +925,7 @@ public: virtual QString description() const { - return QLatin1String("Use fast string concatenation with %"); // ### tr? + return QApplication::translate("CppTools::QuickFix", "Use Fast String Concatenation with %"); } virtual int match(const QList<AST *> &path) diff --git a/src/plugins/cpptools/completionsettingspage.ui b/src/plugins/cpptools/completionsettingspage.ui index 4167db7c3d5bdc7062bec4a49c69c2077f67521a..98e0da2bc60ce8c1c7f9923fce87599f9a204b29 100644 --- a/src/plugins/cpptools/completionsettingspage.ui +++ b/src/plugins/cpptools/completionsettingspage.ui @@ -65,7 +65,7 @@ </item> <item> <property name="text"> - <string>First letter</string> + <string>First Letter</string> </property> </item> </widget> diff --git a/src/plugins/cpptools/cppfilesettingspage.cpp b/src/plugins/cpptools/cppfilesettingspage.cpp index db982c6ee81ed87e71774eb47a0b16a05068dd35..2a10677cb3106182e6eadaeaaefc539712cc8061 100644 --- a/src/plugins/cpptools/cppfilesettingspage.cpp +++ b/src/plugins/cpptools/cppfilesettingspage.cpp @@ -272,7 +272,7 @@ void CppFileSettingsWidget::slotEdit() return; } // Pick a file name and write new template, edit with C++ - path = QFileDialog::getSaveFileName(this, tr("Choose a location for the new license template file")); + path = QFileDialog::getSaveFileName(this, tr("Choose Location for New License Template File")); if (path.isEmpty()) return; QFile file(path); diff --git a/src/plugins/cvs/checkoutwizard.cpp b/src/plugins/cvs/checkoutwizard.cpp index ed70c63c66803367d2e18b30d8e80caa50bbf396..b7e81e711c1cecff0251f4aafdf86e4dfb267c21 100644 --- a/src/plugins/cvs/checkoutwizard.cpp +++ b/src/plugins/cvs/checkoutwizard.cpp @@ -53,7 +53,7 @@ QIcon CheckoutWizard::icon() const QString CheckoutWizard::description() const { - return tr("Checks out a project from a CVS repository and tries to load the contained project."); + return tr("Checks out a CVS repository and tries to load the contained project."); } QString CheckoutWizard::displayName() const diff --git a/src/plugins/cvs/settingspage.ui b/src/plugins/cvs/settingspage.ui index 17edd2a71f43575b81e893fee1802e0c9ef40846..4f1ebfd394dc16327b7b53cbca00e643523e877b 100644 --- a/src/plugins/cvs/settingspage.ui +++ b/src/plugins/cvs/settingspage.ui @@ -66,7 +66,7 @@ <item row="3" column="0" colspan="2"> <widget class="QCheckBox" name="describeByCommitIdCheckBox"> <property name="toolTip"> - <string>When checked, all files touched by a commit will be displayed when clicking on a revision number in the annotation view (retrieved via commit id). Otherwise, only the respective file will be displayed.</string> + <string>When checked, all files touched by a commit will be displayed when clicking on a revision number in the annotation view (retrieved via commit ID). Otherwise, only the respective file will be displayed.</string> </property> <property name="text"> <string>Describe all files matching commit id</string> diff --git a/src/plugins/debugger/attachexternaldialog.ui b/src/plugins/debugger/attachexternaldialog.ui index 143ebb2a572c0603430f8d9d939d12df2f3de891..5e157a2f3ceffb0fc645c320c4843035173ae0bc 100644 --- a/src/plugins/debugger/attachexternaldialog.ui +++ b/src/plugins/debugger/attachexternaldialog.ui @@ -28,7 +28,7 @@ <item row="0" column="0"> <widget class="QLabel" name="pidLabel"> <property name="text"> - <string>Attach to Process ID:</string> + <string>Attach to process ID:</string> </property> </widget> </item> diff --git a/src/plugins/debugger/cdb/cdboptionspagewidget.ui b/src/plugins/debugger/cdb/cdboptionspagewidget.ui index 5ff8605d080879ef2f5e5049a739725d4e754346..c84109e3a7e2479fc7eca73357268697be1dc156 100644 --- a/src/plugins/debugger/cdb/cdboptionspagewidget.ui +++ b/src/plugins/debugger/cdb/cdboptionspagewidget.ui @@ -19,7 +19,7 @@ <string>These options take effect at the next start of Qt Creator.</string> </property> <property name="title"> - <string extracomment="Placeholder">Cdb</string> + <string extracomment="Placeholder">CDB</string> </property> <property name="checkable"> <bool>true</bool> @@ -82,13 +82,13 @@ <item> <widget class="QGroupBox" name="variousOptionsGroupBox"> <property name="title"> - <string>Other options</string> + <string>Other Options</string> </property> <layout class="QFormLayout" name="formLayout_3"> <item row="0" column="0" colspan="2"> <widget class="QCheckBox" name="verboseSymbolLoadingCheckBox"> <property name="text"> - <string>Verbose Symbol Loading</string> + <string>Verbose symbol loading</string> </property> </widget> </item> diff --git a/src/plugins/debugger/commonoptionspage.ui b/src/plugins/debugger/commonoptionspage.ui index fc67708b4ef328925644cf33616b45ae428042c2..973885cc10cdb5317690a412407f07348820f10a 100644 --- a/src/plugins/debugger/commonoptionspage.ui +++ b/src/plugins/debugger/commonoptionspage.ui @@ -33,7 +33,7 @@ <item> <widget class="QGroupBox" name="groupBox"> <property name="title"> - <string>Gui behavior</string> + <string>GUI Behavior</string> </property> <layout class="QGridLayout" name="gridLayout_2"> <item row="0" column="0" colspan="2"> @@ -66,7 +66,7 @@ <string>Register Qt Creator for debugging crashed applications.</string> </property> <property name="text"> - <string>Use Creator for post-mortem debugging</string> + <string>Use Qt Creator for post-mortem debugging</string> </property> </widget> </item> diff --git a/src/plugins/debugger/dumperoptionpage.ui b/src/plugins/debugger/dumperoptionpage.ui index 7fd962fd41bd3ea025e86bfcb20071e7ebf68e18..797601b656a6bc9ae407f64ffa80a86e405df1ea 100644 --- a/src/plugins/debugger/dumperoptionpage.ui +++ b/src/plugins/debugger/dumperoptionpage.ui @@ -21,7 +21,7 @@ <item> <widget class="QGroupBox" name="debuggingHelperGroupBox"> <property name="title"> - <string>Use debugging helper</string> + <string>Use Debugging Helper</string> </property> <property name="checkable"> <bool>true</bool> diff --git a/src/plugins/debugger/gdb/gdboptionspage.ui b/src/plugins/debugger/gdb/gdboptionspage.ui index 90deb6b6dd2b7bf17e4e888d647a0962b3c2351b..43ba556c0cfc92a33093c6f62ab4271ea952caee 100644 --- a/src/plugins/debugger/gdb/gdboptionspage.ui +++ b/src/plugins/debugger/gdb/gdboptionspage.ui @@ -135,7 +135,7 @@ name in different directories.</string> <item> <widget class="QGroupBox" name="groupBoxPluginDebugging"> <property name="title"> - <string>Behaviour of breakpoint setting in plugins</string> + <string>Behavior of Breakpoint Setting in Plugins</string> </property> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> diff --git a/src/plugins/designer/cpp/cppsettingspagewidget.ui b/src/plugins/designer/cpp/cppsettingspagewidget.ui index 1e2b089d0a86dde89ee9a4fad6196c09f0bcfc77..d34a4f86f440fde46eeabfee868da3df55f7865e 100644 --- a/src/plugins/designer/cpp/cppsettingspagewidget.ui +++ b/src/plugins/designer/cpp/cppsettingspagewidget.ui @@ -32,7 +32,7 @@ <item> <widget class="QRadioButton" name="multipleInheritanceButton"> <property name="text"> - <string>Multiple Inheritance</string> + <string>Multiple inheritance</string> </property> </widget> </item> diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index 177e44af4876fc8318d5c5d643b77488fddde9c7..51e45335f0a8b712c14b7357f0138cf98fafa4f0 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -445,22 +445,22 @@ void FormEditorW::setupActions() m_toolActionIds.push_back(QLatin1String("FormEditor.WidgetEditor")); createEditModeAction(m_actionGroupEditMode, m_contexts, am, medit, - tr("Edit widgets"), m_toolActionIds.back(), + tr("Edit Widgets"), m_toolActionIds.back(), EditModeWidgetEditor, QLatin1String("widgettool.png"), tr("F3")); m_toolActionIds.push_back(QLatin1String("FormEditor.SignalsSlotsEditor")); createEditModeAction(m_actionGroupEditMode, m_contexts, am, medit, - tr("Edit signals/slots"), m_toolActionIds.back(), + tr("Edit Signals/Slots"), m_toolActionIds.back(), EditModeSignalsSlotEditor, QLatin1String("signalslottool.png"), tr("F4")); m_toolActionIds.push_back(QLatin1String("FormEditor.BuddyEditor")); createEditModeAction(m_actionGroupEditMode, m_contexts, am, medit, - tr("Edit buddies"), m_toolActionIds.back(), + tr("Edit Buddies"), m_toolActionIds.back(), EditModeBuddyEditor, QLatin1String("buddytool.png")); m_toolActionIds.push_back(QLatin1String("FormEditor.TabOrderEditor")); createEditModeAction(m_actionGroupEditMode, m_contexts, am, medit, - tr("Edit tab order"), m_toolActionIds.back(), + tr("Edit Tab Order"), m_toolActionIds.back(), EditModeTabOrderEditor, QLatin1String("tabordertool.png")); //tool actions diff --git a/src/plugins/fakevim/fakevimactions.cpp b/src/plugins/fakevim/fakevimactions.cpp index 9e63d548ca9a9d35c850bce5364fe8a4764d021f..8f9aeba53afb0b8b1b0181ad5592620becb6dc3a 100644 --- a/src/plugins/fakevim/fakevimactions.cpp +++ b/src/plugins/fakevim/fakevimactions.cpp @@ -118,7 +118,7 @@ FakeVimSettings *theFakeVimSettings() const QString group = _("FakeVim"); item = new SavedAction(instance); item->setText(QCoreApplication::translate("FakeVim::Internal", - "Use vim-style editing")); + "Use Vim-style Editing")); item->setSettingsKey(group, _("UseFakeVim")); item->setCheckable(true); item->setValue(false); diff --git a/src/plugins/fakevim/fakevimoptions.ui b/src/plugins/fakevim/fakevimoptions.ui index a5355f7ea890e531bb1c5b5e2349564fded13167..450a8629065d6f947f8b0e40c76c8e9d5a9eb98e 100644 --- a/src/plugins/fakevim/fakevimoptions.ui +++ b/src/plugins/fakevim/fakevimoptions.ui @@ -200,21 +200,21 @@ <item> <widget class="QPushButton" name="pushButtonCopyTextEditorSettings"> <property name="text"> - <string>Copy text editor settings</string> + <string>Copy Text Editor Settings</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButtonSetQtStyle"> <property name="text"> - <string>Set Qt style</string> + <string>Set Qt Style</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButtonSetPlainStyle"> <property name="text"> - <string>Set plain style</string> + <string>Set Plain Style</string> </property> </widget> </item> diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.cpp b/src/plugins/genericprojectmanager/genericprojectmanager.cpp index 0ad966a7306d3e735fcba8d6f7b41d0e9243abf7..5f5737bf65e069ceb7354af657c0186590e12cf7 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager.cpp +++ b/src/plugins/genericprojectmanager/genericprojectmanager.cpp @@ -32,8 +32,11 @@ #include "genericproject.h" #include <coreplugin/icore.h> +#include <coreplugin/messagemanager.h> #include <coreplugin/uniqueidmanager.h> +#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorerconstants.h> +#include <projectexplorer/session.h> #include <QtDebug> @@ -60,14 +63,21 @@ QString Manager::mimeType() const ProjectExplorer::Project *Manager::openProject(const QString &fileName) { - QFileInfo fileInfo(fileName); + if (!QFileInfo(fileName).isFile()) + return 0; - if (fileInfo.isFile()) { - GenericProject *project = new GenericProject(this, fileName); - return project; + ProjectExplorer::ProjectExplorerPlugin *projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance(); + foreach (ProjectExplorer::Project *pi, projectExplorer->session()->projects()) { + if (fileName == pi->file()->fileName()) { + Core::MessageManager *messageManager = Core::ICore::instance()->messageManager(); + messageManager->printToOutputPanePopup(tr("Failed opening project '%1': Project already open") + .arg(QDir::toNativeSeparators(fileName))); + return 0; + } } - return 0; + GenericProject *project = new GenericProject(this, fileName); + return project; } void Manager::registerProject(GenericProject *project) diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.h b/src/plugins/genericprojectmanager/genericprojectmanager.h index 6e213afc77d274835af10790da6f6eb683b24b64..1b99f008d1770c20a4d3d4f38f6a4b6e9da7e92b 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager.h +++ b/src/plugins/genericprojectmanager/genericprojectmanager.h @@ -37,7 +37,7 @@ namespace Internal { class GenericProject; -class Manager: public ProjectExplorer::IProjectManager +class Manager : public ProjectExplorer::IProjectManager { Q_OBJECT diff --git a/src/plugins/git/branchdialog.ui b/src/plugins/git/branchdialog.ui index 45e6c65c7c950e8a0a514e5b1c008d162286c3dd..872f7b19fa0f8ca429bf1ccc8417e31b8293bd65 100644 --- a/src/plugins/git/branchdialog.ui +++ b/src/plugins/git/branchdialog.ui @@ -42,7 +42,7 @@ <item> <widget class="QGroupBox" name="remoteBranchGroupBox"> <property name="title"> - <string>Remote branches</string> + <string>Remote Branches</string> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> diff --git a/src/plugins/git/changeselectiondialog.cpp b/src/plugins/git/changeselectiondialog.cpp index 84130ee7989720457bd7a9f5ce30e8b9ec6c5731..b762369b4fdcd54e629cfdb70955ecb8432e1d3e 100644 --- a/src/plugins/git/changeselectiondialog.cpp +++ b/src/plugins/git/changeselectiondialog.cpp @@ -40,7 +40,7 @@ ChangeSelectionDialog::ChangeSelectionDialog(QWidget *parent) { m_ui.setupUi(this); connect(m_ui.repositoryButton, SIGNAL(clicked()), this, SLOT(selectWorkingDirectory())); - setWindowTitle(tr("Select a Git commit")); + setWindowTitle(tr("Select a Git Commit")); } QString ChangeSelectionDialog::change() const @@ -62,7 +62,7 @@ void ChangeSelectionDialog::selectWorkingDirectory() { static QString location; location = QFileDialog::getExistingDirectory(this, - tr("Select Git repository"), + tr("Select Git Repository"), location); if (location.isEmpty()) return; diff --git a/src/plugins/git/changeselectiondialog.ui b/src/plugins/git/changeselectiondialog.ui index 26ac65cb861838f31ddb3e13ae3b97c17f93c41c..b2f368e686994306d12c93d19c2c975dc883d13f 100644 --- a/src/plugins/git/changeselectiondialog.ui +++ b/src/plugins/git/changeselectiondialog.ui @@ -17,7 +17,7 @@ <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> - <string>Repository Location:</string> + <string>Repository location:</string> </property> </widget> </item> diff --git a/src/plugins/git/clonewizard.cpp b/src/plugins/git/clonewizard.cpp index 60c9c13289bbe9428adcff10c3bef63cedc17589..e633da5cfc357cb694e5a84f2493d714f12be000 100644 --- a/src/plugins/git/clonewizard.cpp +++ b/src/plugins/git/clonewizard.cpp @@ -52,7 +52,7 @@ QIcon CloneWizard::icon() const QString CloneWizard::description() const { - return tr("Clones a project from a Git repository and tries to load the contained project."); + return tr("Clones a Git repository and tries to load the contained project."); } QString CloneWizard::displayName() const diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 8984813632cea55c0e019be546fea09e7890bc0a..8248d18d0d6891ae7aa490d5378e13db7d87fb47 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -862,7 +862,7 @@ QString GitClient::synchronousStash(const QString &workingDirectory, do { if ((flags & StashPromptDescription)) { if (!inputText(Core::ICore::instance()->mainWindow(), - tr("Stash description"), tr("Description:"), &message)) + tr("Stash Description"), tr("Description:"), &message)) break; } if (!executeSynchronousStash(workingDirectory, message)) diff --git a/src/plugins/git/gitorious/gitoriousclonewizard.cpp b/src/plugins/git/gitorious/gitoriousclonewizard.cpp index 46a7efab9b8e484dbe2349492db7772091071471..8c37d80e532c526ec0ac6f6acca0fe7401c9d441 100644 --- a/src/plugins/git/gitorious/gitoriousclonewizard.cpp +++ b/src/plugins/git/gitorious/gitoriousclonewizard.cpp @@ -80,7 +80,7 @@ QIcon GitoriousCloneWizard::icon() const QString GitoriousCloneWizard::description() const { - return tr("Clones a project from a Gitorious repository and tries to load the contained project."); + return tr("Clones a Gitorious repository and tries to load the contained project."); } QString GitoriousCloneWizard::displayName() const diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index c7fc2465fa962d917ed1d7872661fd4ecc974757..b54607b447980b8f742bde6c4323d4ee33cbc44d 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -420,7 +420,7 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage) ActionCommandPair actionCommand = createRepositoryAction(actionManager, gitContainer, - tr("Stash snapshot..."), QLatin1String("Git.StashSnapshot"), + tr("Stash Snapshot..."), QLatin1String("Git.StashSnapshot"), globalcontext, true, SLOT(stashSnapshot())); actionCommand.first->setToolTip(tr("Saves the current state of your work.")); diff --git a/src/plugins/git/settingspage.ui b/src/plugins/git/settingspage.ui index 159c3774f3a4a3fc878ec41e42a89d11caa0d504..072bb6f39d2e89f69cdf46b1941626f90b197462 100644 --- a/src/plugins/git/settingspage.ui +++ b/src/plugins/git/settingspage.ui @@ -17,7 +17,7 @@ <bool>true</bool> </property> <property name="title"> - <string>Environment variables</string> + <string>Environment Variables</string> </property> <property name="checkable"> <bool>true</bool> @@ -38,7 +38,7 @@ <item> <widget class="QPushButton" name="adoptButton"> <property name="text"> - <string>From system</string> + <string>From System</string> </property> </widget> </item> diff --git a/src/plugins/help/generalsettingspage.cpp b/src/plugins/help/generalsettingspage.cpp index 50709e8c37b5a23b32497f55293f8bd64db8b20b..79707b977a57de33984f7dddf1538781247b34f4 100644 --- a/src/plugins/help/generalsettingspage.cpp +++ b/src/plugins/help/generalsettingspage.cpp @@ -68,7 +68,7 @@ QString GeneralSettingsPage::id() const QString GeneralSettingsPage::displayName() const { - return tr("General settings"); + return tr("General Settings"); } QString GeneralSettingsPage::category() const diff --git a/src/plugins/help/generalsettingspage.ui b/src/plugins/help/generalsettingspage.ui index d70d419fe65aaea3250fcb15e76a294253b0093c..7a99e2434534871bfc0723ab6a25544daecfa784 100644 --- a/src/plugins/help/generalsettingspage.ui +++ b/src/plugins/help/generalsettingspage.ui @@ -156,17 +156,17 @@ </property> <item> <property name="text"> - <string>Show side-by-side if possible</string> + <string>Show Side-by-Side if Possible</string> </property> </item> <item> <property name="text"> - <string>Always show side-by-side</string> + <string>Always Show Side-by-Side</string> </property> </item> <item> <property name="text"> - <string>Always start full help</string> + <string>Always Start Full Help</string> </property> </item> </widget> @@ -194,17 +194,17 @@ </property> <item> <property name="text"> - <string>Show my home page</string> + <string>Show My Home Page</string> </property> </item> <item> <property name="text"> - <string>Show a blank page</string> + <string>Show a Blank Page</string> </property> </item> <item> <property name="text"> - <string>Show my tabs from last session</string> + <string>Show My Tabs from Last Session</string> </property> </item> </widget> diff --git a/src/plugins/locator/directoryfilter.cpp b/src/plugins/locator/directoryfilter.cpp index aa2dc8afc320bd5535b5989cb2b8f18af863d3e2..8f927d752b32bed2c086cc4bbd87a9e3633eda8e 100644 --- a/src/plugins/locator/directoryfilter.cpp +++ b/src/plugins/locator/directoryfilter.cpp @@ -145,7 +145,7 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) void DirectoryFilter::addDirectory() { - QString dir = QFileDialog::getExistingDirectory(m_dialog, tr("Choose a directory to add")); + QString dir = QFileDialog::getExistingDirectory(m_dialog, tr("Select Directory")); if (!dir.isEmpty()) { m_ui.directoryList->addItem(dir); } @@ -156,7 +156,7 @@ void DirectoryFilter::editDirectory() if (m_ui.directoryList->selectedItems().count() < 1) return; QListWidgetItem *currentItem = m_ui.directoryList->selectedItems().at(0); - QString dir = QFileDialog::getExistingDirectory(m_dialog, tr("Choose a directory to add"), + QString dir = QFileDialog::getExistingDirectory(m_dialog, tr("Select Directory"), currentItem->text()); if (!dir.isEmpty()) { currentItem->setText(dir); diff --git a/src/plugins/locator/directoryfilter.ui b/src/plugins/locator/directoryfilter.ui index 8b8ddfe59a8346acf69edf99f916672d9e8d0688..2786e0515dc80d7f0ab195ce6da9e6cb928c215e 100644 --- a/src/plugins/locator/directoryfilter.ui +++ b/src/plugins/locator/directoryfilter.ui @@ -26,7 +26,7 @@ <item row="2" column="0"> <widget class="QLabel" name="label_3"> <property name="text"> - <string>File Types:</string> + <string>File types:</string> </property> </widget> </item> diff --git a/src/plugins/locator/settingspage.cpp b/src/plugins/locator/settingspage.cpp index 0dcfdb5cf9c3d99a44922b30e64f6764dae0bb6d..1f913c144bc39d4604b5a93473771fe5b313dc71 100644 --- a/src/plugins/locator/settingspage.cpp +++ b/src/plugins/locator/settingspage.cpp @@ -165,7 +165,7 @@ void SettingsPage::updateFilterList() if (filter->isIncludedByDefault()) title = filter->displayName(); else - title = tr("%1 (Prefix: %2)").arg(filter->displayName()).arg(filter->shortcutString()); + title = tr("%1 (prefix: %2)").arg(filter->displayName()).arg(filter->shortcutString()); QListWidgetItem *item = new QListWidgetItem(title); item->setData(Qt::UserRole, qVariantFromValue(filter)); m_ui.filterList->addItem(item); diff --git a/src/plugins/mercurial/optionspage.ui b/src/plugins/mercurial/optionspage.ui index 2afd9fe65a74511f215487912f3ee81a1d292f82..248dbeeeb5113626ec34f28bf06c5a260c046c94 100644 --- a/src/plugins/mercurial/optionspage.ui +++ b/src/plugins/mercurial/optionspage.ui @@ -62,7 +62,7 @@ <string>Email to use by default on commit.</string> </property> <property name="text"> - <string>Default Email:</string> + <string>Default email:</string> </property> </widget> </item> diff --git a/src/plugins/perforce/settingspage.ui b/src/plugins/perforce/settingspage.ui index 40fb16b72c599aacfee37c44e4cbdaf2dec40b76..6f2704150899dd9a4137528ac7dd727b92b4ed14 100644 --- a/src/plugins/perforce/settingspage.ui +++ b/src/plugins/perforce/settingspage.ui @@ -36,7 +36,7 @@ <bool>true</bool> </property> <property name="title"> - <string>Environment variables</string> + <string>Environment Variables</string> </property> <property name="checkable"> <bool>true</bool> diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index 9fc730de21609ac3d43431728e73c1b3f8c639c0..cc8f99c4ce9429d20b5d02f4fc443874ed78a98d 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -133,7 +133,7 @@ void BuildSettingsWidget::setupUi() if (!m_target->buildConfigurationFactory()) { QLabel * noSettingsLabel(new QLabel(this)); - noSettingsLabel->setText(tr("No Build Settings available")); + noSettingsLabel->setText(tr("No build settings available")); { QFont f(noSettingsLabel->font()); f.setPointSizeF(f.pointSizeF() * 1.2); @@ -146,7 +146,7 @@ void BuildSettingsWidget::setupUi() { // Edit Build Configuration row QHBoxLayout *hbox = new QHBoxLayout(); hbox->setContentsMargins(m_leftMargin, 0, 0, 0); - hbox->addWidget(new QLabel(tr("Edit Build Configuration:"), this)); + hbox->addWidget(new QLabel(tr("Edit build configuration:"), this)); m_buildConfigurationComboBox = new QComboBox(this); m_buildConfigurationComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); m_buildConfigurationComboBox->setModel(new BuildConfigurationModel(m_target, this)); diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp index 744b85490093bbe1a90145e5a57ba1cca1bf9e49..ffb06bc9eb6b9eff22bdf48c562e8c5b111e871c 100644 --- a/src/plugins/projectexplorer/buildstepspage.cpp +++ b/src/plugins/projectexplorer/buildstepspage.cpp @@ -302,7 +302,7 @@ void BuildStepsPage::setupUi() QHBoxLayout *hboxLayout = new QHBoxLayout(); hboxLayout->setContentsMargins(m_leftMargin, 4, 0, 0); m_addButton = new QPushButton(this); - m_addButton->setText(m_type == Clean ? tr("Add clean step") : tr("Add build step")); + m_addButton->setText(m_type == Clean ? tr("Add Clean Step") : tr("Add Build Step")); m_addButton->setMenu(new QMenu(this)); hboxLayout->addWidget(m_addButton); diff --git a/src/plugins/projectexplorer/processstep.ui b/src/plugins/projectexplorer/processstep.ui index 8d049ed36352386b8756cdda1df0257f180716f1..fc2e943ab11895bc40f13bd914ee934e9e647862 100644 --- a/src/plugins/projectexplorer/processstep.ui +++ b/src/plugins/projectexplorer/processstep.ui @@ -14,7 +14,7 @@ <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> - <string>Enable Custom Process Step</string> + <string>Enable custom process step</string> </property> </widget> </item> @@ -48,7 +48,7 @@ <item row="3" column="0"> <widget class="QLabel" name="workingDirecoryLabel"> <property name="text"> - <string>Working Directory:</string> + <string>Working directory:</string> </property> </widget> </item> @@ -58,7 +58,7 @@ <item row="4" column="0"> <widget class="QLabel" name="commandArgumentsLabel"> <property name="text"> - <string>Command Arguments:</string> + <string>Command arguments:</string> </property> </widget> </item> diff --git a/src/plugins/qmldesigner/components/formeditor/itemcreatortool.cpp b/src/plugins/qmldesigner/components/formeditor/itemcreatortool.cpp index b9da6c86f1952c780e4b987f1345f277e9524743..0237c40ded1cf921da3b5c1bd9f108eb71b84a14 100644 --- a/src/plugins/qmldesigner/components/formeditor/itemcreatortool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/itemcreatortool.cpp @@ -170,7 +170,7 @@ void ItemCreatorTool::createAtItem(const QRectF &rect) return; if (list.first() == "item") { RewriterTransaction transaction = view()->beginRewriterTransaction(); - ItemLibraryEntry itemLibraryEntry = view()->model()->metaInfo().itemLibraryInfo().entry(list.at(1)); + ItemLibraryEntry itemLibraryEntry = view()->model()->metaInfo().itemLibraryInfo()->entry(list.at(1)); QmlItemNode newNode = view()->createQmlItemNode(itemLibraryEntry, pos, parentNode); newNode.modelNode().variantProperty("width") = rect.width(); newNode.modelNode().variantProperty("height") = rect.height(); diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp index d56c1bce82f4437379c70b0d549bfd343f8c4ad5..3c69319769359850db42dc361d57da5d79f0d4b5 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp @@ -344,7 +344,7 @@ void DesignDocumentController::loadCurrentModel() m_d->model->setMasterModel(m_d->masterModel.data()); m_d->model->attachView(m_d->navigator.data()); - m_d->itemLibrary->setMetaInfo(m_d->model->metaInfo()); + m_d->itemLibrary->setItemLibraryInfo(m_d->model->metaInfo().itemLibraryInfo()); m_d->itemLibrary->setResourcePath(QFileInfo(m_d->fileName).absolutePath()); if (!m_d->componentAction) { diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp index 0df2950211e57ec8c79b73257f51a5691169bed1..a812f298680e33435c7e6903ff2785c9f2f3133d 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp @@ -101,6 +101,7 @@ public: Utils::FilterLineEdit *m_lineEdit; QDeclarativeView *m_itemsView; Internal::ItemLibraryTreeView *m_resourcesView; + QWeakPointer<ItemLibraryInfo> m_itemLibraryInfo; QSize m_itemIconSize, m_resIconSize; MyFileIconProvider m_iconProvider; @@ -233,9 +234,20 @@ ItemLibrary::~ItemLibrary() delete m_d; } -void ItemLibrary::setMetaInfo(const MetaInfo &metaInfo) +void ItemLibrary::setItemLibraryInfo(ItemLibraryInfo *itemLibraryInfo) { - m_d->m_itemLibraryModel->update(metaInfo); + if (m_d->m_itemLibraryInfo.data() == itemLibraryInfo) + return; + + if (m_d->m_itemLibraryInfo) + disconnect(m_d->m_itemLibraryInfo.data(), SIGNAL(entriesChanged()), + this, SLOT(updateModel())); + m_d->m_itemLibraryInfo = itemLibraryInfo; + if (itemLibraryInfo) + connect(m_d->m_itemLibraryInfo.data(), SIGNAL(entriesChanged()), + this, SLOT(updateModel())); + + updateModel(); updateSearch(); } @@ -262,6 +274,12 @@ void ItemLibrary::setSearchFilter(const QString &searchFilter) } } +void ItemLibrary::updateModel() +{ + m_d->m_itemLibraryModel->update(m_d->m_itemLibraryInfo.data()); + updateSearch(); +} + void ItemLibrary::updateSearch() { setSearchFilter(m_d->m_lineEdit->text()); diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.h index 71f4fb6fb2b25cae048326e0d1dcaa2de9b6ce88..26637e5a40074b550edf1703bd1f043dd3eb64fb 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.h @@ -30,6 +30,7 @@ #ifndef ITEMLIBRARY_H #define ITEMLIBRARY_H +#include "itemlibraryinfo.h" #include <QtGui/QFrame> namespace QmlDesigner { @@ -47,10 +48,11 @@ public: ItemLibrary(QWidget *parent = 0); virtual ~ItemLibrary(); - void setMetaInfo(const MetaInfo &metaInfo); + void setItemLibraryInfo(ItemLibraryInfo *itemLibraryInfo); public Q_SLOTS: void setSearchFilter(const QString &searchFilter); + void updateModel(); void updateSearch(); void clearLineEditFocus(); diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp index 0ac8a3d4d6b226739d072891dcf6129abe6209f2..28764e0ad94db95fd130ac3c1ae665d8ebc08692 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp @@ -28,7 +28,7 @@ **************************************************************************/ #include "itemlibrarymodel.h" -#include "metainfo.h" +#include "itemlibraryinfo.h" #include <QVariant> #include <QMimeData> @@ -317,7 +317,6 @@ bool ItemLibrarySectionModel::operator<(const ItemLibrarySectionModel &other) co ItemLibraryModel::ItemLibraryModel(QScriptEngine *scriptEngine, QObject *parent) : ItemLibrarySortedModel<ItemLibrarySectionModel>(parent), m_scriptEngine(scriptEngine), - m_metaInfo(0), m_searchText(""), m_itemIconSize(64, 64), m_nextLibId(0) @@ -327,8 +326,6 @@ ItemLibraryModel::ItemLibraryModel(QScriptEngine *scriptEngine, QObject *parent) ItemLibraryModel::~ItemLibraryModel() { - if (m_metaInfo) - delete m_metaInfo; } @@ -387,7 +384,7 @@ bool ItemLibraryModel::isItemVisible(int itemLibId) return elementModel(sectionLibId)->isItemVisible(itemLibId); } -void ItemLibraryModel::update(const MetaInfo &metaInfo) +void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo) { QMap<QString, int> sections; @@ -396,13 +393,7 @@ void ItemLibraryModel::update(const MetaInfo &metaInfo) m_sections.clear(); m_nextLibId = 0; - if (!m_metaInfo) { - m_metaInfo = new MetaInfo(metaInfo); - } else { - *m_metaInfo = metaInfo; - } - - foreach (ItemLibraryEntry entry, metaInfo.itemLibraryInfo().entries()) { + foreach (ItemLibraryEntry entry, itemLibraryInfo->entries()) { QString itemSectionName = entry.category(); ItemLibrarySectionModel *sectionModel; ItemLibraryItemModel *itemModel; diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.h index 693680d2b8e447b6127ee4ca4eb65d3bd127c3b2..896710f41186ba5183a064fe3062705b9b56e011 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.h @@ -40,7 +40,7 @@ QT_FORWARD_DECLARE_CLASS(QMimeData); namespace QmlDesigner { -class MetaInfo; +class ItemLibraryInfo; class ItemLibraryEntry; namespace Internal { @@ -131,7 +131,7 @@ public: QString searchText() const; - void update(const MetaInfo &metaInfo); + void update(ItemLibraryInfo *itemLibraryInfo); QString getTypeName(int libId); QMimeData *getMimeData(int libId); @@ -159,7 +159,6 @@ private: QPixmap createDragPixmap(int width, int height); QWeakPointer<QScriptEngine> m_scriptEngine; - MetaInfo *m_metaInfo; QMap<int, ItemLibraryEntry> m_itemInfos; QMap<int, int> m_sections; diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index 25908d605c165710f04a27968e0209094a73b54d..94ab253a99a8e76e807636dbca8f7a5526046f24 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -186,23 +186,25 @@ NavigatorTreeModel::ItemRow NavigatorTreeModel::createItemRow(const ModelNode &n uint hash = qHash(node); + const bool dropEnabled = node.metaInfo().isValid(); + QStandardItem *idItem = new QStandardItem; idItem->setDragEnabled(true); - idItem->setDropEnabled(node.metaInfo().isValid() && node.metaInfo().isContainer()); + idItem->setDropEnabled(dropEnabled); idItem->setEditable(true); idItem->setData(hash, Qt::UserRole); #ifdef _LOCK_ITEMS_ QStandardItem *lockItem = new QStandardItem; lockItem->setDragEnabled(true); - lockItem->setDropEnabled(node.metaInfo().isContainer()); + lockItem->setDropEnabled(dropEnabled); lockItem->setEditable(false); lockItem->setCheckable(true); lockItem->setData(hash, Qt::UserRole); #endif QStandardItem *visibilityItem = new QStandardItem; - visibilityItem->setDropEnabled(node.metaInfo().isValid() && node.metaInfo().isContainer()); + visibilityItem->setDropEnabled(dropEnabled); visibilityItem->setCheckable(true); visibilityItem->setEditable(false); visibilityItem->setData(hash, Qt::UserRole); diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp index c24395efaab3afe766ad20d41d23692ee2767e64..13e61c24b00f66e4c5527df0927295a6473331b9 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp @@ -171,24 +171,24 @@ void IdItemDelegate::paint(QPainter *painter, if (icon.isNull()) { // if node has no own icon, search for it in the itemlibrary - const ItemLibraryInfo libraryInfo = node.metaInfo().metaInfo().itemLibraryInfo(); - QList <ItemLibraryEntry> infoList = libraryInfo.entriesForNodeMetaInfo(node.metaInfo()); - foreach (const ItemLibraryEntry &entry, infoList) - { - if (entry.typeName()==node.metaInfo().typeName()) { + const NodeMetaInfo typeInfo = node.metaInfo(); + const ItemLibraryInfo *libraryInfo = node.metaInfo().metaInfo().itemLibraryInfo(); + QList <ItemLibraryEntry> infoList = libraryInfo->entriesForType(typeInfo.typeName(), + typeInfo.majorVersion(), + typeInfo.minorVersion()); + foreach (const ItemLibraryEntry &entry, infoList) { + if (!icon.isNull()) { icon = entry.icon(); break; } } - - // if the library was also empty, use the default icon } } + // if the library was also empty, use the default icon if (icon.isNull()) icon = QIcon(":/ItemLibrary/images/item-default-icon.png"); - // If no icon is present, leave an empty space of 24 pixels anyway int pixmapSide = 16; QPixmap pixmap = icon.pixmap(pixmapSide, pixmapSide); diff --git a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp index 58f0b89ace64ffbf1462cba853291c2b27113ec1..5c53e588720bd81a549c6ebbe51b5cea1b6e0bf7 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp @@ -403,9 +403,16 @@ static inline QColor invertColor(const QColor color) return c; } -GradientLine::GradientLine(QWidget *parent) : QWidget(parent), m_activeColor(Qt::black), m_gradientName("gradient"), - m_dragActive(false), m_yOffset(0), m_create(false), - m_active(false), m_colorIndex(0), m_dragOff(false) +GradientLine::GradientLine(QWidget *parent) : + QWidget(parent), + m_activeColor(Qt::black), + m_gradientName("gradient"), + m_colorIndex(0), + m_dragActive(false), + m_yOffset(0), + m_create(false), + m_active(false), + m_dragOff(false) { setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); setFocusPolicy(Qt::StrongFocus); diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index 70f285ed4449070cb29df49d876c37437894969d..0c76cd254fe617fb53bb48513555ef47fdb11a88 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -461,6 +461,9 @@ void StatesEditorView::sceneChanged() } void StatesEditorView::startUpdateTimer(int i, int offset) { + if (debug) + qDebug() << __FUNCTION__ << i << offset; + if (i < 0 || i > m_modelStates.count()) return; diff --git a/src/plugins/qmldesigner/designercore/exceptions/exception.cpp b/src/plugins/qmldesigner/designercore/exceptions/exception.cpp index 976e1bf20497af8b516ee35a4051bf2efd76b8d5..8212afcfad068758862567538221f27f54473bc7 100644 --- a/src/plugins/qmldesigner/designercore/exceptions/exception.cpp +++ b/src/plugins/qmldesigner/designercore/exceptions/exception.cpp @@ -71,7 +71,7 @@ const char* demangle(const char* name) #endif -bool Exception::s_shouldAssert = true; +bool Exception::s_shouldAssert = false; void Exception::setShouldAssert(bool assert) { diff --git a/src/plugins/qmldesigner/designercore/exceptions/rewritingexception.cpp b/src/plugins/qmldesigner/designercore/exceptions/rewritingexception.cpp index b64c7f70648a69353cde94f136362d68189117c7..f0058c8f3e44a1599f05192a9368e9c62bd7e141 100644 --- a/src/plugins/qmldesigner/designercore/exceptions/rewritingexception.cpp +++ b/src/plugins/qmldesigner/designercore/exceptions/rewritingexception.cpp @@ -4,8 +4,10 @@ using namespace QmlDesigner; RewritingException::RewritingException(int line, const QString &function, - const QString &file, const QString &description): - Exception(line, function, file), m_description(description) + const QString &file, + const QString &description, + const QString &documentTextContent): + Exception(line, function, file), m_description(description), m_documentTextContent(documentTextContent) { } @@ -18,3 +20,8 @@ QString RewritingException::description() const { return m_description; } + +QString RewritingException::documentTextContent() const +{ + return m_documentTextContent; +} diff --git a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h index 2aa7042d5ea81e1d34dbcbc3d5c1e606e6cc7623..35286f2f0b81f1c7f2fa3d2497c6f4f4b6d1824d 100644 --- a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h +++ b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h @@ -32,20 +32,13 @@ #include "corelib_global.h" -#include <QExplicitlySharedDataPointer> -#include <QList> -#include <QString> -#include <QIcon> #include "propertycontainer.h" -#include <qdeclarative.h> +#include <QSharedPointer> namespace QmlDesigner { -class NodeMetaInfo; - namespace Internal { -class MetaInfoPrivate; class ItemLibraryEntryData; class ItemLibraryInfoPrivate; @@ -58,8 +51,8 @@ CORESHARED_EXPORT QDataStream& operator>>(QDataStream& stream, ItemLibraryEntry class CORESHARED_EXPORT ItemLibraryEntry { - friend class QmlDesigner::MetaInfo; - friend class QmlDesigner::Internal::MetaInfoParser; + //friend class QmlDesigner::MetaInfo; + //friend class QmlDesigner::Internal::MetaInfoParser; friend CORESHARED_EXPORT QDataStream& QmlDesigner::operator<<(QDataStream& stream, const ItemLibraryEntry &itemLibraryEntry); friend CORESHARED_EXPORT QDataStream& QmlDesigner::operator>>(QDataStream& stream, ItemLibraryEntry &itemLibraryEntry); public: @@ -82,9 +75,7 @@ public: QList<Property> properties() const; - void setTypeName(const QString &typeName); - void setMajorVersion(int majorNumber); - void setMinorVersion(int minorNumber); + void setType(const QString &typeName, int majorVersion, int minorVersion); void setName(const QString &name); void setIcon(const QIcon &icon); void addProperty(const Property &p); @@ -96,30 +87,29 @@ private: QExplicitlySharedDataPointer<Internal::ItemLibraryEntryData> m_data; }; - -class CORESHARED_EXPORT ItemLibraryInfo +class CORESHARED_EXPORT ItemLibraryInfo : public QObject { + Q_OBJECT + Q_DISABLE_COPY(ItemLibraryInfo) friend class Internal::MetaInfoPrivate; public: - ItemLibraryInfo(); - ItemLibraryInfo(const ItemLibraryInfo &other); ~ItemLibraryInfo(); - ItemLibraryInfo& operator=(const ItemLibraryInfo &other); - - bool isValid(); - QList<ItemLibraryEntry> entries() const; - QList<ItemLibraryEntry> entriesForNodeMetaInfo(const NodeMetaInfo &nodeMetaInfo) const; + QList<ItemLibraryEntry> entriesForType(const QString &typeName, int majorVersion, int minorVersion) const; ItemLibraryEntry entry(const QString &name) const; - ItemLibraryEntry addItemLibraryEntry(const NodeMetaInfo &nodeMetaInfo, const QString &itemLibraryRepresentationName); - void remove(const NodeMetaInfo &nodeMetaInfo); - void clear(); + void addEntry(const ItemLibraryEntry &entry); + bool removeEntry(const QString &name); + void clearEntries(); + +signals: + void entriesChanged(); private: - static ItemLibraryInfo createItemLibraryInfo(const ItemLibraryInfo &parentInfo); - QSharedPointer<Internal::ItemLibraryInfoPrivate> m_data; + ItemLibraryInfo(QObject *parent = 0); + void setBaseInfo(ItemLibraryInfo *baseInfo); + QScopedPointer<Internal::ItemLibraryInfoPrivate> m_d; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/include/metainfo.h b/src/plugins/qmldesigner/designercore/include/metainfo.h index e6b0ead5bd35d28b1c2650219d434ac11ca8b19a..2d4af4dbd0d3c3005af3102709241ec18cd975c4 100644 --- a/src/plugins/qmldesigner/designercore/include/metainfo.h +++ b/src/plugins/qmldesigner/designercore/include/metainfo.h @@ -74,17 +74,13 @@ public: ~MetaInfo(); MetaInfo& operator=(const MetaInfo &other); - bool hasNodeMetaInfo(const QString &typeName, int majorVersion = 4, int minorVersion = 6) const; - NodeMetaInfo nodeMetaInfo(const QString &typeName, int majorVersion = 4, int minorVersion = 6) const; - - // TODO: Move these to private - bool isSubclassOf(const QString &className, const QString &superClassName) const; - bool isSubclassOf(const ModelNode &modelNode, const QString &superClassName) const; + bool hasNodeMetaInfo(const QString &typeName, int majorVersion = -1, int minorVersion = -1) const; + NodeMetaInfo nodeMetaInfo(const QString &typeName, int majorVersion = -1, int minorVersion = -1) const; bool hasEnumerator(const QString &enumeratorName) const; EnumeratorMetaInfo enumerator(const QString &enumeratorName) const; - ItemLibraryInfo itemLibraryInfo() const; + ItemLibraryInfo *itemLibraryInfo() const; QString fromQtTypes(const QString &type) const; @@ -96,16 +92,8 @@ public: static void setPluginPaths(const QStringList &paths); private: - QStringList superClasses(const QString &className) const; - QStringList directSuperClasses(const QString &className) const; - QList<NodeMetaInfo> superClasses(const NodeMetaInfo &nodeMetaInfo) const; - QList<NodeMetaInfo> directSuperClasses(const NodeMetaInfo &nodeMetaInfo) const; - - void addSuperClassRelationship(const QString &superClassName, const QString &className); - - void addNodeInfo(NodeMetaInfo &info, const QString &baseType); + void addNodeInfo(NodeMetaInfo &info); void removeNodeInfo(NodeMetaInfo &info); - void replaceNodeInfo(NodeMetaInfo &oldInfo, NodeMetaInfo &newInfo, const QString &baseType); EnumeratorMetaInfo addEnumerator(const QString &enumeratorScope, const QString &enumeratorName); EnumeratorMetaInfo addFlag(const QString &enumeratorScope, const QString &enumeratorName); diff --git a/src/plugins/qmldesigner/designercore/include/metainfoparser.h b/src/plugins/qmldesigner/designercore/include/metainfoparser.h index 1a0877713070d2d96abdbffe55d2d7a81a136825..1b83d393e976025571bff7f1203426978b8b9d1e 100644 --- a/src/plugins/qmldesigner/designercore/include/metainfoparser.h +++ b/src/plugins/qmldesigner/designercore/include/metainfoparser.h @@ -62,7 +62,6 @@ protected: void handleFlagElement(QXmlStreamReader &reader); void handleFlagElementElement(QXmlStreamReader &reader, EnumeratorMetaInfo &enumeratorMetaInfo); void handleNodeElement(QXmlStreamReader &reader); - void handleNodeInheritElement(QXmlStreamReader &reader, const QString &className); void handleNodeItemLibraryEntryElement(QXmlStreamReader &reader, const QString &className); void handleAbstractPropertyElement(QXmlStreamReader &reader, NodeMetaInfo &nodeMetaInfo); void handleAbstractPropertyDefaultValueElement(QXmlStreamReader &reader, NodeMetaInfo &nodeMetaInfo); diff --git a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h index 3dfaa5855296602fb4a76be142db584d940920b1..b5a0ab6dce0fa2f09a4efa1aa8e92848686df853 100644 --- a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h +++ b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h @@ -82,26 +82,22 @@ public: PropertyMetaInfo property(const QString &propertyName, bool resolveDotSyntax = false) const; QList<NodeMetaInfo> superClasses() const; - QList<NodeMetaInfo> directSuperClasses() const; + NodeMetaInfo directSuperClass() const; QHash<QString,PropertyMetaInfo> properties(bool resolveDotSyntax = false) const; - QString typeName() const; int majorVersion() const; int minorVersion() const; + bool availableInVersion(int majorVersion, int minorVersion) const; + bool hasDefaultProperty() const; QString defaultProperty() const; bool hasProperty(const QString &propertyName, bool resolveDotSyntax = false) const; bool isContainer() const; - - bool isWidget() const; - bool isGraphicsWidget() const; - bool isGraphicsObject() const; - bool isQmlGraphicsItem() const; bool isComponent() const; - bool isSubclassOf(const QString& type, int majorVersion = 4, int minorVersion = 6) const; + bool isSubclassOf(const QString& type, int majorVersion, int minorVersio) const; QIcon icon() const; @@ -110,14 +106,13 @@ private: NodeMetaInfo(const MetaInfo &metaInfo); void setInvalid(); - void setTypeName(const QString &typeName); + void setType(const QString &typeName, int majorVersion, int minorVersion); void addProperty(const PropertyMetaInfo &property); void setIsContainer(bool isContainer); void setIcon(const QIcon &icon); void setQmlFile(const QString &filePath); void setDefaultProperty(const QString &defaultProperty); - void setMajorVersion(int version); - void setMinorVersion(int version); + void setSuperClass(const QString &typeName, int majorVersion = -1, int minorVersion = -1); bool hasLocalProperty(const QString &propertyName, bool resolveDotSyntax = false) const; QHash<QString,PropertyMetaInfo> dotProperties() const; diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index 570dd1f649b5102de69e992fec13824006cf3cf2..2e4cd1e0257c7fd02aab1851a24b75234f896076 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -134,6 +134,7 @@ public: TextModifier *textModifier() const; void setTextModifier(TextModifier *textModifier); + QString textModifierContent() const; Internal::ModelNodePositionStorage *positionStorage() const { return m_positionStorage; } diff --git a/src/plugins/qmldesigner/designercore/include/rewritingexception.h b/src/plugins/qmldesigner/designercore/include/rewritingexception.h index dc20adc713c3b9f855a83dc3df12b7da1b282f77..b20e16f1cb95136e52f2ca91cb5cce7939b7be66 100644 --- a/src/plugins/qmldesigner/designercore/include/rewritingexception.h +++ b/src/plugins/qmldesigner/designercore/include/rewritingexception.h @@ -10,12 +10,16 @@ class RewritingException: public Exception public: RewritingException(int line, const QString &function, - const QString &file, const QString &description); + const QString &file, + const QString &description, + const QString &documentTextContent); virtual QString type() const; virtual QString description() const; + QString documentTextContent() const; private: QString m_description; + QString m_documentTextContent; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 3ef92bfa1b77e611d6be65747f8fcf2cd90c8918..39876a08a78c240754d08d6fe68eea3b11020cfa 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -616,6 +616,7 @@ NodeInstance NodeInstanceView::loadNode(const ModelNode &node, QObject *objectTo void NodeInstanceView::activateState(const NodeInstance &instance) { + activateBaseState(); NodeInstance stateInstance(instance); stateInstance.activateState(); } diff --git a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp index f0df1560c101ad90e6fb38c45e5110033fda4feb..e52ca995d7c54c2b4bedc6a6782633ab25830245 100644 --- a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp @@ -123,13 +123,15 @@ void ObjectNodeInstance::destroy() { if (deleteHeldInstance()) { // Remove from old property - if (object() && modelNode().isValid() && modelNode().parentProperty().isValid()) { + if (object()) { setId(QString()); - NodeAbstractProperty parentProperty = modelNode().parentProperty(); - ModelNode parentNode = parentProperty.parentModelNode(); - if (parentNode.isValid() && nodeInstanceView()->hasInstanceForNode(parentNode)) { - NodeInstance parentInstance = nodeInstanceView()->instanceForNode(parentNode); - reparent(parentInstance, parentProperty.name(), NodeInstance() , QString()); + if (modelNode().isValid() && modelNode().parentProperty().isValid()) { + NodeAbstractProperty parentProperty = modelNode().parentProperty(); + ModelNode parentNode = parentProperty.parentModelNode(); + if (parentNode.isValid() && nodeInstanceView()->hasInstanceForNode(parentNode)) { + NodeInstance parentInstance = nodeInstanceView()->instanceForNode(parentNode); + reparent(parentInstance, parentProperty.name(), NodeInstance() , QString()); + } } } diff --git a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp index aa01e830caa768ce382f1b948e86f238f2e74f36..4f7c39d9db4128eb28c6ef24d93466f1b3f59cd2 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp @@ -150,7 +150,7 @@ QRectF QmlGraphicsItemNodeInstance::boundingRect() const double implicitHeight = qmlGraphicsItem()->implicitHeight(); if (!m_hasHeight - && implicitWidth // WORKAROUND + && implicitHeight // WORKAROUND && implicitHeight != qmlGraphicsItem()->height() && !modelNode().hasBindingProperty("height")) { qmlGraphicsItem()->blockSignals(true); diff --git a/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp index ea2ea618217377635c46ba070c98ef4ac0a66c02..6b301754c777ffec6a87fcfd9fe42be54dc73d2d 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp @@ -60,12 +60,16 @@ QDeclarativeStateOperation::ActionList QmlPropertyChangesObject::actions() action.fromValue = action.property.read(); if (m_expressionHash.contains(action.specifiedProperty)) { if(m_expressionHash[action.specifiedProperty].second.isNull()) { - QDeclarativeBinding *binding = new QDeclarativeBinding(m_expressionHash[action.specifiedProperty].first, targetObject(), QDeclarativeEngine::contextForObject(targetObject()), this); - binding->setTarget(action.property); - binding->setNotifyOnValueChanged(true); - action.toBinding = binding; - action.toValue = binding->evaluate(); - m_expressionHash.insert(action.specifiedProperty, ExpressionPair(m_expressionHash[action.specifiedProperty].first, binding)); + if (targetObject()) { + QDeclarativeBinding *binding = new QDeclarativeBinding(m_expressionHash[action.specifiedProperty].first, targetObject(), QDeclarativeEngine::contextForObject(targetObject()), this); + binding->setTarget(action.property); + binding->setNotifyOnValueChanged(true); + action.toBinding = binding; + action.toValue = binding->evaluate(); + m_expressionHash.insert(action.specifiedProperty, ExpressionPair(m_expressionHash[action.specifiedProperty].first, binding)); + } else { + action.toBinding = 0; + } } else { action.toBinding = m_expressionHash[action.specifiedProperty].second.data(); action.toValue = m_expressionHash[action.specifiedProperty].second->evaluate(); @@ -85,6 +89,9 @@ QObject *QmlPropertyChangesObject::targetObject() const void QmlPropertyChangesObject::setTargetObject(QObject *object) { + if (m_targetObject.data() == object) + return; + QMutableListIterator<QDeclarativeAction> actionIterator(m_qmlActionList); while (actionIterator.hasNext()) { QDeclarativeAction &qmlAction = actionIterator.next(); @@ -92,9 +99,10 @@ void QmlPropertyChangesObject::setTargetObject(QObject *object) if (isActive()) { QDeclarativePropertyPrivate::setBinding(qmlAction.property, 0, QDeclarativePropertyPrivate::DontRemoveBinding| QDeclarativePropertyPrivate::BypassInterceptor); qmlAction.property.write(qmlAction.fromValue); + m_expressionHash[qmlAction.specifiedProperty].second.data()->destroy(); } - m_expressionHash[qmlAction.specifiedProperty].second.data()->destroy(); + qmlAction.toBinding = 0; } diff --git a/src/plugins/qmldesigner/designercore/instances/qmlstatenodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/qmlstatenodeinstance.cpp index 9713fc8540940416afce5cdb634ae274eb19a02a..bf7103c467dd744d90daad67f18e69f9fb4d4fad 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlstatenodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/qmlstatenodeinstance.cpp @@ -69,9 +69,10 @@ QmlStateNodeInstance::Pointer void QmlStateNodeInstance::activateState() { if (stateGroup()) { - if (!isStateActive()) + if (!isStateActive()) { nodeInstanceView()->setStateInstance(nodeInstanceView()->instanceForNode(modelNode())); stateGroup()->setState(property("name").toString()); + } } } diff --git a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp index 15f681ea74945335db4bb9b846a797346df524dd..c640c77b769f9b987a0af8c7e5d28fe9b2122e6f 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp @@ -55,13 +55,9 @@ public: class ItemLibraryInfoPrivate { public: - typedef QSharedPointer<ItemLibraryInfoPrivate> Pointer; - typedef QSharedPointer<ItemLibraryInfoPrivate> WeakPointer; + QHash<QString, ItemLibraryEntry> nameToEntryHash; - QMultiHash<NodeMetaInfo, ItemLibraryEntry> itemLibraryInfoHash; - QHash<QString, ItemLibraryEntry> itemLibraryInfoHashAll; - - Pointer parentData; + QWeakPointer<ItemLibraryInfo> baseInfo; }; } // namespace Internal @@ -157,9 +153,11 @@ void ItemLibraryEntry::setName(const QString &name) m_data->name = name; } -void ItemLibraryEntry::setTypeName(const QString &typeName) +void ItemLibraryEntry::setType(const QString &typeName, int majorVersion, int minorVersion) { m_data->typeName = typeName; + m_data->majorVersion = majorVersion; + m_data->minorVersion = minorVersion; } void ItemLibraryEntry::setIcon(const QIcon &icon) @@ -167,16 +165,6 @@ void ItemLibraryEntry::setIcon(const QIcon &icon) m_data->icon = icon; } -void ItemLibraryEntry::setMajorVersion(int majorVersion) -{ - m_data->majorVersion = majorVersion; -} - -void ItemLibraryEntry::setMinorVersion(int minorVersion) -{ - m_data->minorVersion = minorVersion; -} - void ItemLibraryEntry::setQml(const QString &qml) { m_data->qml = qml; @@ -221,13 +209,9 @@ QDataStream& operator>>(QDataStream& stream, ItemLibraryEntry &itemLibraryEntry) // ItemLibraryInfo // -ItemLibraryInfo::ItemLibraryInfo(const ItemLibraryInfo &other) : - m_data(other.m_data) -{ -} - -ItemLibraryInfo::ItemLibraryInfo() : - m_data(new Internal::ItemLibraryInfoPrivate()) +ItemLibraryInfo::ItemLibraryInfo(QObject *parent) : + QObject(parent), + m_d(new Internal::ItemLibraryInfoPrivate()) { } @@ -235,85 +219,72 @@ ItemLibraryInfo::~ItemLibraryInfo() { } -ItemLibraryInfo& ItemLibraryInfo::operator=(const ItemLibraryInfo &other) -{ - m_data = other.m_data; - return *this; -} - -bool ItemLibraryInfo::isValid() +QList<ItemLibraryEntry> ItemLibraryInfo::entriesForType(const QString &typeName, int majorVersion, int minorVersion) const { - return m_data; -} + QList<ItemLibraryEntry> entries; -ItemLibraryInfo ItemLibraryInfo::createItemLibraryInfo(const ItemLibraryInfo &parentInfo) -{ - ItemLibraryInfo info; - Q_ASSERT(parentInfo.m_data); - info.m_data->parentData = parentInfo.m_data; - return info; -} + foreach (const ItemLibraryEntry &entry, m_d->nameToEntryHash.values()) { + if (entry.typeName() == typeName + && entry.majorVersion() == majorVersion + && entry.minorVersion() == minorVersion) + entries += entry; + } -QList<ItemLibraryEntry> ItemLibraryInfo::entriesForNodeMetaInfo(const NodeMetaInfo &nodeMetaInfo) const -{ - QList<ItemLibraryEntry> itemLibraryItems; + if (m_d->baseInfo) + entries += m_d->baseInfo->entriesForType(typeName, majorVersion, minorVersion); - Internal::ItemLibraryInfoPrivate::WeakPointer pointer(m_data); - while (pointer) { - itemLibraryItems += pointer->itemLibraryInfoHash.values(nodeMetaInfo); - pointer = pointer->parentData; - } - return itemLibraryItems; + return entries; } ItemLibraryEntry ItemLibraryInfo::entry(const QString &name) const { - Internal::ItemLibraryInfoPrivate::WeakPointer pointer(m_data); - while (pointer) { - if (pointer->itemLibraryInfoHashAll.contains(name)) - return pointer->itemLibraryInfoHashAll.value(name); - pointer = pointer->parentData; - } + if (m_d->nameToEntryHash.contains(name)) + return m_d->nameToEntryHash.value(name); + + if (m_d->baseInfo) + return m_d->baseInfo->entry(name); return ItemLibraryEntry(); } - QList<ItemLibraryEntry> ItemLibraryInfo::entries() const { - QList<ItemLibraryEntry> list; - - Internal::ItemLibraryInfoPrivate::WeakPointer pointer(m_data); - while (pointer) { - list += pointer->itemLibraryInfoHashAll.values(); - pointer = pointer->parentData; - } + QList<ItemLibraryEntry> list = m_d->nameToEntryHash.values(); + if (m_d->baseInfo) + list += m_d->baseInfo->entries(); return list; } -ItemLibraryEntry ItemLibraryInfo::addItemLibraryEntry(const NodeMetaInfo &nodeMetaInfo, - const QString &itemLibraryRepresentationName) +void ItemLibraryInfo::addEntry(const ItemLibraryEntry &entry) +{ + if (m_d->nameToEntryHash.contains(entry.name())) + throw InvalidMetaInfoException(__LINE__, __FUNCTION__, __FILE__); + m_d->nameToEntryHash.insert(entry.name(), entry); + + emit entriesChanged(); +} + +bool ItemLibraryInfo::removeEntry(const QString &name) { - ItemLibraryEntry itemLibraryType; - itemLibraryType.setName(itemLibraryRepresentationName); - itemLibraryType.setTypeName(nodeMetaInfo.typeName()); - itemLibraryType.setMajorVersion(nodeMetaInfo.majorVersion()); - itemLibraryType.setMinorVersion(nodeMetaInfo.minorVersion()); - m_data->itemLibraryInfoHash.insert(nodeMetaInfo, itemLibraryType); - m_data->itemLibraryInfoHashAll.insert(itemLibraryRepresentationName, itemLibraryType); - return itemLibraryType; + if (m_d->nameToEntryHash.remove(name)) { + emit entriesChanged(); + return true; + } + if (m_d->baseInfo) + return m_d->baseInfo->removeEntry(name); + + return false; } -void ItemLibraryInfo::remove(const NodeMetaInfo &info) +void ItemLibraryInfo::clearEntries() { - m_data->itemLibraryInfoHash.remove(info); - m_data->itemLibraryInfoHashAll.remove(info.typeName()); + m_d->nameToEntryHash.clear(); + emit entriesChanged(); } -void ItemLibraryInfo::clear() +void ItemLibraryInfo::setBaseInfo(ItemLibraryInfo *baseInfo) { - m_data->itemLibraryInfoHash.clear(); - m_data->itemLibraryInfoHashAll.clear(); + m_d->baseInfo = baseInfo; } } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp index 1c79dca045eacd56a235121d85f83270a3149dac..724f3780daf49da998230d0461f0f662b29c2234 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp @@ -71,7 +71,7 @@ public: void parseQmlTypes(); void parseNonQmlTypes(); void parseValueTypes(); - void parseNonQmlClassRecursively(const QMetaObject *qMetaObject); + void parseNonQmlClassRecursively(const QMetaObject *qMetaObject, int majorVersion, int minorVersion); void parseProperties(NodeMetaInfo &nodeMetaInfo, const QMetaObject *qMetaObject) const; void parseClassInfo(NodeMetaInfo &nodeMetaInfo, const QMetaObject *qMetaObject) const; @@ -79,30 +79,29 @@ public: void parseXmlFiles(); - QMultiHash<QString, QString> m_superClassHash; // the list of direct superclasses - QHash<QString, NodeMetaInfo> m_nodeMetaInfoHash; + QMultiHash<QString, NodeMetaInfo> m_nodeMetaInfoHash; QHash<QString, EnumeratorMetaInfo> m_enumeratorMetaInfoHash; QHash<QString, QString> m_QtTypesToQmlTypes; - ItemLibraryInfo m_itemLibraryInfo; + QScopedPointer<ItemLibraryInfo> m_itemLibraryInfo; MetaInfo *m_q; bool m_isInitialized; }; MetaInfoPrivate::MetaInfoPrivate(MetaInfo *q) : + m_itemLibraryInfo(new ItemLibraryInfo()), m_q(q), m_isInitialized(false) { if (!m_q->isGlobal()) - m_itemLibraryInfo = ItemLibraryInfo::createItemLibraryInfo(m_q->global().itemLibraryInfo()); + m_itemLibraryInfo->setBaseInfo(MetaInfo::global().itemLibraryInfo()); } void MetaInfoPrivate::clear() { - m_superClassHash.clear(); m_nodeMetaInfoHash.clear(); m_enumeratorMetaInfoHash.clear(); - m_itemLibraryInfo.clear(); + m_itemLibraryInfo->clearEntries(); m_isInitialized = false; } @@ -188,7 +187,7 @@ void MetaInfoPrivate::parseClassInfo(NodeMetaInfo &nodeMetaInfo, const QMetaObje } } -void MetaInfoPrivate::parseNonQmlClassRecursively(const QMetaObject *qMetaObject) +void MetaInfoPrivate::parseNonQmlClassRecursively(const QMetaObject *qMetaObject, int majorVersion, int minorVersion) { Q_ASSERT_X(qMetaObject, Q_FUNC_INFO, "invalid QMetaObject"); const QString className = qMetaObject->className(); @@ -198,20 +197,22 @@ void MetaInfoPrivate::parseNonQmlClassRecursively(const QMetaObject *qMetaObject return; } - if ( !m_q->hasNodeMetaInfo(className) - && !QDeclarativeMetaType::qmlTypeNames().contains(typeName(qMetaObject).toAscii()) ) { + if (!m_q->hasNodeMetaInfo(typeName(qMetaObject), majorVersion, minorVersion)) { NodeMetaInfo nodeMetaInfo(*m_q); - nodeMetaInfo.setTypeName(typeName(qMetaObject)); + nodeMetaInfo.setType(typeName(qMetaObject), majorVersion, minorVersion); parseProperties(nodeMetaInfo, qMetaObject); parseClassInfo(nodeMetaInfo, qMetaObject); if (debug) - qDebug() << "adding non qml type" << className << typeName(qMetaObject) << ", parent type" << typeName(qMetaObject->superClass()); - m_q->addNodeInfo(nodeMetaInfo, typeName(qMetaObject->superClass())); + qDebug() << "adding non qml type" << nodeMetaInfo.typeName() << nodeMetaInfo.majorVersion() << nodeMetaInfo.minorVersion() << ", parent type" << typeName(qMetaObject->superClass()); + if (qMetaObject->superClass()) + nodeMetaInfo.setSuperClass(typeName(qMetaObject->superClass())); + + m_q->addNodeInfo(nodeMetaInfo); } if (const QMetaObject *superClass = qMetaObject->superClass()) { - parseNonQmlClassRecursively(superClass); + parseNonQmlClassRecursively(superClass, majorVersion, minorVersion); } } @@ -246,7 +247,7 @@ void MetaInfoPrivate::parseValueTypes() foreach (const QString &type, valueTypes) { NodeMetaInfo nodeMetaInfo(*m_q); - nodeMetaInfo.setTypeName(type); + nodeMetaInfo.setType(type, -1, -1); foreach (const QString &propertyName, VariantParser::create(type).properties()) { PropertyMetaInfo propertyInfo; propertyInfo.setName(propertyName); @@ -284,7 +285,7 @@ void MetaInfoPrivate::parseValueTypes() } if (debug) qDebug() << "adding value type" << nodeMetaInfo.typeName(); - m_q->addNodeInfo(nodeMetaInfo, QString()); + m_q->addNodeInfo(nodeMetaInfo); } } @@ -303,9 +304,7 @@ void MetaInfoPrivate::parseQmlTypes() continue; NodeMetaInfo nodeMetaInfo(*m_q); - nodeMetaInfo.setTypeName(qmlType->qmlTypeName()); - nodeMetaInfo.setMajorVersion(qmlType->majorVersion()); - nodeMetaInfo.setMinorVersion(qmlType->minorVersion()); + nodeMetaInfo.setType(qmlType->qmlTypeName(), qmlType->majorVersion(), qmlType->minorVersion()); parseProperties(nodeMetaInfo, qMetaObject); parseClassInfo(nodeMetaInfo, qMetaObject); @@ -318,7 +317,11 @@ void MetaInfoPrivate::parseQmlTypes() superTypeName = typeName(qmlType->baseMetaObject()->superClass()); } - m_q->addNodeInfo(nodeMetaInfo, superTypeName); + nodeMetaInfo.setSuperClass(superTypeName); + + if (debug) + qDebug() << "adding qml type" << nodeMetaInfo.typeName() << nodeMetaInfo.majorVersion() << nodeMetaInfo.minorVersion() << "super class" << superTypeName; + m_q->addNodeInfo(nodeMetaInfo); } } @@ -326,10 +329,10 @@ void MetaInfoPrivate::parseNonQmlTypes() { foreach (QDeclarativeType *qmlType, QDeclarativeMetaType::qmlTypes()) { if (!qmlType->qmlTypeName().contains("Bauhaus")) - parseNonQmlClassRecursively(qmlType->metaObject()); + parseNonQmlClassRecursively(qmlType->metaObject(), qmlType->majorVersion(), qmlType->minorVersion()); } - parseNonQmlClassRecursively(&QDeclarativeAnchors::staticMetaObject); + parseNonQmlClassRecursively(&QDeclarativeAnchors::staticMetaObject, -1, -1); } @@ -411,10 +414,13 @@ MetaInfo& MetaInfo::operator=(const MetaInfo &other) /*! \brief Returns whether a type with the given name is registered in the meta system. */ -bool MetaInfo::hasNodeMetaInfo(const QString &typeName, int /*majorVersion*/, int /*minorVersion*/) const +bool MetaInfo::hasNodeMetaInfo(const QString &typeName, int majorVersion, int minorVersion) const { - if (m_p->m_nodeMetaInfoHash.contains(typeName)) - return true; + foreach (const NodeMetaInfo &info, m_p->m_nodeMetaInfoHash.values(typeName)) { + if (info.availableInVersion(majorVersion, minorVersion)) { + return true; + } + } if (!isGlobal()) return global().hasNodeMetaInfo(typeName); return false; @@ -423,75 +429,20 @@ bool MetaInfo::hasNodeMetaInfo(const QString &typeName, int /*majorVersion*/, in /*! \brief Returns meta information for a qml type. An invalid NodeMetaInfo object if the type is unknown. */ -NodeMetaInfo MetaInfo::nodeMetaInfo(const QString &typeName, int /*majorVersion*/, int /*minorVersion*/) const +NodeMetaInfo MetaInfo::nodeMetaInfo(const QString &typeName, int majorVersion, int minorVersion) const { - if (m_p->m_nodeMetaInfoHash.contains(typeName)) - return m_p->m_nodeMetaInfoHash.value(typeName, NodeMetaInfo()); + foreach (const NodeMetaInfo &info, m_p->m_nodeMetaInfoHash.values(typeName)) { + // todo: The order for different types for different versions is random here. + if (info.availableInVersion(majorVersion, minorVersion)) { + return info; + } + } if (!isGlobal()) return global().nodeMetaInfo(typeName); return NodeMetaInfo(); } -QStringList MetaInfo::superClasses(const QString &className) const -{ - QStringList ancestorList = m_p->m_superClassHash.values(className); - foreach (const QString &ancestor, ancestorList) { - QStringList superClassList = superClasses(ancestor); - if (!superClassList.isEmpty()) - ancestorList += superClassList; - } - if (!isGlobal()) - ancestorList += global().superClasses(className); - return ancestorList; -} - -QStringList MetaInfo::directSuperClasses(const QString &className) const -{ - QStringList directAncestorList = m_p->m_superClassHash.values(className); - if (!isGlobal()) - directAncestorList += global().directSuperClasses(className); - return directAncestorList; -} - -QList<NodeMetaInfo> MetaInfo::superClasses(const NodeMetaInfo &nodeInfo) const -{ - if (!nodeInfo.isValid()) { - qWarning() << "NodeMetaInfo is invalid"; - return QList<NodeMetaInfo>(); - } - - QList<NodeMetaInfo> superClassList; - - foreach (const QString &typeName, superClasses(nodeInfo.typeName())) { - if (!hasNodeMetaInfo(typeName)) - continue; - const NodeMetaInfo superClass = nodeMetaInfo(typeName); - if (!superClassList.contains(superClass)) - superClassList.append(superClass); - } - return superClassList; -} - -QList<NodeMetaInfo> MetaInfo::directSuperClasses(const NodeMetaInfo &nodeInfo) const -{ - if (!nodeInfo.isValid()) { - qWarning() << "NodeMetaInfo is invalid"; - return QList<NodeMetaInfo>(); - } - - QList<NodeMetaInfo> superClassList; - - foreach (const QString &typeName, directSuperClasses(nodeInfo.typeName())) { - if (!hasNodeMetaInfo(typeName)) - continue; - const NodeMetaInfo superClass = nodeMetaInfo(typeName); - if (!superClassList.contains(superClass)) - superClassList.append(superClass); - } - return superClassList; -} - QString MetaInfo::fromQtTypes(const QString &type) const { if (m_p->m_QtTypesToQmlTypes.contains(type)) @@ -500,27 +451,6 @@ QString MetaInfo::fromQtTypes(const QString &type) const return type; } -/*! - \brief Returns whether className is the same type or a type derived from superClassName. - */ -bool MetaInfo::isSubclassOf(const QString &className, const QString &superClassName) const -{ - return (className == superClassName) || superClasses(className).contains(superClassName); -} - -/*! - \brief Returns whether the type of modelNode is the same type or a type derived from superClassName. - \throws InvalidModelNode if !modelNode.isValid() - */ -bool MetaInfo::isSubclassOf(const ModelNode &modelNode, const QString &superClassName) const -{ - if (!modelNode.isValid()) { - Q_ASSERT_X(modelNode.isValid(), Q_FUNC_INFO, "Invalid modelNode argument"); - throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); - } - return (modelNode.type() == superClassName) || isSubclassOf(modelNode.type(), superClassName); -} - /*! \brief Returns whether an enumerator is registered in the meta type system. */ @@ -542,9 +472,9 @@ EnumeratorMetaInfo MetaInfo::enumerator(const QString &enumeratorName) const return EnumeratorMetaInfo(); } -ItemLibraryInfo MetaInfo::itemLibraryInfo() const +ItemLibraryInfo *MetaInfo::itemLibraryInfo() const { - return m_p->m_itemLibraryInfo; + return m_p->m_itemLibraryInfo.data(); } /*! @@ -580,28 +510,13 @@ void MetaInfo::setPluginPaths(const QStringList &paths) s_pluginDirs = paths; } -/*! - This bypasses the notifications to the model that the metatype has changed. - Use MetaInfo::addNodeInfo() instead - */ -void MetaInfo::addSuperClassRelationship(const QString &superClassName, const QString &className) -{ - m_p->m_superClassHash.insert(className, superClassName); -} - -void MetaInfo::addNodeInfo(NodeMetaInfo &nodeInfo, const QString &baseType) +void MetaInfo::addNodeInfo(NodeMetaInfo &nodeInfo) { if (nodeInfo.typeName().isEmpty() || nodeInfo.metaInfo() != *this) throw new InvalidArgumentException(__LINE__, __FUNCTION__, __FILE__, QLatin1String("nodeInfo")); - if (nodeInfo.typeName() == baseType) // prevent simple recursion - throw new InvalidArgumentException(__LINE__, __FUNCTION__, __FILE__, QLatin1String("baseType")); - - m_p->m_nodeMetaInfoHash.insert(nodeInfo.typeName(), nodeInfo); - if (!baseType.isEmpty()) { - m_p->m_superClassHash.insert(nodeInfo.typeName(), baseType); - } + m_p->m_nodeMetaInfoHash.insertMulti(nodeInfo.typeName(), nodeInfo); } void MetaInfo::removeNodeInfo(NodeMetaInfo &info) @@ -611,12 +526,13 @@ void MetaInfo::removeNodeInfo(NodeMetaInfo &info) return; } - if (m_p->m_nodeMetaInfoHash.contains(info.typeName())) { - m_p->m_nodeMetaInfoHash.remove(info.typeName()); + if (m_p->m_nodeMetaInfoHash.contains(info.typeName()) + && m_p->m_nodeMetaInfoHash.remove(info.typeName(), info)) { - m_p->m_superClassHash.remove(info.typeName()); - // TODO: Other types might specify type as parent type - m_p->m_itemLibraryInfo.remove(info); + foreach (const ItemLibraryEntry &entry, + m_p->m_itemLibraryInfo->entriesForType(info.typeName(), info.majorVersion(), info.minorVersion())) { + m_p->m_itemLibraryInfo->removeEntry(entry.name()); + } } else if (!isGlobal()) { global().removeNodeInfo(info); @@ -627,11 +543,6 @@ void MetaInfo::removeNodeInfo(NodeMetaInfo &info) info.setInvalid(); } -void MetaInfo::replaceNodeInfo(NodeMetaInfo & /*oldInfo*/, NodeMetaInfo & /*newInfo*/, const QString & /*baseType*/) -{ - // TODO -} - EnumeratorMetaInfo MetaInfo::addEnumerator(const QString &enumeratorScope, const QString &enumeratorName) { Q_ASSERT(!enumeratorName.isEmpty()); diff --git a/src/plugins/qmldesigner/designercore/metainfo/metainfoparser.cpp b/src/plugins/qmldesigner/designercore/metainfo/metainfoparser.cpp index 6b899b73eb347cb4f573a5d625bf3a753771f1e7..216ba28dd37b239c4eab40711d594e2962ff836a 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/metainfoparser.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/metainfoparser.cpp @@ -187,7 +187,6 @@ void MetaInfoParser::handleNodeElement(QXmlStreamReader &reader) while (!reader.atEnd() && !(reader.isEndElement() && reader.name() == "node")) { reader.readNext(); - handleNodeInheritElement(reader, className); handleAbstractPropertyElement(reader, nodeMetaInfo); handleAbstractPropertyDefaultValueElement(reader, nodeMetaInfo); handleNodeItemLibraryEntryElement(reader, className); @@ -198,32 +197,27 @@ void MetaInfoParser::handleNodeItemLibraryEntryElement(QXmlStreamReader &reader, { if (reader.isStartElement() && reader.name() == "itemlibraryentry") { - QString name = reader.attributes().value("name").toString(); - ItemLibraryEntry itemLibraryEntry = m_metaInfo.itemLibraryInfo().addItemLibraryEntry(m_metaInfo.nodeMetaInfo(className), name); + const QString name = reader.attributes().value("name").toString(); + const NodeMetaInfo typeInfo = m_metaInfo.nodeMetaInfo(className); + + ItemLibraryEntry entry; + entry.setType(typeInfo.typeName(), typeInfo.majorVersion(), typeInfo.minorVersion()); + entry.setName(name); QString iconPath = reader.attributes().value("icon").toString(); if (!iconPath.isEmpty()) - itemLibraryEntry.setIcon(QIcon(iconPath)); + entry.setIcon(QIcon(iconPath)); QString category = reader.attributes().value("category").toString(); if (!category.isEmpty()) - itemLibraryEntry.setCategory(category); + entry.setCategory(category); while (!reader.atEnd() && !(reader.isEndElement() && reader.name() == "itemlibraryentry")) { reader.readNext(); - handleItemLibraryEntryPropertyElement(reader, itemLibraryEntry); + handleItemLibraryEntryPropertyElement(reader, entry); } - } -} -void MetaInfoParser::handleNodeInheritElement(QXmlStreamReader &reader, const QString &className) -{ - if (reader.isStartElement() && reader.name() == "inherits") - { - QString superClassName = reader.attributes().value("name").toString(); - Q_ASSERT(!superClassName.isEmpty()); - m_metaInfo.addSuperClassRelationship(superClassName, className); - reader.readNext(); + m_metaInfo.itemLibraryInfo()->addEntry(entry); } } diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index d4f60bee8ccfa51e21e30d354160732521482fe1..a7891745f6712c27b43108faf56ee189281829cc 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -76,6 +76,11 @@ public: QString category; QString qmlFile; QString defaultProperty; + + QString superClassType; + int superClassMajorVersion; + int superClassMinorVersion; + int majorVersion; int minorVersion; }; @@ -179,7 +184,7 @@ QObject *NodeMetaInfo::createInstance(QDeclarativeContext *context) const newContext->setParent(object); } else { // primitive - object = QDeclarativeMetaType::qmlType(typeName().toAscii(), minorVersion(), majorVersion())->create(); + object = QDeclarativeMetaType::qmlType(typeName().toAscii(), majorVersion(), minorVersion())->create(); if (object && context) QDeclarativeEngine::setContextForObject(object, context); } @@ -198,22 +203,39 @@ QList<NodeMetaInfo> NodeMetaInfo::superClasses() const return QList<NodeMetaInfo>(); } - return m_data->metaInfo.superClasses(*this); + QList<NodeMetaInfo> types; + + NodeMetaInfo superType = directSuperClass(); + if (superType.isValid()) { + types += superType; + types += superType.superClasses(); + } + + return types; } /*! - \brief Returns direct ancestor types. - - \throws InvalidMetaInfoException if the object is not valid + \brief Returns direct ancestor type. An invalid type if there is none. */ -QList<NodeMetaInfo> NodeMetaInfo::directSuperClasses() const +NodeMetaInfo NodeMetaInfo::directSuperClass() const { if (!isValid()) { qWarning() << "NodeMetaInfo is invalid"; - return QList<NodeMetaInfo>(); + return NodeMetaInfo(); } - return m_data->metaInfo.directSuperClasses(*this); + if (!m_data->superClassType.isEmpty()) { + int superClassMajorVersion = m_data->superClassMajorVersion; + int superClassMinorVersion = m_data->superClassMinorVersion; + if (superClassMajorVersion == -1) { + // If we don't know the version of the super type, assume that it's the same like our version. + superClassMajorVersion = majorVersion(); + superClassMinorVersion = minorVersion(); + } + return m_data->metaInfo.nodeMetaInfo(m_data->superClassType, + superClassMajorVersion, superClassMinorVersion); + } + return NodeMetaInfo(); } /*! @@ -225,7 +247,7 @@ QList<NodeMetaInfo> NodeMetaInfo::directSuperClasses() const \throws InvalidMetaInfoException if the object is not valid */ -QHash<QString,PropertyMetaInfo> NodeMetaInfo::properties(bool resolveDotSyntax ) const +QHash<QString,PropertyMetaInfo> NodeMetaInfo::properties(bool resolveDotSyntax) const { if (!isValid()) { qWarning() << "NodeMetaInfo is invalid"; @@ -234,7 +256,8 @@ QHash<QString,PropertyMetaInfo> NodeMetaInfo::properties(bool resolveDotSyntax ) QHash<QString,PropertyMetaInfo> propertiesInfo; propertiesInfo = m_data->propertyMetaInfoHash; - foreach (const NodeMetaInfo &nodeInfo, directSuperClasses()) { + + foreach (const NodeMetaInfo &nodeInfo, superClasses()) { QHash<QString,PropertyMetaInfo> superClassProperties = nodeInfo.properties(); QHashIterator<QString,PropertyMetaInfo> iter(superClassProperties); while (iter.hasNext()) { @@ -318,7 +341,7 @@ PropertyMetaInfo NodeMetaInfo::property(const QString &propertyName, bool resolv propertyType = propertyType.left(propertyType.size() - 1).trimmed(); nodeInfo = m_data->metaInfo.nodeMetaInfo(m_data->metaInfo.fromQtTypes(propertyType), majorVersion(), minorVersion()); if (!nodeInfo.isValid()) { - qDebug() << "no type info available for" << propertyType; + qWarning() << "no type info available for" << propertyType; break; } } @@ -330,7 +353,7 @@ PropertyMetaInfo NodeMetaInfo::property(const QString &propertyName, bool resolv if (hasLocalProperty(propertyName)) { propertyMetaInfo = m_data->propertyMetaInfoHash.value(propertyName, PropertyMetaInfo()); } else { - foreach (const NodeMetaInfo &superTypeMetaInfo, directSuperClasses()) { + foreach (const NodeMetaInfo &superTypeMetaInfo, superClasses()) { Q_ASSERT(superTypeMetaInfo.isValid()); propertyMetaInfo = superTypeMetaInfo.property(propertyName); if (propertyMetaInfo.isValid()) @@ -373,7 +396,7 @@ bool NodeMetaInfo::hasLocalProperty(const QString &propertyName, bool resolveDot propertyType = propertyType.left(propertyType.size() - 1).trimmed(); nodeInfo = m_data->metaInfo.nodeMetaInfo(m_data->metaInfo.fromQtTypes(propertyType), majorVersion(), minorVersion()); if (!nodeInfo.isValid()) { - qDebug() << "no type info available for" << propertyType; + qWarning() << "no type info available for" << propertyType; break; } } @@ -399,10 +422,8 @@ bool NodeMetaInfo::hasProperty(const QString &propertyName, bool resolveDotSynta if (hasLocalProperty(propertyName, resolveDotSyntax)) return true; - foreach (const NodeMetaInfo &nodeMetaInfo, directSuperClasses()) { - if (nodeMetaInfo.hasProperty(propertyName, resolveDotSyntax)) - return true; - } + if (directSuperClass().hasProperty(propertyName, resolveDotSyntax)) + return true; return false; } @@ -443,7 +464,7 @@ int NodeMetaInfo::majorVersion() const return -1; } - return 4; + return m_data->majorVersion; } @@ -461,6 +482,13 @@ int NodeMetaInfo::minorVersion() const return m_data->minorVersion; } +bool NodeMetaInfo::availableInVersion(int majorVersion, int minorVersion) const +{ + return ((majorVersion > m_data->majorVersion) + || (majorVersion == m_data->majorVersion && minorVersion >= m_data->minorVersion)) + || (majorVersion == -1 && minorVersion == -1); +} + bool NodeMetaInfo::hasDefaultProperty() const { if (!isValid()) { @@ -488,14 +516,14 @@ void NodeMetaInfo::setDefaultProperty(const QString &defaultProperty) m_data->defaultProperty = defaultProperty; } -void NodeMetaInfo::setMajorVersion(int version) -{ - m_data->majorVersion = version; -} - -void NodeMetaInfo::setMinorVersion(int version) +void NodeMetaInfo::setSuperClass(const QString &typeName, int majorVersion, int minorVersion) { - m_data->minorVersion = version; + if (!isValid()) { + return; + } + m_data->superClassType = typeName; + m_data->superClassMajorVersion = majorVersion; + m_data->superClassMinorVersion = minorVersion; } void NodeMetaInfo::setInvalid() @@ -506,13 +534,15 @@ void NodeMetaInfo::setInvalid() m_data = 0; } -void NodeMetaInfo::setTypeName(const QString &typeName) +void NodeMetaInfo::setType(const QString &typeName, int majorVersion, int minorVersion) { if (!isValid()) { qWarning() << "NodeMetaInfo is invalid"; return; } m_data->typeName = typeName; + m_data->majorVersion = majorVersion; + m_data->minorVersion = minorVersion; } uint qHash(const NodeMetaInfo &nodeMetaInfo) @@ -572,67 +602,6 @@ void NodeMetaInfo::setIcon(const QIcon &icon) m_data->icon = icon; } -/*! - \brief Returns whether the type inherits from "QWidget". - - \throws InvalidMetaInfoException if the object is not valid - */ -bool NodeMetaInfo::isWidget() const -{ - if (!isValid()) { - qWarning() << "NodeMetaInfo is invalid"; - return false; - } - return m_data->metaInfo.isSubclassOf(m_data->typeName, "Qt/QWidget"); -} - -/*! - \brief Returns whether the type inherits from "QGraphicsWidget". - - \throws InvalidMetaInfoException if the object is not valid - */ -bool NodeMetaInfo::isGraphicsWidget() const -{ - if (!isValid()) { - qWarning() << "NodeMetaInfo is invalid"; - return false; - } - return m_data->metaInfo.isSubclassOf(m_data->typeName, "Qt/QGraphicsWidget"); -} - -/*! - \brief Returns whether the type inherits from "QGraphicsObject". - - \throws InvalidMetaInfoException if the object is not valid - */ -bool NodeMetaInfo::isGraphicsObject() const -{ - if (!isValid()) { - qWarning() << "NodeMetaInfo is invalid"; - return false; - } - return m_data->metaInfo.isSubclassOf(m_data->typeName, "QGraphicsObject"); -} - -/*! - \brief Returns whether the type inherits from "Item/QDeclarativeItem". - - \throws InvalidMetaInfoException if the object is not valid - */ -bool NodeMetaInfo::isQmlGraphicsItem() const -{ - if (!isValid()) { - qWarning() << "NodeMetaInfo is invalid"; - return false; - } - - if (m_data->isFXItem == Internal::NodeMetaInfoData::Unknown) { - m_data->isFXItem = m_data->metaInfo.isSubclassOf(m_data->typeName, "Qt/Item") ? Internal::NodeMetaInfoData::Yes : Internal::NodeMetaInfoData::No; - } - - return m_data->isFXItem == Internal::NodeMetaInfoData::Yes; -} - bool NodeMetaInfo::isComponent() const { if (!isValid()) { @@ -648,13 +617,23 @@ bool NodeMetaInfo::isComponent() const \throws InvalidMetaInfoException if the object is not valid */ -bool NodeMetaInfo::isSubclassOf(const QString &type, int /*majorVersion*/, int /*minorVersion*/) const +bool NodeMetaInfo::isSubclassOf(const QString &type, int majorVersion, int minorVersion) const { if (!isValid()) { qWarning() << "NodeMetaInfo is invalid"; return false; } - return m_data->metaInfo.isSubclassOf(m_data->typeName, type); + + if (typeName() == type + && availableInVersion(majorVersion, minorVersion)) + return true; + + foreach (const NodeMetaInfo &superClass, superClasses()) { + if (superClass.typeName() == type + && superClass.availableInVersion(majorVersion, minorVersion)) + return true; + } + return false; } void NodeMetaInfo::setQmlFile(const QString &filePath) diff --git a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp index 8bae3ebba174ab5fbc86fc654f6971589545aae8..3f6330f412206ee0b2cdfae2191a67d255860db7 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp @@ -295,18 +295,21 @@ void SubComponentManagerPrivate::registerQmlFile(const QFileInfo &fileInfo, cons const QDeclarativeDomObject rootObject = document.rootObject(); - const QString baseType = document.rootObject().objectType(); - Q_ASSERT_X(!baseType.isEmpty(), Q_FUNC_INFO, "Type of root object cannot be empty"); - NodeMetaInfo nodeInfo(m_metaInfo); - nodeInfo.setTypeName(componentName); + nodeInfo.setType(componentName, -1, -1); nodeInfo.setQmlFile(fileInfo.filePath()); + nodeInfo.setSuperClass(rootObject.objectType(), + rootObject.objectTypeMajorVersion(), + rootObject.objectTypeMinorVersion()); // Add file components to the library - ItemLibraryEntry itemLibType = m_metaInfo.itemLibraryInfo().addItemLibraryEntry(nodeInfo, componentName); - itemLibType.setCategory(tr("QML Components")); + ItemLibraryEntry itemLibraryEntry; + itemLibraryEntry.setType(nodeInfo.typeName(), nodeInfo.majorVersion(), nodeInfo.minorVersion()); + itemLibraryEntry.setName(componentName); + itemLibraryEntry.setCategory(tr("QML Components")); + m_metaInfo.itemLibraryInfo()->addEntry(itemLibraryEntry); - m_metaInfo.addNodeInfo(nodeInfo, baseType); + m_metaInfo.addNodeInfo(nodeInfo); foreach (const QDeclarativeDomDynamicProperty &dynamicProperty, document.rootObject().dynamicProperties()) { Q_ASSERT(!dynamicProperty.propertyName().isEmpty()); diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index c629541cf17614220c2cb72b14071d8b3c2ca680..3cfafe5008cd7efc55d59ce93702da5bbbf44895 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -403,7 +403,7 @@ void ModelPrivate::resetModelByRewriter(const QString &description) } Q_ASSERT(rewriterView); rewriterView->resetToLastCorrectQml(); - throw RewritingException(__LINE__, __FUNCTION__, __FILE__, description); + throw RewritingException(__LINE__, __FUNCTION__, __FILE__, description, rewriterView->textModifierContent()); } diff --git a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp index 01c6d2eec178049e1e44408d707b0bc40ec533b6..ae081e94d41540cf747f53bb8da078ab40fde5f8 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp @@ -33,9 +33,15 @@ #include "itemlibraryinfo.h" #include "modelutilities.h" #include "mathutils.h" +#include "invalididexception.h" #include <QDir> #include <QFileInfo> #include <QDebug> +#include <QMessageBox> + +enum { + debug = false +}; namespace QmlDesigner { @@ -159,13 +165,20 @@ QmlItemNode QmlModelView::createQmlItemNode(const ItemLibraryEntry &itemLibraryE QString id; int i = 1; QString name(itemLibraryEntry.name().toLower()); - name.remove(QLatin1Char(' ')); + //remove forbidden characters + name.replace(QRegExp(QLatin1String("[^a-zA-Z0-9_]")), QLatin1String("_")); do { id = name + QString::number(i); i++; } while (hasId(id)); //If the name already exists count upwards - newNode.setId(id); + try { + newNode.setId(id); + } catch (InvalidIdException &e) { + // should never happen + QMessageBox::warning(0, tr("Invalid Id"), e.description()); + } + if (!currentState().isBaseState()) { newNode.modelNode().variantProperty("visible") = false; newNode.setVariantProperty("visible", true); @@ -226,12 +239,16 @@ QmlObjectNode QmlModelView::fxObjectNodeForId(const QString &id) void QmlModelView::customNotification(const AbstractView * /* view */, const QString &identifier, const QList<ModelNode> &nodeList, const QList<QVariant> & /* data */) { + if (debug) + qDebug() << this << __FUNCTION__ << identifier << nodeList; + if (identifier == "__state changed__") { QmlModelState state(nodeList.first()); - if (state.isValid()) + if (state.isValid()) { activateState(state); - else + } else { activateState(baseState()); + } } } @@ -280,6 +297,8 @@ static bool isTransformProperty(const QString &name) void QmlModelView::nodeInstancePropertyChanged(const ModelNode &node, const QString &propertyName) { + if (debug) + qDebug() << this << __FUNCTION__ << node << propertyName; QmlObjectNode qmlObjectNode(node); @@ -298,6 +317,9 @@ void QmlModelView::nodeInstancePropertyChanged(const ModelNode &node, const QStr void QmlModelView::activateState(const QmlModelState &state) { + if (debug) + qDebug() << this << __FUNCTION__ << state; + if (!state.isValid()) return; @@ -317,6 +339,9 @@ void QmlModelView::activateState(const QmlModelState &state) void QmlModelView::changeToState(const ModelNode &node, const QString &stateName) { + if (debug) + qDebug() << this << __FUNCTION__ << node << stateName; + QmlItemNode itemNode(node); QmlModelState newState; @@ -346,8 +371,10 @@ void QmlModelView::otherPropertyChanged(const QmlObjectNode &/*qmlObjectNode*/, { } -void QmlModelView::stateChanged(const QmlModelState &/*newQmlModelState*/, const QmlModelState &/*oldQmlModelState*/) +void QmlModelView::stateChanged(const QmlModelState &newQmlModelState, const QmlModelState &oldQmlModelState) { + if (debug) + qDebug() << this << __FUNCTION__ << oldQmlModelState << "to" << newQmlModelState; } } //QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index ba98c801c12f53ab14dce38eb331c8e121a7aa80..71746b7f062b02c6ec5106173e6f7f37ae8a2d66 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -382,6 +382,14 @@ void RewriterView::setTextModifier(TextModifier *textModifier) connect(m_textModifier, SIGNAL(textChanged()), this, SLOT(qmlTextChanged())); } +QString RewriterView::textModifierContent() const +{ + if (textModifier()) + return textModifier()->text(); + + return QString(); +} + void RewriterView::applyModificationGroupChanges() { Q_ASSERT(transactionLevel == 0); @@ -397,7 +405,7 @@ void RewriterView::applyChanges() if (inErrorState()) { qDebug() << "RewriterView::applyChanges() got called while in error state. Will do a quick-exit now."; - throw RewritingException(__LINE__, __FUNCTION__, __FILE__, "RewriterView::applyChanges() already in error state"); + throw RewritingException(__LINE__, __FUNCTION__, __FILE__, "RewriterView::applyChanges() already in error state", textModifierContent()); } try { @@ -410,7 +418,7 @@ void RewriterView::applyChanges() } if (inErrorState()) { - throw RewritingException(__LINE__, __FUNCTION__, __FILE__, m_rewritingErrorMessage); + throw RewritingException(__LINE__, __FUNCTION__, __FILE__, m_rewritingErrorMessage, textModifierContent()); } } diff --git a/src/plugins/qmldesigner/fxplugin/fx.metainfo b/src/plugins/qmldesigner/fxplugin/fx.metainfo index 0520af0d2db52929e136ba6283f8d166ddbd4cc0..a72bc012dcfdde3fd1f631e671859820c40bae41 100644 --- a/src/plugins/qmldesigner/fxplugin/fx.metainfo +++ b/src/plugins/qmldesigner/fxplugin/fx.metainfo @@ -42,7 +42,6 @@ </itemlibraryentry> </node> <node name="Qt/MouseArea" icon=":/fxplugin/images/mouse-area-icon16.png"> - <inherits name="Item" /> <itemlibraryentry name="Mouse Area" category="Qt - Interaction" icon=":/fxplugin/images/mouse-area-icon.png"> <property name="width" type="int" value="100"/> <property name="height" type="int" value="100"/> diff --git a/src/plugins/qt4projectmanager/qmakestep.ui b/src/plugins/qt4projectmanager/qmakestep.ui index 801f839f01024f8ac2ea7c6d6fb60f1b3772b717..16618e9ae7b206be2f6411427eff80b328e71200 100644 --- a/src/plugins/qt4projectmanager/qmakestep.ui +++ b/src/plugins/qt4projectmanager/qmakestep.ui @@ -17,7 +17,7 @@ <item row="0" column="0"> <widget class="QLabel" name="label_2"> <property name="text"> - <string>qmake Build Configuration:</string> + <string>qmake build configuration:</string> </property> </widget> </item> @@ -31,12 +31,12 @@ </property> <item> <property name="text"> - <string>debug</string> + <string>Debug</string> </property> </item> <item> <property name="text"> - <string>release</string> + <string>Release</string> </property> </item> </widget> diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp index 4d254aa768c162094adea2eeb4d605d405836ef1..8e9dff6f87f5d28d84063e9b704cf0085a337daa 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp @@ -82,7 +82,7 @@ MaemoRunConfigurationWidget::MaemoRunConfigurationWidget( debuggerConfLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); devConfLayout->addWidget(debuggerConfLabel); - mainLayout->addRow(new QLabel(tr("Device Configuration:")), devConfWidget); + mainLayout->addRow(new QLabel(tr("Device configuration:")), devConfWidget); m_executableLabel = new QLabel(m_runConfiguration->executable()); mainLayout->addRow(tr("Executable:"), m_executableLabel); m_argsLineEdit = new QLineEdit(m_runConfiguration->arguments().join(" ")); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.cpp index a25395011322f50d80dba404691e29d29a78905d..e56ef654653a570c17858da6dec261afbfc612df 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.cpp @@ -340,7 +340,7 @@ void MaemoSettingsWidget::deployKey() const QString &dir = QFileInfo(currentConfig().server.privateKeyFile).path(); QString publicKeyFileName = QFileDialog::getOpenFileName(this, - tr("Choose public key file"), dir, + tr("Choose Public Key File"), dir, tr("Public Key Files(*.pub);;All Files (*)")); if (publicKeyFileName.isEmpty()) return; @@ -362,7 +362,7 @@ void MaemoSettingsWidget::deployKey() m_keyDeployer = new MaemoSshRunner(currentConfig().server, command); connect(m_keyDeployer, SIGNAL(finished()), this, SLOT(handleDeployThreadFinished())); - m_ui->deployKeyButton->setText(tr("Stop deploying")); + m_ui->deployKeyButton->setText(tr("Stop Deploying")); connect(m_ui->deployKeyButton, SIGNAL(clicked()), this, SLOT(stopDeploying())); m_keyDeployer->start(); } diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.ui b/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.ui index ff70b437e90c902b1e488d28f069c52715caf070..00eac92c3ddf719fce2c2d2095dd7cd60f018544 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.ui +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.ui @@ -90,14 +90,14 @@ <item> <widget class="QRadioButton" name="deviceButton"> <property name="text"> - <string>Remote Device</string> + <string>Remote device</string> </property> </widget> </item> <item> <widget class="QRadioButton" name="simulatorButton"> <property name="text"> - <string>Local Simulator</string> + <string>Maemo emulator</string> </property> </widget> </item> @@ -137,7 +137,7 @@ <item row="3" column="0"> <widget class="QLabel" name="hostNameLabel"> <property name="text"> - <string>Host Name:</string> + <string>Host name:</string> </property> </widget> </item> @@ -211,7 +211,7 @@ <item row="5" column="0"> <widget class="QLabel" name="connectionTimeoutLabel"> <property name="text"> - <string>Connection Timeout:</string> + <string>Connection timeout:</string> </property> </widget> </item> @@ -251,7 +251,7 @@ <item row="6" column="0"> <widget class="QLabel" name="userNameLabel"> <property name="text"> - <string>User Name:</string> + <string>Username:</string> </property> </widget> </item> diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.cpp index 19c86ba7f11acf378c40e299d5ee5ed8cd81e459..6052b702a2425a21084cb2dfa4712edf257560e8 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.cpp @@ -121,7 +121,7 @@ void MaemoSshConfigDialog::saveKey(bool publicKey) const QString suggestedName = home + QString::fromLatin1("/.ssh/id_%1%2") .arg(suggestedTypeSuffix).arg(publicKey ? ".pub" : ""); const QString dlgTitle - = publicKey ? tr("Save public key file") : tr("Save private key file"); + = publicKey ? tr("Save Public Key File") : tr("Save Private Key File"); const QString fileName = QFileDialog::getSaveFileName(this, dlgTitle, suggestedName); if (fileName.isEmpty()) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.ui b/src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.ui index 85d5152e24c01080a794e64ca7276c0564ee5e8f..d85c4764d0498e1af980b199712bcf08ab8c077a 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.ui +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.ui @@ -198,7 +198,7 @@ <bool>false</bool> </property> <property name="text"> - <string>Save public Key...</string> + <string>Save Public Key...</string> </property> </widget> </item> @@ -208,7 +208,7 @@ <bool>false</bool> </property> <property name="text"> - <string>Save private Key...</string> + <string>Save Private Key...</string> </property> </widget> </item> diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp index e3deb4d1eeefc64bffe8c407831ba0f6f87ff6b0..51f129b19b4a319c00a52339417fcfe7aabe5054 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp @@ -75,7 +75,7 @@ S60CreatePackageStep::S60CreatePackageStep(ProjectExplorer::BuildConfiguration * void S60CreatePackageStep::ctor_package() { - setDisplayName(tr("Create sis Package", "Create sis package build step name")); + setDisplayName(tr("Create SIS Package", "Create SIS package build step name")); } S60CreatePackageStep::~S60CreatePackageStep() @@ -239,7 +239,7 @@ QStringList S60CreatePackageStepFactory::availableCreationIds(ProjectExplorer::B QString S60CreatePackageStepFactory::displayNameForId(const QString &id) const { if (id == QLatin1String(SIGN_BS_ID)) - return tr("Create sis Package"); + return tr("Create SIS Package"); return QString(); } @@ -299,8 +299,8 @@ QString S60CreatePackageStepConfigWidget::summaryText() const .arg(m_signStep->customKeyPath()); } if (m_signStep->createSmartInstaller()) - return tr("<b>Create sis Package:</b> %1, using Smart Installer").arg(text); - return tr("<b>Create sis Package:</b> %1").arg(text); + return tr("<b>Create SIS Package:</b> %1, using Smart Installer").arg(text); + return tr("<b>Create SIS Package:</b> %1").arg(text); } QString S60CreatePackageStepConfigWidget::displayName() const diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index ffeb87f1533add5c55a72cb974db18f1d718f44a..ea94183e25109794ecbba554eb8a8bc5ee66d7d2 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -698,7 +698,7 @@ void S60DeviceRunControlBase::printConnectFailed(const QString &errorMessage) void S60DeviceRunControlBase::printCopyingNotice() { - emit appendMessage(this, tr("Copying install file..."), false); + emit appendMessage(this, tr("Copying installation file..."), false); } void S60DeviceRunControlBase::printCopyProgress(int progress) diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp index 1a02ca2e7afad719417c495ddcda6f12ebe25ba9..5278d21299c1d330b4d4d7cb6da0fb330516bb01 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp @@ -103,7 +103,7 @@ S60DeviceRunConfigurationWidget::S60DeviceRunConfigurationWidget( nameLabel->setBuddy(m_nameLineEdit); formLayout->addRow(nameLabel, m_nameLineEdit); formLayout->addRow(tr("Arguments:"), m_argumentsLineEdit); - formLayout->addRow(tr("Install File:"), m_sisFileLabel); + formLayout->addRow(tr("Installation file:"), m_sisFileLabel); updateSerialDevices(); connect(SymbianUtils::SymbianDeviceManager::instance(), SIGNAL(updated()), @@ -122,7 +122,7 @@ S60DeviceRunConfigurationWidget::S60DeviceRunConfigurationWidget( serialPortHBoxLayout->addWidget(updateSerialDevicesButton); } - formLayout->addRow(tr("Device on Serial Port:"), serialPortHBoxLayout); + formLayout->addRow(tr("Device on serial port:"), serialPortHBoxLayout); // Device Info with button. Widgets are enabled in above call to updateSerialDevices() QHBoxLayout *infoHBoxLayout = new QHBoxLayout; diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.ui b/src/plugins/qt4projectmanager/qt4projectconfigwidget.ui index bb0acd3a161c67844c52962b164cc1893e1ce670..4188ffbfc4b9c2655df1576c95946025fa4b75f1 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.ui +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.ui @@ -14,7 +14,7 @@ <item row="0" column="0"> <widget class="QLabel" name="nameLabel"> <property name="text"> - <string>Configuration Name:</string> + <string>Configuration name:</string> </property> </widget> </item> @@ -37,7 +37,7 @@ </sizepolicy> </property> <property name="text"> - <string>Qt Version:</string> + <string>Qt version:</string> </property> </widget> </item> @@ -65,7 +65,7 @@ </sizepolicy> </property> <property name="text"> - <string>This Qt-Version is invalid.</string> + <string>This Qt version is invalid.</string> </property> </widget> </item> @@ -81,7 +81,7 @@ <item row="2" column="0"> <widget class="QLabel" name="label_2"> <property name="text"> - <string>Tool Chain:</string> + <string>Tool chain:</string> </property> </widget> </item> @@ -91,7 +91,7 @@ <item row="3" column="0"> <widget class="QLabel" name="label"> <property name="text"> - <string>Shadow Build:</string> + <string>Shadow build:</string> </property> </widget> </item> @@ -111,7 +111,7 @@ </sizepolicy> </property> <property name="text"> - <string>Build Directory:</string> + <string>Build directory:</string> </property> </widget> </item> diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp index ce837124b7e7850b12509528b7c12a46bfd1f83d..443923c4c7be6a94ad63bfefac154703cbef0655 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp @@ -181,7 +181,7 @@ QString Qt4Manager::mimeType() const return QLatin1String(Qt4ProjectManager::Constants::PROFILE_MIMETYPE); } -ProjectExplorer::Project* Qt4Manager::openProject(const QString &fileName) +ProjectExplorer::Project *Qt4Manager::openProject(const QString &fileName) { Core::MessageManager *messageManager = Core::ICore::instance()->messageManager(); diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.h b/src/plugins/qt4projectmanager/qt4projectmanager.h index 21c316d87e6de7e5d81dc8eebbe4813a0a4a1c72..822383751a74334ee699cde621b7a5ed84ba9366 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.h +++ b/src/plugins/qt4projectmanager/qt4projectmanager.h @@ -79,7 +79,7 @@ public: int projectLanguage() const; virtual QString mimeType() const; - ProjectExplorer::Project* openProject(const QString &fileName); + ProjectExplorer::Project *openProject(const QString &fileName); // Context information used in the slot implementations ProjectExplorer::Node *contextNode() const; diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index 052a814620603658cf169f84efb95e159ae2a989..e3ca670490fb37ff202a7eb3641ad6a44540eb4e 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -210,7 +210,7 @@ Qt4RunConfigurationWidget::Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4Run m_workingDirectoryEdit = new Utils::PathChooser(this); m_workingDirectoryEdit->setPath(m_qt4RunConfiguration->workingDirectory()); m_workingDirectoryEdit->setExpectedKind(Utils::PathChooser::Directory); - m_workingDirectoryEdit->setPromptDialogTitle(tr("Select the working directory")); + m_workingDirectoryEdit->setPromptDialogTitle(tr("Select Working Directory")); QToolButton *resetButton = new QToolButton(this); resetButton->setToolTip(tr("Reset to default")); @@ -220,9 +220,9 @@ Qt4RunConfigurationWidget::Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4Run boxlayout->setMargin(0); boxlayout->addWidget(m_workingDirectoryEdit); boxlayout->addWidget(resetButton); - toplayout->addRow(tr("Working Directory:"), boxlayout); + toplayout->addRow(tr("Working directory:"), boxlayout); - m_useTerminalCheck = new QCheckBox(tr("Run in Terminal"), this); + m_useTerminalCheck = new QCheckBox(tr("Run in terminal"), this); m_useTerminalCheck->setChecked(m_qt4RunConfiguration->runMode() == ProjectExplorer::LocalApplicationRunConfiguration::Console); toplayout->addRow(QString(), m_useTerminalCheck); diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.ui b/src/plugins/qt4projectmanager/wizards/targetsetuppage.ui index 6ecdf59fd62055100454a27114498dc438fd7ffe..42e73387d108a33becc24af2a8246a0df4a2fbe7 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.ui +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.ui @@ -54,7 +54,7 @@ <item> <widget class="QPushButton" name="importButton"> <property name="text"> - <string>Import existing shadow build...</string> + <string>Import Existing Shadow Build...</string> </property> <property name="flat"> <bool>false</bool> diff --git a/src/plugins/subversion/checkoutwizard.cpp b/src/plugins/subversion/checkoutwizard.cpp index dbe355b813b7500531e7436008860f47b07b8499..1175408a93b5306bcf9240571c6be34916c851a6 100644 --- a/src/plugins/subversion/checkoutwizard.cpp +++ b/src/plugins/subversion/checkoutwizard.cpp @@ -53,7 +53,7 @@ QIcon CheckoutWizard::icon() const QString CheckoutWizard::description() const { - return tr("Checks out a project from a Subversion repository and tries to load the contained project."); + return tr("Checks out a Subversion repository and tries to load the contained project."); } QString CheckoutWizard::displayName() const diff --git a/src/plugins/subversion/settingspage.ui b/src/plugins/subversion/settingspage.ui index 249ad3fef2f9ca8d711dca5e196dc3bcf3844a6d..4b659929aa292c24ecf7e272b4e238d6dffd5bba 100644 --- a/src/plugins/subversion/settingspage.ui +++ b/src/plugins/subversion/settingspage.ui @@ -34,7 +34,7 @@ <item row="0" column="0"> <widget class="QLabel" name="usernameLabel"> <property name="text"> - <string>User name:</string> + <string>Username:</string> </property> </widget> </item> diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 0210aa7b8cbcf2c9708144bb39eb2750874dc1c8..04bcd16deaa3cc22749f8d679ba8504309d0576e 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -212,7 +212,7 @@ QWidget *BaseFileFind::createPatternWidget() QWidget *BaseFileFind::createRegExpWidget() { - m_useRegExpCheckBox = new QCheckBox(tr("Use Regular E&xpressions")); + m_useRegExpCheckBox = new QCheckBox(tr("Use regular e&xpressions")); m_useRegExpCheckBox->setChecked(m_useRegExp); connect(m_useRegExpCheckBox, SIGNAL(toggled(bool)), this, SLOT(syncRegExpSetting(bool))); return m_useRegExpCheckBox; diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 413011f9c34d9aa24f9091728fbad15add497bc6..046bafef2775f27c84e9475e925bfe848ba47813 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -3674,19 +3674,7 @@ void BaseTextEditor::indentOrUnindent(bool doIndent) QTextDocument *doc = document(); - if (!cursor.hasSelection() && doIndent) { - // Insert tab if there is no selection and indent is requested - QTextBlock block = cursor.block(); - QString text = block.text(); - int indentPosition = (cursor.position() - block.position());; - int spaces = tabSettings.spacesLeftFromPosition(text, indentPosition); - int startColumn = tabSettings.columnAt(text, indentPosition - spaces); - int targetColumn = tabSettings.indentedColumn(tabSettings.columnAt(text, indentPosition), doIndent); - cursor.setPosition(block.position() + indentPosition); - cursor.setPosition(block.position() + indentPosition - spaces, QTextCursor::KeepAnchor); - cursor.removeSelectedText(); - cursor.insertText(tabSettings.indentationString(startColumn, targetColumn, block)); - } else { + if (cursor.hasSelection()) { // Indent or unindent the selected lines int anchor = cursor.anchor(); int start = qMin(anchor, pos); @@ -3707,6 +3695,18 @@ void BaseTextEditor::indentOrUnindent(bool doIndent) cursor.setPosition(block.position() + indentPosition, QTextCursor::KeepAnchor); cursor.removeSelectedText(); } + } else { + // Indent or unindent at cursor position + QTextBlock block = cursor.block(); + QString text = block.text(); + int indentPosition = cursor.positionInBlock(); + int spaces = tabSettings.spacesLeftFromPosition(text, indentPosition); + int startColumn = tabSettings.columnAt(text, indentPosition - spaces); + int targetColumn = tabSettings.indentedColumn(tabSettings.columnAt(text, indentPosition), doIndent); + cursor.setPosition(block.position() + indentPosition); + cursor.setPosition(block.position() + indentPosition - spaces, QTextCursor::KeepAnchor); + cursor.removeSelectedText(); + cursor.insertText(tabSettings.indentationString(startColumn, targetColumn, block)); } cursor.endEditBlock(); diff --git a/src/plugins/texteditor/behaviorsettingspage.ui b/src/plugins/texteditor/behaviorsettingspage.ui index 7e814a252f22bf59ec0cfed41b04895d0f27afea..8ccf21d50703deb790dd4075407d75be853f4e40 100644 --- a/src/plugins/texteditor/behaviorsettingspage.ui +++ b/src/plugins/texteditor/behaviorsettingspage.ui @@ -200,7 +200,7 @@ </item> <item> <property name="text"> - <string>In leading white space</string> + <string>In Leading White Space</string> </property> </item> </widget> diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index 0f9f8c9e22191b65d3e26846236a3b101867705f..e30c00f12eda71d98ea34ae4c87c3205c79c3d88 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -450,7 +450,7 @@ void FontSettingsPage::copyColorScheme() dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->setInputMode(QInputDialog::TextInput); dialog->setWindowTitle(tr("Copy Color Scheme")); - dialog->setLabelText(tr("Color Scheme name:")); + dialog->setLabelText(tr("Color scheme name:")); dialog->setTextValue(tr("%1 (copy)").arg(d_ptr->m_value.colorScheme().displayName())); connect(dialog, SIGNAL(textValueSelected(QString)), this, SLOT(copyColorScheme(QString))); diff --git a/src/plugins/vcsbase/cleandialog.ui b/src/plugins/vcsbase/cleandialog.ui index 2888100a3f6fbb1af6310a6b296efd7066058414..a24f047a59d926a9053848df5578a2cd2fdffba8 100644 --- a/src/plugins/vcsbase/cleandialog.ui +++ b/src/plugins/vcsbase/cleandialog.ui @@ -11,7 +11,7 @@ </rect> </property> <property name="windowTitle"> - <string>Clean repository</string> + <string>Clean Repository</string> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index 3c437fadd9d53152f81903229d64c87b53b541ed..8cc60f0cfeb31fe8ee2cc6f3f8cc930bdb5f0798 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -557,7 +557,7 @@ void VCSBasePlugin::createRepository() // Prompt for a directory that is not under version control yet QMainWindow *mw = Core::ICore::instance()->mainWindow(); do { - directory = QFileDialog::getExistingDirectory(mw, tr("Choose repository directory"), directory); + directory = QFileDialog::getExistingDirectory(mw, tr("Choose Repository Directory"), directory); if (directory.isEmpty()) return; const Core::IVersionControl *managingControl = Core::ICore::instance()->vcsManager()->findVersionControlForDirectory(directory); diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.cpp b/tests/auto/qml/qmldesigner/coretests/testcore.cpp index 40d16af965df80bf869e714d1e481cec891e7529..3bf3a68cd101f4c5bed64d3763eb5f4abd97190b 100644 --- a/tests/auto/qml/qmldesigner/coretests/testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/testcore.cpp @@ -3284,53 +3284,136 @@ void TestCore::testMetaInfo() { QScopedPointer<Model> model(Model::create("Qt/Item")); QVERIFY(model.data()); +} - QScopedPointer<TestView> view(new TestView); - QVERIFY(view.data()); - model->attachView(view.data()); +void TestCore::testMetaInfoSimpleType() +{ + // + // Test type registered with qmlRegisterType: + // + // qmlRegisterType<QDeclarativeItem>("Qt",4,7,"Item") + // + + QScopedPointer<Model> model(Model::create("Qt/Item")); + QVERIFY(model.data()); QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Item")); - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/QtObject")); - QVERIFY(model->metaInfo().isSubclassOf("Qt/Text", "Qt/QtObject")); - QVERIFY(model->metaInfo().isSubclassOf("Qt/Text", "Qt/Item")); - QVERIFY(model->metaInfo().isSubclassOf("Qt/Rectangle", "Qt/QtObject")); + QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Item", 4, 7)); + + NodeMetaInfo itemMetaInfo = model->metaInfo().nodeMetaInfo("Qt/Item", 4, 7); + NodeMetaInfo itemMetaInfo2 = model->metaInfo().nodeMetaInfo("Qt/Item"); + QCOMPARE(itemMetaInfo, itemMetaInfo2); + + QVERIFY(itemMetaInfo.isValid()); + QCOMPARE(itemMetaInfo.typeName(), QLatin1String("Qt/Item")); + QCOMPARE(itemMetaInfo.majorVersion(), 4); + QCOMPARE(itemMetaInfo.minorVersion(), 7); + + // super classes + NodeMetaInfo graphicsObjectInfo = itemMetaInfo.directSuperClass(); + QVERIFY(graphicsObjectInfo.isValid()); + QCOMPARE(graphicsObjectInfo.typeName(), QLatin1String("QGraphicsObject")); + QCOMPARE(graphicsObjectInfo.majorVersion(), 4); + QCOMPARE(graphicsObjectInfo.minorVersion(), 7); + + QCOMPARE(itemMetaInfo.superClasses().size(), 2); // QGraphicsObject, Qt/QtObject + QVERIFY(itemMetaInfo.isSubclassOf("QGraphicsObject", 4, 7)); + QVERIFY(itemMetaInfo.isSubclassOf("Qt/QtObject", -1, -1)); + + // availableInVersion + QVERIFY(itemMetaInfo.availableInVersion(4, 7)); + QVERIFY(itemMetaInfo.availableInVersion(4, 8)); + QVERIFY(itemMetaInfo.availableInVersion(5, 0)); + QVERIFY(itemMetaInfo.availableInVersion(-1, -1)); + QVERIFY(!itemMetaInfo.availableInVersion(4, 6)); + QVERIFY(!itemMetaInfo.availableInVersion(3, 7)); +} - QVERIFY(!model->metaInfo().isSubclassOf("Fooo", "Qt/QtObject")); +void TestCore::testMetaInfoUncreatableType() +{ + // Test type registered with qmlRegisterUncreatableType or qmlRegisterTypeNotAvailable: + // + // qmlRegisterUncreatableType<QDeclarativeAbstractAnimation>("Qt",4,7,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class")); + // - QCOMPARE(view->rootModelNode().metaInfo().typeName(), QString("Qt/Item")); - QVERIFY(view->rootModelNode().metaInfo().hasProperty("x")); - QVERIFY(!view->rootModelNode().metaInfo().hasProperty("blah")); - QVERIFY(!view->rootModelNode().metaInfo().property("blah").isValid()); + QScopedPointer<Model> model(Model::create("Qt/Item")); + QVERIFY(model.data()); - ModelNode rectNode = addNodeListChild(view->rootModelNode(), "Qt/Rectangle", 4, 7, "data"); + QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Animation")); + NodeMetaInfo animationTypeInfo = model->metaInfo().nodeMetaInfo("Qt/Animation", 4, 7); + QVERIFY(animationTypeInfo.isValid()); + + QVERIFY(animationTypeInfo.isValid()); + QCOMPARE(animationTypeInfo.typeName(), QLatin1String("Qt/Animation")); + QCOMPARE(animationTypeInfo.majorVersion(), 4); + QCOMPARE(animationTypeInfo.minorVersion(), 7); + + NodeMetaInfo qObjectTypeInfo = animationTypeInfo.directSuperClass(); + QVERIFY(qObjectTypeInfo.isValid()); + QCOMPARE(qObjectTypeInfo.typeName(), QLatin1String("Qt/QtObject")); + QCOMPARE(qObjectTypeInfo.majorVersion(), 4); + QCOMPARE(qObjectTypeInfo.minorVersion(), 7); + QCOMPARE(animationTypeInfo.superClasses().size(), 1); +} - QVERIFY(rectNode.metaInfo().isSubclassOf("Qt/QtObject")); - QVERIFY(rectNode.metaInfo().isSubclassOf("Qt/Item")); - QVERIFY(!rectNode.metaInfo().isSubclassOf("Qt/Text")); - QVERIFY(rectNode.metaInfo().hasProperty("color")); - QVERIFY(rectNode.metaInfo().hasProperty("x")); - QVERIFY(!rectNode.metaInfo().hasProperty("blah")); +void TestCore::testMetaInfoExtendedType() +{ + // Test type registered with qmlRegisterExtendedType + // + // qmlRegisterExtendedType<QGraphicsWidget,QDeclarativeGraphicsWidget>("Qt",4,7,"QGraphicsWidget"); + // - ModelNode textNode = addNodeListChild(view->rootModelNode(), "Qt/TextEdit", 4, 7, "data"); - NodeMetaInfo textNodeMetaInfo = textNode.metaInfo(); - QVERIFY(textNodeMetaInfo.hasProperty("text")); - QVERIFY(textNodeMetaInfo.property("text").isValid()); - QVERIFY(textNodeMetaInfo.property("text").isReadable()); - QVERIFY(textNodeMetaInfo.property("text").isWriteable()); - QVERIFY(textNodeMetaInfo.property("x").isReadable()); - QVERIFY(textNodeMetaInfo.property("x").isWriteable()); - QVERIFY(textNodeMetaInfo.isSubclassOf("Qt/Item", 4, 7)); - QVERIFY(!textNodeMetaInfo.isSubclassOf("Blah")); - QVERIFY(textNodeMetaInfo.isQmlGraphicsItem()); - QVERIFY(textNodeMetaInfo.isGraphicsObject()); - QVERIFY(!textNodeMetaInfo.isGraphicsWidget()); - - // test types declared with EXTENDED_OBJECT -// NodeMetaInfo graphicsWidgetInfo = model->metaInfo().nodeMetaInfo("Qt/QGraphicsWidget", 4, 7); -// QVERIFY(graphicsWidgetInfo.isValid()); -// QVERIFY(graphicsWidgetInfo.hasProperty("layout")); // from QGraphicsWidgetDeclarativeUI -// QVERIFY(graphicsWidgetInfo.hasProperty("font")); // from QGraphicsWidget -// QVERIFY(graphicsWidgetInfo.hasProperty("enabled")); // from QGraphicsItem + QScopedPointer<Model> model(Model::create("Qt/Item")); + QVERIFY(model.data()); + + QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/QGraphicsWidget")); + NodeMetaInfo graphicsWidgetTypeInfo = model->metaInfo().nodeMetaInfo("Qt/QGraphicsWidget", 4, 7); + QVERIFY(graphicsWidgetTypeInfo.isValid()); + QVERIFY(graphicsWidgetTypeInfo.hasProperty("layout")); // from QGraphicsWidgetDeclarativeUI + QVERIFY(graphicsWidgetTypeInfo.hasProperty("font")); // from QGraphicsWidget + QVERIFY(graphicsWidgetTypeInfo.hasProperty("enabled")); // from QGraphicsItem + + NodeMetaInfo graphicsObjectTypeInfo = graphicsWidgetTypeInfo.directSuperClass(); + QVERIFY(graphicsObjectTypeInfo.isValid()); + QCOMPARE(graphicsObjectTypeInfo.typeName(), QLatin1String("QGraphicsObject")); + QCOMPARE(graphicsObjectTypeInfo.majorVersion(), 4); + QCOMPARE(graphicsObjectTypeInfo.minorVersion(), 7); + QCOMPARE(graphicsWidgetTypeInfo.superClasses().size(), 2); +} + +void TestCore::testMetaInfoInterface() +{ + // Test type registered with qmlRegisterInterface + // + + QSKIP("TODO: Test not implemented yet", SkipAll); +} + +void TestCore::testMetaInfoCustomType() +{ + // Test type registered with qmlRegisterCustomType: + // + // qmlRegisterCustomType<QDeclarativePropertyChanges>("Qt", 4, 7, "PropertyChanges", new QDeclarativePropertyChangesParser); + + QScopedPointer<Model> model(Model::create("Qt/Item")); + QVERIFY(model.data()); + + QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/PropertyChanges")); + NodeMetaInfo propertyChangesInfo = model->metaInfo().nodeMetaInfo("Qt/PropertyChanges", 4, 7); + QVERIFY(propertyChangesInfo.isValid()); + QVERIFY(propertyChangesInfo.hasProperty("target")); // from QDeclarativePropertyChanges + QVERIFY(propertyChangesInfo.hasProperty("restoreEntryValues")); // from QDeclarativePropertyChanges + QVERIFY(propertyChangesInfo.hasProperty("explicit")); // from QDeclarativePropertyChanges + + NodeMetaInfo stateOperationInfo = propertyChangesInfo.directSuperClass(); + QVERIFY(stateOperationInfo.isValid()); + QCOMPARE(stateOperationInfo.typeName(), QLatin1String("QDeclarativeStateOperation")); + QCOMPARE(stateOperationInfo.majorVersion(), 4); + QCOMPARE(stateOperationInfo.minorVersion(), 7); + QCOMPARE(propertyChangesInfo.superClasses().size(), 2); + + // DeclarativePropertyChanges just has 3 properties + QCOMPARE(propertyChangesInfo.properties().size() - stateOperationInfo.properties().size(), 3); } void TestCore::testMetaInfoEnums() @@ -3357,6 +3440,26 @@ void TestCore::testMetaInfoEnums() QVERIFY(view->rootModelNode().metaInfo().property("horizontalAlignment").enumerator().elementNames().contains(QLatin1String("AlignRight"))); } +void TestCore::testMetaInfoProperties() +{ + QScopedPointer<Model> model(Model::create("Qt/Text")); + QVERIFY(model.data()); + + NodeMetaInfo textNodeMetaInfo = model->metaInfo().nodeMetaInfo("Qt/TextEdit", 4, 7); + QVERIFY(textNodeMetaInfo.hasProperty("text")); // QDeclarativeTextEdit + QVERIFY(textNodeMetaInfo.hasProperty("parent")); // QDeclarativeItem + QVERIFY(textNodeMetaInfo.hasProperty("x")); // QGraphicsObject + QVERIFY(textNodeMetaInfo.hasProperty("objectName")); // Qt/QObject + QVERIFY(!textNodeMetaInfo.hasProperty("bla")); + + QVERIFY(textNodeMetaInfo.property("text").isValid()); + QVERIFY(textNodeMetaInfo.property("text").isReadable()); + QVERIFY(textNodeMetaInfo.property("text").isWriteable()); + QVERIFY(textNodeMetaInfo.property("x").isValid()); + QVERIFY(textNodeMetaInfo.property("x").isReadable()); + QVERIFY(textNodeMetaInfo.property("x").isWriteable()); +} + void TestCore::testMetaInfoDotProperties() { QScopedPointer<Model> model(Model::create("Qt/Text")); @@ -6291,7 +6394,7 @@ void TestCore::loadGradient() { ModelNode gradientNode = rootModelNode.allDirectSubModelNodes().last(); QVERIFY(gradientNode.isValid()); - QVERIFY(!gradientNode.metaInfo().isQmlGraphicsItem()); + QVERIFY(!gradientNode.metaInfo().isSubclassOf("Qt/Item", -1, -1)); QCOMPARE(gradientNode.type(), QString("Qt/Gradient")); QCOMPARE(gradientNode.id(), QString("secondGradient")); QCOMPARE(gradientNode.allDirectSubModelNodes().size(), 2); diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.h b/tests/auto/qml/qmldesigner/coretests/testcore.h index 525d555ea7d49db0c3c76066db869e3beb16adba..fbd683f88bd2fca49f35f2f8b48c05b3a1d2955e 100644 --- a/tests/auto/qml/qmldesigner/coretests/testcore.h +++ b/tests/auto/qml/qmldesigner/coretests/testcore.h @@ -71,7 +71,13 @@ private slots: // unit tests MetaInfo, NodeMetaInfo, PropertyMetaInfo // void testMetaInfo(); + void testMetaInfoSimpleType(); + void testMetaInfoUncreatableType(); + void testMetaInfoExtendedType(); + void testMetaInfoInterface(); + void testMetaInfoCustomType(); void testMetaInfoEnums(); + void testMetaInfoProperties(); void testMetaInfoDotProperties(); void testMetaInfoListProperties();