diff --git a/share/qtcreator/externaltools/lrelease.xml b/share/qtcreator/externaltools/lrelease.xml index 5629ca3950857f02a2ebf7617a5b86822c6cdc00..86b05343c4c2218b162e9f9fa604a0db1f1e57d5 100644 --- a/share/qtcreator/externaltools/lrelease.xml +++ b/share/qtcreator/externaltools/lrelease.xml @@ -29,7 +29,7 @@ ** **************************************************************************/ --> -<externaltool> +<externaltool id="lrelease"> <description>Creates qm translation files that can be used by an application from the translator's ts files</description> <description xml:lang="de">Erstellt die von Anwendungen nutzbaren qm-Dateien aus ts-Dateien von Übersetzern</description> <displayname>Release translations (lrelease)</displayname> diff --git a/share/qtcreator/externaltools/lupdate.xml b/share/qtcreator/externaltools/lupdate.xml index 1ee57cd71e4cb40da250da9381900931141d2c7a..ba8b05053ac135bc3d99aee60a308914f9d73024 100644 --- a/share/qtcreator/externaltools/lupdate.xml +++ b/share/qtcreator/externaltools/lupdate.xml @@ -29,7 +29,7 @@ ** **************************************************************************/ --> -<externaltool> +<externaltool id="lupdate"> <description>Synchronizes translator's ts files with the program code</description> <description xml:lang="de">Synchronisiert die ts-Übersetzungsdateien mit dem Programmcode</description> <displayname>Update translations (lupdate)</displayname> diff --git a/share/qtcreator/externaltools/sort.xml b/share/qtcreator/externaltools/sort.xml index c7c5a826ae2b238b80b5e53a6b85f8ecd649ca76..92cd550cd3d4d18cc0b05ce43a9e770d9f8f8aeb 100644 --- a/share/qtcreator/externaltools/sort.xml +++ b/share/qtcreator/externaltools/sort.xml @@ -29,7 +29,7 @@ ** **************************************************************************/ --> -<externaltool> +<externaltool id="sort"> <description>Sorts the selected text</description> <description xml:lang="de">Sortiert den ausgewählten Text</description> <displayname>Sort</displayname> diff --git a/share/qtcreator/externaltools/vi.xml b/share/qtcreator/externaltools/vi.xml index b76ba327e9af608c93be167b880d6d2cfb3d6f23..dd4a88a45305e706a208170f20bc64123451d52d 100644 --- a/share/qtcreator/externaltools/vi.xml +++ b/share/qtcreator/externaltools/vi.xml @@ -29,7 +29,7 @@ ** **************************************************************************/ --> -<externaltool> +<externaltool id="vi"> <description>Opens the current file in vi</description> <description xml:lang="de">Öffnet die aktuelle Datei in vi</description> <displayname>Edit with vi</displayname> diff --git a/src/plugins/coreplugin/externaltool.cpp b/src/plugins/coreplugin/externaltool.cpp index 2cf22c4ee4abf940b4a9284920711cc58bd770ca..e5eda6593be5177650e926d39eefe55f81d0091d 100644 --- a/src/plugins/coreplugin/externaltool.cpp +++ b/src/plugins/coreplugin/externaltool.cpp @@ -59,6 +59,11 @@ ExternalTool::ExternalTool() : { } +QString ExternalTool::id() const +{ + return m_id; +} + QString ExternalTool::description() const { return m_description; @@ -153,6 +158,9 @@ ExternalTool * ExternalTool::createFromXml(const QString &xml, QString *errorMes if (!reader.readNextStartElement() || reader.name() != QLatin1String(kExternalTool)) reader.raiseError(QLatin1String("Missing start element <externaltool>")); + tool->m_id = reader.attributes().value(QLatin1String("id")).toString(); + if (tool->m_id.isEmpty()) + reader.raiseError(QLatin1String("Missing or empty id attribute for <externaltool>")); while (reader.readNextStartElement()) { if (reader.name() == QLatin1String(kDescription)) { localizedText(locales, &reader, &descriptionLocale, &tool->m_description); diff --git a/src/plugins/coreplugin/externaltool.h b/src/plugins/coreplugin/externaltool.h index bb45d47291abb23c7243b9bfba00911721226875..850c8bf6ca066b833e5514ce2885fc698469a422 100644 --- a/src/plugins/coreplugin/externaltool.h +++ b/src/plugins/coreplugin/externaltool.h @@ -47,6 +47,7 @@ public: ExternalTool(); + QString id() const; QString description() const; QString displayName() const; QString displayCategory() const; @@ -60,6 +61,7 @@ public: static ExternalTool *createFromXml(const QString &xml, QString *errorMessage = 0, const QString &locale = QString()); private: + QString m_id; QString m_description; QString m_displayName; QString m_displayCategory; diff --git a/tests/auto/externaltool/tst_externaltooltest.cpp b/tests/auto/externaltool/tst_externaltooltest.cpp index 33f24faad2c79518c68592d9ca60bb2bf1a53451..35479c931aa66eab6980a2c5b128abb292f07b9a 100644 --- a/tests/auto/externaltool/tst_externaltooltest.cpp +++ b/tests/auto/externaltool/tst_externaltooltest.cpp @@ -6,7 +6,7 @@ using namespace Core::Internal; static const char * const TEST_XML1 = -"<externaltool>" +"<externaltool id=\"lupdate\">" " <description>Synchronizes translator's ts files with the program code</description>" " <description xml:lang=\"de\">Synchronisiert die ts-Übersetzungsdateien mit dem Programmcode</description>" " <displayname>Update translations (lupdate)</displayname>" @@ -24,7 +24,7 @@ static const char * const TEST_XML1 = ; static const char * const TEST_XML2 = -"<externaltool>" +"<externaltool id=\"sort\">" " <description>Sorts the selected text</description>" " <description xml:lang=\"de\">Sortiert den ausgewählten Text</description>" " <displayname>Sort</displayname>" @@ -39,7 +39,7 @@ static const char * const TEST_XML2 = "</externaltool>"; static const char * const TEST_XML3 = -"<externaltool>" +"<externaltool id=\"vi\">" " <description>Opens the current file in vi</description>" " <description xml:lang=\"de\">Öffnet die aktuelle Datei in vi</description>" " <displayname>Edit with vi</displayname>" @@ -54,7 +54,7 @@ static const char * const TEST_XML3 = "</externaltool>"; static const char * const TEST_XML_LANG = -"<externaltool>" +"<externaltool id=\"temp\">" " <description>Hi</description>" " <description xml:lang=\"de\">Hallo</description>" " <description xml:lang=\"de_CH\">Grüezi</description>" @@ -86,6 +86,7 @@ void ExternaltoolTest::testRead1() ExternalTool *tool = ExternalTool::createFromXml(QLatin1String(TEST_XML1), &error); QVERIFY(tool != 0); QVERIFY(error.isEmpty()); + QCOMPARE(tool->id(), QString::fromLatin1("lupdate")); QVERIFY(tool->description().startsWith(QLatin1String("Synchronizes tran"))); QCOMPARE(tool->displayName(), QString::fromLatin1("Update translations (lupdate)")); QCOMPARE(tool->displayCategory(), QString::fromLatin1("Linguist")); @@ -105,6 +106,7 @@ void ExternaltoolTest::testRead2() ExternalTool *tool = ExternalTool::createFromXml(QLatin1String(TEST_XML2), &error); QVERIFY(tool != 0); QVERIFY(error.isEmpty()); + QCOMPARE(tool->id(), QString::fromLatin1("sort")); QVERIFY(tool->description().startsWith(QLatin1String("Sorts the"))); QCOMPARE(tool->displayName(), QString::fromLatin1("Sort")); QCOMPARE(tool->displayCategory(), QString::fromLatin1("Text")); @@ -123,6 +125,7 @@ void ExternaltoolTest::testRead3() ExternalTool *tool = ExternalTool::createFromXml(QLatin1String(TEST_XML3), &error); QVERIFY(tool != 0); QVERIFY(error.isEmpty()); + QCOMPARE(tool->id(), QString::fromLatin1("vi")); QVERIFY(tool->description().startsWith(QLatin1String("Opens the"))); QCOMPARE(tool->displayName(), QString::fromLatin1("Edit with vi")); QCOMPARE(tool->displayCategory(), QString::fromLatin1("Text"));