summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--doc/api/creating-plugins.qdoc2
-rw-r--r--doc/api/examples/exampleplugin/Example.json.in18
-rw-r--r--doc/api/examples/exampleplugin/Example.pluginspec.in15
-rw-r--r--doc/api/first-plugin.qdoc36
-rw-r--r--doc/api/plugin-lifecycle.qdoc10
-rw-r--r--doc/api/plugin-metadata.qdoc (renamed from doc/api/plugin-specifications.qdoc)252
-rw-r--r--doc/doc.pri2
-rw-r--r--qbs/imports/QtcPlugin.qbs10
-rw-r--r--qbs/modules/pluginjson/pluginjson.qbs (renamed from qbs/modules/pluginspec/pluginspec.qbs)57
-rw-r--r--qtcreator.pro2
-rw-r--r--scripts/hasCopyright.pl2
-rw-r--r--share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.json.in11
-rw-r--r--share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.pluginspec.in8
-rw-r--r--share/qtcreator/templates/wizards/qtcreatorplugin/wizard.xml8
-rw-r--r--src/app/main.cpp6
-rw-r--r--src/libs/extensionsystem/extensionsystem_global.h3
-rw-r--r--src/libs/extensionsystem/pluginmanager.cpp43
-rw-r--r--src/libs/extensionsystem/pluginmanager.h4
-rw-r--r--src/libs/extensionsystem/pluginmanager_p.h2
-rw-r--r--src/libs/extensionsystem/pluginspec.cpp523
-rw-r--r--src/libs/extensionsystem/pluginspec_p.h14
-rw-r--r--src/plugins/analyzerbase/AnalyzerBase.json.in19
-rw-r--r--src/plugins/analyzerbase/AnalyzerBase.pluginspec.in17
-rw-r--r--src/plugins/android/Android.json.in19
-rw-r--r--src/plugins/android/Android.pluginspec.in17
-rw-r--r--src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.json.in20
-rw-r--r--src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.pluginspec.in17
-rw-r--r--src/plugins/baremetal/BareMetal.json.in19
-rw-r--r--src/plugins/baremetal/BareMetal.pluginspec.in17
-rw-r--r--src/plugins/bazaar/Bazaar.json.in19
-rw-r--r--src/plugins/bazaar/Bazaar.pluginspec.in17
-rw-r--r--src/plugins/beautifier/Beautifier.json.in20
-rw-r--r--src/plugins/beautifier/Beautifier.pluginspec.in18
-rw-r--r--src/plugins/bineditor/BinEditor.json.in19
-rw-r--r--src/plugins/bineditor/BinEditor.pluginspec.in17
-rw-r--r--src/plugins/bookmarks/Bookmarks.json.in19
-rw-r--r--src/plugins/bookmarks/Bookmarks.pluginspec.in17
-rw-r--r--src/plugins/clangcodemodel/ClangCodeModel.json.in20
-rw-r--r--src/plugins/clangcodemodel/ClangCodeModel.pluginspec.in21
-rw-r--r--src/plugins/classview/ClassView.json.in19
-rw-r--r--src/plugins/classview/ClassView.pluginspec.in17
-rw-r--r--src/plugins/clearcase/ClearCase.json.in20
-rw-r--r--src/plugins/clearcase/ClearCase.pluginspec.in17
-rw-r--r--src/plugins/clearcase/clearcase.qbs2
-rw-r--r--src/plugins/cmakeprojectmanager/CMakeProjectManager.json.in19
-rw-r--r--src/plugins/cmakeprojectmanager/CMakeProjectManager.pluginspec.in17
-rw-r--r--src/plugins/coreplugin/Core.json.in31
-rw-r--r--src/plugins/coreplugin/Core.pluginspec.in20
-rw-r--r--src/plugins/cpaster/CodePaster.json.in18
-rw-r--r--src/plugins/cpaster/CodePaster.pluginspec.in16
-rw-r--r--src/plugins/cppeditor/CppEditor.json.in19
-rw-r--r--src/plugins/cppeditor/CppEditor.pluginspec.in17
-rw-r--r--src/plugins/cpptools/CppTools.json.in19
-rw-r--r--src/plugins/cpptools/CppTools.pluginspec.in17
-rw-r--r--src/plugins/cvs/CVS.json.in19
-rw-r--r--src/plugins/cvs/CVS.pluginspec.in17
-rw-r--r--src/plugins/debugger/Debugger.json.in44
-rw-r--r--src/plugins/debugger/Debugger.pluginspec.in28
-rw-r--r--src/plugins/designer/Designer.json.in19
-rw-r--r--src/plugins/designer/Designer.pluginspec.in17
-rw-r--r--src/plugins/diffeditor/DiffEditor.json.in19
-rw-r--r--src/plugins/diffeditor/DiffEditor.pluginspec.in17
-rw-r--r--src/plugins/emacskeys/EmacsKeys.json.in31
-rw-r--r--src/plugins/emacskeys/EmacsKeys.pluginspec.in28
-rw-r--r--src/plugins/fakevim/FakeVim.json.in18
-rw-r--r--src/plugins/fakevim/FakeVim.pluginspec.in16
-rw-r--r--src/plugins/genericprojectmanager/GenericProjectManager.json.in19
-rw-r--r--src/plugins/genericprojectmanager/GenericProjectManager.pluginspec.in17
-rw-r--r--src/plugins/git/Git.json.in19
-rw-r--r--src/plugins/git/Git.pluginspec.in17
-rw-r--r--src/plugins/glsleditor/GLSLEditor.json.in19
-rw-r--r--src/plugins/glsleditor/GLSLEditor.pluginspec.in17
-rw-r--r--src/plugins/helloworld/HelloWorld.json.in19
-rw-r--r--src/plugins/helloworld/HelloWorld.pluginspec.in16
-rw-r--r--src/plugins/helloworld/helloworldplugin.cpp4
-rw-r--r--src/plugins/help/Help.json.in19
-rw-r--r--src/plugins/help/Help.pluginspec.in17
-rw-r--r--src/plugins/imageviewer/ImageViewer.json.in19
-rw-r--r--src/plugins/imageviewer/ImageViewer.pluginspec.in17
-rw-r--r--src/plugins/ios/Ios.json.in20
-rw-r--r--src/plugins/ios/Ios.pluginspec.in18
-rw-r--r--src/plugins/macros/Macros.json.in19
-rw-r--r--src/plugins/macros/Macros.pluginspec.in17
-rw-r--r--src/plugins/mercurial/Mercurial.json.in19
-rw-r--r--src/plugins/mercurial/Mercurial.pluginspec.in17
-rw-r--r--src/plugins/perforce/Perforce.json.in19
-rw-r--r--src/plugins/perforce/Perforce.pluginspec.in17
-rw-r--r--src/plugins/plugins.pro1
-rw-r--r--src/plugins/projectexplorer/ProjectExplorer.json.in29
-rw-r--r--src/plugins/projectexplorer/ProjectExplorer.pluginspec.in21
-rw-r--r--src/plugins/pythoneditor/PythonEditor.json.in19
-rw-r--r--src/plugins/pythoneditor/PythonEditor.pluginspec.in18
-rw-r--r--src/plugins/qbsprojectmanager/QbsProjectManager.json.in20
-rw-r--r--src/plugins/qbsprojectmanager/QbsProjectManager.pluginspec.in17
-rw-r--r--src/plugins/qmakeandroidsupport/QmakeAndroidSupport.json.in19
-rw-r--r--src/plugins/qmakeandroidsupport/QmakeAndroidSupport.pluginspec.in17
-rw-r--r--src/plugins/qmakeprojectmanager/QmakeProjectManager.json.in19
-rw-r--r--src/plugins/qmakeprojectmanager/QmakeProjectManager.pluginspec.in17
-rw-r--r--src/plugins/qmldesigner/QmlDesigner.json.in26
-rw-r--r--src/plugins/qmldesigner/QmlDesigner.pluginspec.in26
-rw-r--r--src/plugins/qmljseditor/QmlJSEditor.json.in19
-rw-r--r--src/plugins/qmljseditor/QmlJSEditor.pluginspec.in17
-rw-r--r--src/plugins/qmljstools/QmlJSTools.json.in19
-rw-r--r--src/plugins/qmljstools/QmlJSTools.pluginspec.in17
-rw-r--r--src/plugins/qmlprofiler/QmlProfiler.json.in19
-rw-r--r--src/plugins/qmlprofiler/QmlProfiler.pluginspec.in17
-rw-r--r--src/plugins/qmlprojectmanager/QmlProjectManager.json.in19
-rw-r--r--src/plugins/qmlprojectmanager/QmlProjectManager.pluginspec.in17
-rw-r--r--src/plugins/qnx/Qnx.json.in19
-rw-r--r--src/plugins/qnx/Qnx.pluginspec.in17
-rw-r--r--src/plugins/qtsupport/QtSupport.json.in19
-rw-r--r--src/plugins/qtsupport/QtSupport.pluginspec.in17
-rw-r--r--src/plugins/remotelinux/RemoteLinux.json.in19
-rw-r--r--src/plugins/remotelinux/RemoteLinux.pluginspec.in17
-rw-r--r--src/plugins/resourceeditor/ResourceEditor.json.in19
-rw-r--r--src/plugins/resourceeditor/ResourceEditor.pluginspec.in17
-rw-r--r--src/plugins/subversion/Subversion.json.in19
-rw-r--r--src/plugins/subversion/Subversion.pluginspec.in17
-rw-r--r--src/plugins/tasklist/TaskList.json.in18
-rw-r--r--src/plugins/tasklist/TaskList.pluginspec.in16
-rw-r--r--src/plugins/texteditor/TextEditor.json.in19
-rw-r--r--src/plugins/texteditor/TextEditor.pluginspec.in17
-rw-r--r--src/plugins/todo/Todo.json.in19
-rw-r--r--src/plugins/todo/Todo.pluginspec.in16
-rw-r--r--src/plugins/updateinfo/UpdateInfo.json.in20
-rw-r--r--src/plugins/updateinfo/UpdateInfo.pluginspec.in17
-rw-r--r--src/plugins/updateinfo/updateinfo.qbs2
-rw-r--r--src/plugins/valgrind/Valgrind.json.in19
-rw-r--r--src/plugins/valgrind/Valgrind.pluginspec.in17
-rw-r--r--src/plugins/vcsbase/VcsBase.json.in19
-rw-r--r--src/plugins/vcsbase/VcsBase.pluginspec.in17
-rw-r--r--src/plugins/welcome/Welcome.json.in19
-rw-r--r--src/plugins/welcome/Welcome.pluginspec.in17
-rw-r--r--src/plugins/winrt/WinRt.json.in21
-rw-r--r--src/plugins/winrt/WinRt.pluginspec.in18
-rw-r--r--src/qtcreatorplugin.pri53
-rw-r--r--src/qtcreatorplugin2json.xsl30
-rw-r--r--tests/auto/extensionsystem/copy.pri12
-rw-r--r--tests/auto/extensionsystem/plugin.qbs7
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin.xml6
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.h2
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.json10
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.pro6
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.qbs1
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin.xml2
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.h2
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.json7
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.pro6
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.qbs1
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin.xml5
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.h2
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.json9
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.pro6
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.qbs1
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin.spec6
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.h2
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.json10
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.pro6
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.qbs1
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin.spec2
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.h2
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.json6
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.pro6
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.qbs1
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin.spec5
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.h2
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.json9
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.pro6
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.qbs1
-rw-r--r--tests/auto/extensionsystem/pluginmanager/plugins/myplug/myplug.xml2
-rw-r--r--tests/auto/extensionsystem/pluginmanager/plugins/otherplugin.xml2
-rw-r--r--tests/auto/extensionsystem/pluginmanager/test.pro8
-rw-r--r--tests/auto/extensionsystem/pluginmanager/test.qbs11
-rw-r--r--tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp34
-rw-r--r--tests/auto/extensionsystem/pluginspec/test.pro34
-rw-r--r--tests/auto/extensionsystem/pluginspec/test.qbs47
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdependencies/spec1.json12
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdependencies/spec1.xml6
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdependencies/spec2.json8
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdependencies/spec2.xml2
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdependencies/spec3.json8
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdependencies/spec3.xml2
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdependencies/spec4.json11
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdependencies/spec4.xml5
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdependencies/spec5.json8
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdependencies/spec5.xml2
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdir/spec.json (renamed from tests/auto/extensionsystem/pluginmanager/plugins/plugin1.xml)0
-rw-r--r--tests/auto/extensionsystem/pluginspec/testdir/spec.xml2
-rw-r--r--tests/auto/extensionsystem/pluginspec/testplugin/testplugin.h2
-rw-r--r--tests/auto/extensionsystem/pluginspec/testplugin/testplugin.json5
-rw-r--r--tests/auto/extensionsystem/pluginspec/testplugin/testplugin.pro6
-rw-r--r--tests/auto/extensionsystem/pluginspec/testplugin/testplugin.qbs1
-rw-r--r--tests/auto/extensionsystem/pluginspec/testplugin/testplugin.xml2
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/simplespec.json8
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/simplespec.xml2
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/simplespec_experimental.json9
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/simplespec_experimental.xml2
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec1.json24
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec1.xml18
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec2.json8
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec2.xml2
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong1.xml18
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong2.json23
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong2.xml18
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong3.json23
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong3.xml18
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong4.json24
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong4.xml18
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong5.json24
-rw-r--r--tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong5.xml18
-rw-r--r--tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp119
212 files changed, 2042 insertions, 1918 deletions
diff --git a/.gitignore b/.gitignore
index e507a19e1c..8c6eea4c51 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,7 +40,6 @@ Thumbs.db
*.creator.user*
*.qbs.user*
*.qmlproject.user*
-*.pluginspec
*.json
/src/app/Info.plist
app_version.h
diff --git a/doc/api/creating-plugins.qdoc b/doc/api/creating-plugins.qdoc
index 624e347ce3..1189ef6ab8 100644
--- a/doc/api/creating-plugins.qdoc
+++ b/doc/api/creating-plugins.qdoc
@@ -46,7 +46,7 @@
\list
\li \l{Getting and Building Qt Creator}
\li \l{Creating Your First Plugin}
- \li \l{Plugin Specifications}
+ \li \l{Plugin Meta Data}
\li \l{Plugin Life Cycle}
\endlist
diff --git a/doc/api/examples/exampleplugin/Example.json.in b/doc/api/examples/exampleplugin/Example.json.in
new file mode 100644
index 0000000000..12b8bc37a0
--- /dev/null
+++ b/doc/api/examples/exampleplugin/Example.json.in
@@ -0,0 +1,18 @@
+{
+//! [1]
+ \"Name\" : \"Example\",
+ \"Version\" : \"0.0.1\",
+ \"CompatVersion\" : \"0.0.1\",
+//! [1]
+//! [2]
+ \"Vendor\" : \"My Company\",
+ \"Copyright\" : \"(C) My Company\",
+ \"License\" : \"BSD\",
+ \"Category\" : \"Examples\",
+ \"Description\" : \"Minimal plugin example.\",
+ \"Url\" : \"http://www.mycompany.com\",
+//! [2]
+//! [3]
+ $$dependencyList
+//! [3]
+}
diff --git a/doc/api/examples/exampleplugin/Example.pluginspec.in b/doc/api/examples/exampleplugin/Example.pluginspec.in
deleted file mode 100644
index 9658ebbe31..0000000000
--- a/doc/api/examples/exampleplugin/Example.pluginspec.in
+++ /dev/null
@@ -1,15 +0,0 @@
-//! [1]
-<plugin name=\"Example\" version=\"0.0.1\" compatVersion=\"0.0.1\">
-//! [1]
-//! [2]
- <vendor>MyCompany</vendor>
- <copyright>(C) MyCompany</copyright>
- <license>BSD</license>
- <description>Minimal plugin example</description>
- <url>http://www.mycompany.com</url>
-//! [2]
-//! [3]
- $$dependencyList
-//! [3]
-</plugin>
-
diff --git a/doc/api/first-plugin.qdoc b/doc/api/first-plugin.qdoc
index 665b26b2f7..6f1e67b0db 100644
--- a/doc/api/first-plugin.qdoc
+++ b/doc/api/first-plugin.qdoc
@@ -141,9 +141,10 @@
\li File
\li Role
\row
- \li \c{Example.pluginspec.in}
- \li Template plugin specification. QMake creates a \c{Example.pluginspec}
- from this file, which is read by \QC to find out about the plugin.
+ \li \c{Example.json.in}
+ \li Plugin meta data template. QMake creates an \c{Example.json}
+ from this file, which is compiled into the plugin as meta data.
+ The meta data is read by \QC to find out about the plugin.
\row
\li \c{example.pro}
\li Project file, used by QMake to generate a Makefile that then is used to
@@ -222,32 +223,32 @@
For more information about qmake, and writing .pro files in general,
see the \l{http://qt-project.org/doc/qt-4.8/qmake-manual.html}{qmake Manual}.
- \section1 Plugin Specification
+ \section1 Plugin Meta Data Template
- The .pluginspec file is an XML file that contains information that is needed by
+ The .json file is a JSON file that contains information that is needed by
the plugin manager to find your plugin and resolve its dependencies before actually
loading your plugin's library file. We will only have a short look at it here.
- For more information, see \l{Plugin Specifications}.
+ For more information, see \l{Plugin Meta Data}.
- The wizard doesn't actually create a .pluginspec file directly, but instead a
- .pluginspec.in file. qmake uses this to generate the actual plugin specification
+ The wizard doesn't actually create a .json file directly, but instead a
+ .json.in file. qmake uses this to generate the actual plugin .json meta data
file, replacing variables like \c{QTCREATOR_VERSION} with their actual values.
- Therefore you need to escape all backslashes and quotes in the .pluginspec.in file
+ Therefore you need to escape all backslashes and quotes in the .json.in file
(i.e. you need to write \c{\\} to get a backslash and \c{\"} to get a quote
- in the generated plugin specification).
+ in the generated plugin JSON meta data).
- \snippet exampleplugin/Example.pluginspec.in 1
+ \snippet exampleplugin/Example.json.in 1
- The main tag of the plugin specification that is created by the wizard
- defines the name of your plugin, its version, and with what version of this plugin
+ The first items in the meta data that is created by the wizard
+ define the name of your plugin, its version, and with what version of this plugin
the current version is binary compatible with.
- \snippet exampleplugin/Example.pluginspec.in 2
+ \snippet exampleplugin/Example.json.in 2
- After the main tag you'll find the information about the plugin
+ After that you'll find the information about the plugin
that you gave in the project wizard.
- \snippet exampleplugin/Example.pluginspec.in 3
+ \snippet exampleplugin/Example.json.in 3
The \c{$$dependencyList} variable is automatically replaced by the dependency information
in \c{QTC_PLUGIN_DEPENDS} and \c{QTC_PLUGIN_RECOMMENDS} from your plugin's .pro file.
@@ -272,6 +273,9 @@
All \QC plugins must be derived from \l{ExtensionSystem::IPlugin} and
are QObjects. The \c{Q_PLUGIN_METADATA} macro is necessary to create a valid Qt plugin.
+ The \c IID given in the macro must be \c{org.qt-project.Qt.QtCreatorPlugin}, to identify it
+ as a \QC plugin, and \c FILE must point to the plugin's meta data file as described
+ in \l{Plugin Meta Data}.
\snippet exampleplugin/exampleplugin.h plugin functions
diff --git a/doc/api/plugin-lifecycle.qdoc b/doc/api/plugin-lifecycle.qdoc
index f3d2b827e8..7004219add 100644
--- a/doc/api/plugin-lifecycle.qdoc
+++ b/doc/api/plugin-lifecycle.qdoc
@@ -24,12 +24,18 @@
manager takes when you start or shut down \QC. This section describes
the process and the state that plugins go through in detail.
+ You can get more information about what happens when you start \QC by running it with the
+ environment variable \c QT_LOGGING_RULES set to \c {qtc.extensionsystem*=true} which enables
+ logging of plugin-related debug output.
+
When you start \QC, the plugin manager does the following:
\list 1
\li Looks in its search paths for
- all .pluginspec files, and reads them. This is the first point where
- loading a plugin can fail in the worst case of a malformed plugin spec.
+ all dynamic libraries, and reads their meta data. All libraries without meta data
+ and all libraries without the \c{org.qt-project.Qt.QtCreatorPlugin} IID are ignored.
+ This is the first point where loading a plugin can fail in the worst case of malformed
+ meta data.
\li Creates an instance of the \l{ExtensionSystem::PluginSpec} class for
each plugin. This class is a container for
diff --git a/doc/api/plugin-specifications.qdoc b/doc/api/plugin-metadata.qdoc
index 0183a8c02d..2318514130 100644
--- a/doc/api/plugin-specifications.qdoc
+++ b/doc/api/plugin-metadata.qdoc
@@ -17,113 +17,115 @@
**************************************************************************/
/*!
- \page plugin-specifications.html
- \title Plugin Specifications
+ \page plugin-meta-data.html
+ \title Plugin Meta Data
- The specification of a plugin is an XML file that contains all
+ The meta data file of a plugin is a JSON file that contains all
information that is necessary for loading the plugin's library,
determining whether plugins are to be loaded and in which order (depending
on e.g. dependencies). In addition, it contains textual descriptions of
who created the plugin, what it is for, and where to find more information about it.
- The file must be located in (a subdir of) one of the plugin manager's
- plugin search paths, and must have the \c .pluginspec extension.
+ The file must be located in one of the include search paths when compiling the plugin,
+ and must have the \c .json extension. The JSON file is compiled into the plugin as meta data,
+ which then is read by \QC when loading plugins.
- \section2 Main Tag
+ \section2 Main Keys
- The root tag is \c plugin. It has the mandatory attributes \c name
- and \c version, and the optional attributes \c compatVersion, \c experimental,
- \c disabledByDefault and \c required.
+ The main keys that are used to identify your your plugin and define default loading behavior,
+ consist of the mandatory keys \c Name and \c Version, and the optional keys \c CompatVersion,
+ \c Experimental, \c DisabledByDefault, \c Required and \c Platform.
\table
\header
- \li Tag
+ \li Key
+ \li Value Type
\li Meaning
\row
- \li plugin
- \li Root element in a plugin's XML file.
- \endtable
- \table
- \header
- \li Attribute
- \li Meaning
- \row
- \li name
+ \li Name
+ \li String
\li This is used as an identifier for the plugin and can e.g.
- be referenced in other plugin's dependencies. It is
- also used to construct the name of the plugin library
- as \c{lib[name].[dll|.so|.dylib]}. (Depending on platform.
- If you use the same string as the \c TARGET in your plugin's
- .pro-file, you are fine.)
+ be referenced in other plugin's dependencies.
\row
- \li version
+ \li Version
+ \li String
\li Version string in the form \c{x.y.z_n}, used for identifying
the plugin. Also see \l{A Note on Plugin Versions}.
\row
- \li compatVersion
+ \li CompatVersion
+ \li String
\li Optional. If not given, it is implicitly
- set to the same value as \c version. The compatibility version
+ set to the same value as \c Version. The compatibility version
states which version of this plugin the current version is
binary backward compatible with and is used to resolve dependencies
- on this plugin. I.e. a \c version of \c{2.1.1} and a
- \c compatVersion of \c{2.0.0} means that this version \c{2.1.1} of the plugin
+ on this plugin. I.e. a \c Version of \c{2.1.1} and a
+ \c CompatVersion of \c{2.0.0} means that this version \c{2.1.1} of the plugin
is binary backward compatible with all versions of the plugin down to \c{2.0.0}
(inclusive).
\row
- \li experimental
- \li Optional. Can be \c true or \c false, defaults to \c false.
+ \li Experimental
+ \li Boolean
+ \li Optional. Defaults to \c false.
Experimental plugins are not loaded by default but must be explicitly
enabled by the user. This attribute should be enabled for new plugins which have the
potential to negatively affect the user experience.
\row
- \li disabledByDefault
- \li Optional. Can be \c true or \c false, defaults to \c false.
+ \li DisabledByDefault
+ \li Boolean
+ \li Optional. Defaults to \c false.
If set, the respective plugin is not loaded by default but must be explicitly
enabled by the user. This should be done for plugins which are not expected
to be used by so many people as to justify the additional resource consumption.
-
\row
- \li required
- \li Optional. Can be \c true or \c false, defaults to \c false.
+ \li Required
+ \li Boolean
+ \li Optional. Defaults to \c false.
Is used as a hint for the \gui{About Plugins...} dialog, that the user may not
manually disable this plugin. Only used for the Core plugin.
+ \row
+ \li Platform
+ \li String
+ \li Optional. A regular expression that matches the names of the platforms the plugin
+ works on. Omitting the tag implies that the plugin is loaded on all platforms.
\endtable
- \section2 Plugin-describing Tags
+ \section2 Plugin-describing Keys
- These are direct children of the \c plugin tag, and are solely used
- for more detailed (user centric) description of the plugin. All of these
+ These are solely used for more detailed (user centric) description of the plugin. All of these
are optional.
\table
\header
- \li Tag
+ \li Key
+ \li Value Type
\li Meaning
\row
- \li category
+ \li Category
+ \li String
\li Defaults to \c Utilities. Is used to put related plugins
under the same tree node in the plugin overview \gui{About Plugins...}.
\row
- \li vendor
+ \li Vendor
+ \li String
\li String that describes the plugin creator/vendor,
like \c{MyCompany}.
\row
- \li copyright
+ \li Copyright
+ \li String
\li A short copyright notice, like \c{(C) 2007-2008 MyCompany}.
\row
- \li platform
- \li A regular expression that matches the names of the platforms the plugin works on.
- Omitting the tag implies that the plugin is loaded on all platforms.
- \row
- \li license
+ \li License
+ \li String or array of strings
\li Possibly multi-line license information about the plugin.
Should still be kept relatively short, since the UI is not
designed for long texts.
\row
- \li description
+ \li Description
+ \li String or array of strings
\li Possibly multi-line description of what the plugin is supposed
to provide.
Should still be kept relatively short, since the UI is not
designed for long texts.
\row
- \li url
+ \li Url
+ \li String
\li Link to further information about the plugin, like
\c{http://www.mycompany-online.com/products/greatplugin}.
\endtable
@@ -131,70 +133,84 @@
\section2 Dependencies
A plugin can have dependencies on other plugins. These are
- specified in the plugin description, to ensure that
+ specified in the plugin meta data, to ensure that
these other plugins are loaded before this plugin.
- The XML element that describes a single dependency is the \c dependency tag,
- with required attributes \c name and \c version. All \c dependency tags
- must be enclosed in a single \c dependencyList tag, which is an optional
- child of the \c plugin tag.
+ Dependencies are declared with the key \c Dependency, which contains an array of JSON objects
+ with required keys \c Name and \c Version, and optional key \c Type.
The following formulas illustrate how the dependency information is matched.
- In the formulas the name of the required plugin (as defined in the attributes
- of the \c dependency tag) is denoted as \c dependencyName
- and the required version of the plugin is denoted as \c dependencyVersion.
- A plugin with given \c name, \c version and \c compatVersion
- (as defined in the attributes of the plugin's \c plugin tag) matches
+ In the formulas the name of the required plugin (as defined in the \c Name of the dependency
+ object) is denoted as \c DependencyName
+ and the required version of the plugin is denoted as \c DependencyVersion.
+ A plugin with given \c Name, \c Version and \c CompatVersion
+ as defined in the plugin meta data matches
the dependency if
\list
- \li its \c name matches \c dependencyName, and
- \li \c {compatVersion <= dependencyVersion <= version}.
+ \li its \c Name matches \c DependencyName, and
+ \li \c {CompatVersion <= DependencyVersion <= Version}.
\endlist
For example a dependency
\code
- <dependency name="SomeOtherPlugin" version="2.3.0_2"/>
+ {
+ "Name" : "SomeOtherPlugin",
+ "Version" : "2.3.0_2"
+ }
\endcode
would be matched by a plugin with
\code
- <plugin name="SomeOtherPlugin" version="3.1.0" compatVersion="2.2.0">
+ {
+ "Name" : "SomeOtherPlugin",
+ "Version" : "3.1.0",
+ "CompatVersion" : "2.2.0",
+ ...
+ }
\endcode
since the name matches, and the version \c{2.3.0_2} given in the dependency tag
lies in the range of \c{2.2.0} and \c{3.1.0}.
\table
\header
- \li Tag
+ \li Key
+ \li Value Type
\li Meaning
\row
- \li dependency
- \li Describes a dependency on another plugin.
+ \li Dependencies
+ \li Array of dependency objects
+ \li Describes the dependencies on other plugins.
\endtable
+
+ A dependency object is a JSON object with the following keys:
\table
\header
- \li Attribute
+ \li Key
+ \li Value Type
\li Meaning
\row
- \li name
+ \li Name
+ \li String
\li The name of the plugin, on which this plugin relies.
\row
- \li version
+ \li Version
+ \li String
\li The version to which the plugin must be compatible to
fill the dependency, in the form \c{x.y.z_n}.
Can be empty if the version does not matter.
\row
- \li type
- \li Optional. Value \c required or \c optional. Defines if the dependency is
- a hard requirement or optional. Defaults to \c{required}.
+ \li Type
+ \li String
+ \li Optional. Value \c Required or \c Optional. Defines if the dependency is
+ a hard requirement or optional. Defaults to \c{Required}.
\endtable
\section3 Optional Dependencies
- A plugin can specify that a dependency on another plugin is optional, by adding the
- \c {type="optional"} attribute to the \c dependency tag:
+ A plugin can specify that a dependency on another plugin is optional, by adding
+ \c {"Type" : "Optional"} to the dependency object:
\list
\li If the dependency can be resolved, the plugin and
- its dependency are loaded and initialized as for \c required dependencies.
+ its dependency are loaded and initialized as for \c Required dependencies.
\li If the dependency cannot be resolved, the plugin is loaded and initialized
as if the dependency was not declared at all.
\endlist
@@ -218,61 +234,77 @@
it passes them on to the plugin's
\l{ExtensionSystem::IPlugin::initialize()}{initialize()} function.
- All command line argument definitions are enclosed by a single \c argumentList
- tag. The individual command line arguments are defined by the \c argument tag,
- with required attribute \c name and an optional attribute \c parameter if the
- command line argument takes an additional parameter. The text that is enclosed
- in the \c argument tag is used as a (one-line) description in the command line
- argument help.
+ Command line arguments are defined through the key \c Arguments, which contains an array
+ of argument objects. Each individual argument object has the required key \c Name, and
+ optional keys \c Parameter and \c Description.
\table
\header
- \li Tag
+ \li Key
+ \li Value Type
\li Meaning
\row
- \li argument
- \li Describes a command line argument that the plugin wants to handle.
+ \li Arguments
+ \li Array of argument objects
+ \li Describes the command line arguments that the plugin wants to handle.
\endtable
+
+ An argument object is a JSON object with the following keys:
\table
\header
- \li Attribute
+ \li Key
+ \li Value Type
\li Meaning
\row
- \li name
+ \li Name
+ \li String
\li The command line argument itself, including the \c - prefix, e.g.
\c{-my-parameter}.
\row
- \li parameter
+ \li Parameter
+ \li String
\li Optional. If this is given, the command line argument expects an
additional parameter, e.g. \c{-my-parameter somevalue}. The
value of this attribute is used as a very short description of the
parameter for the user.
+ \row
+ \li Description
+ \li String
+ \li Optional. A (one-line) description of the argument for the command line argument help.
\endtable
- \section2 Example \c Test.pluginspec
+ \section2 Example \c Test.json
\code
- <plugin name="Test" version="1.0.1" compatVersion="1.0.0">
- <vendor>MyCompany</vendor>
- <copyright>(C) 2007 MyCompany</copyright>
- <license>
- This is a default license bla
- blubbblubb
- end of terms
- </license>
- <description>
- This plugin is just a test.
- it demonstrates the great use of the plugin spec.
- </description>
- <url>http://www.mycompany-online.com/products/greatplugin</url>
- <dependencyList>
- <dependency name="SomeOtherPlugin" version="2.3.0_2"/>
- <dependency name="EvenOther" version="1.0.0"/>
- </dependencyList>
- <argumentList>
- <argument name="-variant" parameter="fancy|boring">Brings up the fancy or boring user interface</argument>
- </argumentList>
- </plugin>
+ {
+ "Name" : "Test",
+ "Version" : "1.0.1",
+ "CompatVersion" : "1.0.0",
+ "Vendor" : "My Company",
+ "Copyright" : "(C) 2007 MyCompany",
+ "License" : [
+ "This is a default license bla",
+ "blubbblubb",
+ "end of terms"
+ ],
+ "Category" : "My Company Additions",
+ "Description" : [
+ "This plugin is just a test.",
+ "It demonstrates the great use of the plugin meta data."
+ ],
+ "Url" : "http://www.mycompany-online.com/products/greatplugin",
+ "Arguments" : [
+ {
+ "Name" : "-variant",
+ "Parameter" : "fancy|boring",
+ "Description" : "Brings up the fancy or boring user interface"
+ }
+ ],
+ "Dependencies" : [
+ { "Name" : "SomeOtherPlugin", "Version" : "2.3.0_2" },
+ { "Name" : "EvenOther", "Version" : "1.0.0" }
+ ]
+ }
\endcode
\section2 A Note on Plugin Versions
diff --git a/doc/doc.pri b/doc/doc.pri
index 3ec1432b2d..5590341240 100644
--- a/doc/doc.pri
+++ b/doc/doc.pri
@@ -54,7 +54,7 @@ DEV_HELP_DEP_FILES = \
$$PWD/api/creating-plugins.qdoc \
$$PWD/api/getting-and-building.qdoc \
$$PWD/api/first-plugin.qdoc \
- $$PWD/api/plugin-specifications.qdoc \
+ $$PWD/api/plugin-metadata.qdoc \
$$PWD/api/plugin-lifecycle.qdoc \
$$PWD/api/pluginmanager.qdoc \
$$PWD/api/qtcreator-dev$${COMPAT}.qdocconf
diff --git a/qbs/imports/QtcPlugin.qbs b/qbs/imports/QtcPlugin.qbs
index 152d43e5b0..d896411c90 100644
--- a/qbs/imports/QtcPlugin.qbs
+++ b/qbs/imports/QtcPlugin.qbs
@@ -7,7 +7,7 @@ QtcProduct {
type: ["dynamiclibrary", "pluginSpec"]
installDir: project.ide_plugin_path
- property var pluginspecreplacements
+ property var pluginJsonReplacements
property var pluginRecommends: []
property string minimumQtVersion: "5.3.1"
@@ -17,7 +17,7 @@ QtcProduct {
destinationDirectory: project.ide_plugin_path
Depends { name: "ExtensionSystem" }
- Depends { name: "pluginspec" }
+ Depends { name: "pluginjson" }
Depends {
condition: project.testsEnabled
name: "Qt.test"
@@ -39,9 +39,9 @@ QtcProduct {
cpp.includePaths: [pluginIncludeBase]
Group {
- name: "PluginSpec"
- files: [ product.name + ".pluginspec.in" ]
- fileTags: ["pluginSpecIn"]
+ name: "PluginMetaData"
+ files: [ product.name + ".json.in" ]
+ fileTags: ["pluginJsonIn"]
}
Group {
diff --git a/qbs/modules/pluginspec/pluginspec.qbs b/qbs/modules/pluginjson/pluginjson.qbs
index a5856d9242..3a2515ae13 100644
--- a/qbs/modules/pluginspec/pluginspec.qbs
+++ b/qbs/modules/pluginjson/pluginjson.qbs
@@ -5,27 +5,31 @@ import qbs.FileInfo
Module {
Depends { id: qtcore; name: "Qt.core" }
- additionalProductTypes: qtcore.versionMajor < 5 ? ["pluginSpec"] : ["qt_plugin_metadata"]
+ additionalProductTypes: ["qt_plugin_metadata"]
Rule {
- inputs: ["pluginSpecIn"]
+ inputs: ["pluginJsonIn"]
Artifact {
- fileTags: ["pluginSpec"]
- filePath: input.fileName.replace(/\.[^\.]*$/,'')
+ fileTags: ["qt_plugin_metadata"]
+ filePath: {
+ var destdir = FileInfo.joinPaths(product.moduleProperty("Qt.core",
+ "generatedFilesDir"), input.fileName);
+ return destdir.replace(/\.[^\.]*$/,'')
+ }
}
prepare: {
var cmd = new JavaScriptCommand();
cmd.description = "prepare " + FileInfo.fileName(output.filePath);
cmd.highlight = "codegen";
- cmd.pluginspecreplacements = product.pluginspecreplacements;
+ cmd.pluginJsonReplacements = product.pluginJsonReplacements;
cmd.plugin_depends = [];
var deps = product.dependencies;
for (var d in deps) {
var depdeps = deps[d].dependencies;
for (var dd in depdeps) {
- if (depdeps[dd].name == 'pluginspec') {
+ if (depdeps[dd].name == 'pluginjson') {
cmd.plugin_depends.push(deps[d].name);
break;
}
@@ -35,7 +39,7 @@ Module {
cmd.sourceCode = function() {
var i;
- var vars = pluginspecreplacements || {};
+ var vars = pluginJsonReplacements || {};
var inf = new TextFile(input.filePath);
var all = inf.readAll();
// replace quoted quotes
@@ -46,15 +50,15 @@ Module {
vars['IDE_VERSION_MAJOR'] = project.ide_version_major;
vars['IDE_VERSION_MINOR'] = project.ide_version_minor;
vars['IDE_VERSION_RELEASE'] = project.ide_version_release;
- var deplist = ["<dependencyList>"];
+ var deplist = [];
for (i in plugin_depends) {
- deplist.push(" <dependency name=\"" + plugin_depends[i] + "\" version=\"" + project.qtcreator_version + "\"/>");
+ deplist.push(" { \"Name\" : \"" + plugin_depends[i] + "\", \"Version\" : \"" + project.qtcreator_version + "\" }");
}
for (i in plugin_recommends) {
- deplist.push(" <dependency name=\"" + plugin_recommends[i] + "\" version=\"" + project.qtcreator_version + "\" type=\"optional\"/>");
+ deplist.push(" { \"Name\" : \"" + plugin_recommends[i] + "\", \"Version\" : \"" + project.qtcreator_version + "\", \"Type\" : \"optional\" }");
}
- deplist.push(" </dependencyList>");
- vars['dependencyList'] = deplist.join("\n");
+ deplist = deplist.join(",\n")
+ vars['dependencyList'] = "\"Dependencies\" : [\n" + deplist + "\n ]";
for (i in vars) {
all = all.replace(new RegExp('\\\$\\\$' + i + '(?!\w)', 'g'), vars[i]);
}
@@ -66,34 +70,5 @@ Module {
return cmd;
}
}
-
- Rule {
- inputs: ["pluginSpec"]
-
- Artifact {
- fileTags: ["qt_plugin_metadata"]
- filePath: {
- var destdir = FileInfo.joinPaths(product.moduleProperty("Qt.core", "generatedFilesDir"),
- input.fileName);
- return destdir.replace(/\.[^\.]*$/, '.json');
- }
- }
-
- prepare: {
- var xslFile = project.path + "/../qtcreatorplugin2json.xsl"; // project is "Plugins"
- var xmlPatternsPath = product.moduleProperty("Qt.core", "binPath") + "/xmlpatterns";
- var args = [
- "-no-format",
- "-output",
- output.filePath,
- xslFile,
- input.filePath
- ];
- var cmd = new Command(xmlPatternsPath, args);
- cmd.description = "generating " + FileInfo.fileName(output.filePath);
- cmd.highlight = "codegen";
- return cmd;
- }
- }
}
diff --git a/qtcreator.pro b/qtcreator.pro
index b5b8ae3405..5034b1bcbd 100644
--- a/qtcreator.pro
+++ b/qtcreator.pro
@@ -18,7 +18,7 @@ unix:!macx:!isEmpty(copydata):SUBDIRS += bin
OTHER_FILES += dist/copyright_template.txt \
$$files(dist/changes-*) \
qtcreator.qbs \
- qbs/pluginspec/pluginspec.qbs \
+ qbs/pluginjson/pluginjson.qbs \
$$files(dist/installer/ifw/config/config-*) \
dist/installer/ifw/packages/org.qtproject.qtcreator/meta/package.xml.in \
dist/installer/ifw/packages/org.qtproject.qtcreator.application/meta/installscript.qs \
diff --git a/scripts/hasCopyright.pl b/scripts/hasCopyright.pl
index 3f7d4dc622..657c51e5fb 100644
--- a/scripts/hasCopyright.pl
+++ b/scripts/hasCopyright.pl
@@ -95,7 +95,7 @@ while (1) {
next;
}
- if (!$hasContact && $file !~ /\.pluginspec\.in$/) {
+ if (!$hasContact && $file !~ /\.json\.in$/) {
print "$file\tERROR\tWrong contact\n";
next;
}
diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.json.in b/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.json.in
new file mode 100644
index 0000000000..910746c9fb
--- /dev/null
+++ b/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.json.in
@@ -0,0 +1,11 @@
+{
+ \"Name\" : \"%PluginName%\",
+ \"Version\" : \"0.0.1\",
+ \"CompatVersion\" : \"0.0.1\",
+ \"Vendor\" : \"%VendorName%\",
+ \"Copyright\" : \"%Copyright%\",
+ \"License\" : \"%License%\",
+ \"Description\" : \"%Description%\",
+ \"Url\" : \"%URL%\",
+ $$dependencyList
+}
diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.pluginspec.in b/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.pluginspec.in
deleted file mode 100644
index 87fec6f177..0000000000
--- a/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.pluginspec.in
+++ /dev/null
@@ -1,8 +0,0 @@
-<plugin name=\"%PluginName%\" version=\"0.0.1\" compatVersion=\"0.0.1\">
- <vendor>%VendorName%</vendor>
- <copyright>%Copyright%</copyright>
- <license>%License%</license>
- <description>%Description%</description>
- <url>%URL%</url>
- $$dependencyList
-</plugin>
diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/wizard.xml b/share/qtcreator/templates/wizards/qtcreatorplugin/wizard.xml
index 3d3dc135f7..088e4ba648 100644
--- a/share/qtcreator/templates/wizards/qtcreatorplugin/wizard.xml
+++ b/share/qtcreator/templates/wizards/qtcreatorplugin/wizard.xml
@@ -44,7 +44,7 @@ leave room for the Qt 4 target page.
<displaycategory>Libraries</displaycategory>
<files>
<file source="myplugin.pro" target="%PluginName:l%.pro" openproject="true"/>
- <file source="MyPlugin.pluginspec.in" target="%PluginName%.pluginspec.in" openeditor="true"/>
+ <file source="MyPlugin.json.in" target="%PluginName%.json.in" openeditor="true"/>
<file source="myplugin_global.h" target="%PluginName:l%_global.%CppHeaderSuffix%" openeditor="true"/>
<file source="mypluginconstants.h" target="%PluginName:l%constants.%CppHeaderSuffix%" openeditor="true"/>
<file source="myplugin.h" target="%PluginName:l%plugin.%CppHeaderSuffix%" openeditor="true"/>
@@ -69,12 +69,12 @@ leave room for the Qt 4 target page.
<fielddescription>Copyright:</fielddescription>
</field>
<field name="License">
- <fieldcontrol class="QTextEdit"
- defaulttext="Put your license text here" />
+ <fieldcontrol class="QLineEdit"
+ defaulttext="Put your license information here" />
<fielddescription>License:</fielddescription>
</field>
<field name="Description">
- <fieldcontrol class="QTextEdit"
+ <fieldcontrol class="QLineEdit"
defaulttext="Put a short description of your plugin here"/>
<fielddescription>Description:</fielddescription>
</field>
diff --git a/src/app/main.cpp b/src/app/main.cpp
index 73703551a4..eeb4e56a8b 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -314,7 +314,7 @@ int main(int argc, char **argv)
#endif
// Manually determine -settingspath command line option
- // We can't use the regular way of the plugin manager, because that needs to parse pluginspecs
+ // We can't use the regular way of the plugin manager, because that needs to parse plugin meta data
// but the settings path can influence which plugins are enabled
QString settingsPath;
QStringList customPluginPaths;
@@ -358,7 +358,7 @@ int main(int argc, char **argv)
QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR),
QLatin1String("QtCreator"));
PluginManager pluginManager;
- PluginManager::setFileExtension(QLatin1String("pluginspec"));
+ PluginManager::setPluginIID(QLatin1String("org.qt-project.Qt.QtCreatorPlugin"));
PluginManager::setGlobalSettings(globalSettings);
PluginManager::setSettings(settings);
@@ -449,7 +449,7 @@ int main(int argc, char **argv)
}
if (!coreplugin) {
QString nativePaths = QDir::toNativeSeparators(pluginPaths.join(QLatin1Char(',')));
- const QString reason = QCoreApplication::translate("Application", "Could not find 'Core.pluginspec' in %1").arg(nativePaths);
+ const QString reason = QCoreApplication::translate("Application", "Could not find Core plugin in %1").arg(nativePaths);
displayError(msgCoreLoadFailure(reason));
return 1;
}
diff --git a/src/libs/extensionsystem/extensionsystem_global.h b/src/libs/extensionsystem/extensionsystem_global.h
index 2f5f4857ad..9a216178a7 100644
--- a/src/libs/extensionsystem/extensionsystem_global.h
+++ b/src/libs/extensionsystem/extensionsystem_global.h
@@ -30,6 +30,7 @@
#ifndef EXTENSIONSYSTEM_GLOBAL_H
#define EXTENSIONSYSTEM_GLOBAL_H
+#include <QLoggingCategory>
#include <qglobal.h>
#if defined(EXTENSIONSYSTEM_LIBRARY)
@@ -38,4 +39,6 @@
# define EXTENSIONSYSTEM_EXPORT Q_DECL_IMPORT
#endif
+Q_DECLARE_LOGGING_CATEGORY(pluginLog)
+
#endif // EXTENSIONSYSTEM_GLOBAL_H
diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp
index 7477cc3b49..deac311ee3 100644
--- a/src/libs/extensionsystem/pluginmanager.cpp
+++ b/src/libs/extensionsystem/pluginmanager.cpp
@@ -40,6 +40,7 @@
#include <QDateTime>
#include <QDir>
#include <QFile>
+#include <QLibrary>
#include <QMetaProperty>
#include <QSettings>
#include <QTextStream>
@@ -53,6 +54,8 @@
#include <QTest>
#endif
+Q_LOGGING_CATEGORY(pluginLog, "qtc.extensionsystem")
+
const char C_IGNORED_PLUGINS[] = "Plugins/Ignored";
const char C_FORCEENABLED_PLUGINS[] = "Plugins/ForceEnabled";
const int DELAYED_INITIALIZE_INTERVAL = 20; // ms
@@ -406,25 +409,25 @@ void PluginManager::setPluginPaths(const QStringList &paths)
}
/*!
- The file extension of plugin description files.
- The default is "xml".
+ The IID that valid plugins must have.
- \sa setFileExtension()
+ \sa setPluginIID()
*/
-QString PluginManager::fileExtension()
+QString PluginManager::pluginIID()
{
- return d->extension;
+ return d->pluginIID;
}
/*!
- Sets the file extension of plugin description files.
- The default is "xml".
+ Sets the IID that valid plugins must have. Only plugins with this IID are loaded, others are
+ silently ignored.
+
At the moment this must be called before setPluginPaths() is called.
- // ### TODO let this + setPluginPaths read the plugin specs lazyly whenever loadPlugins() or plugins() is called.
+ // ### TODO let this + setPluginPaths read the plugin meta data lazyly whenever loadPlugins() or plugins() is called.
*/
-void PluginManager::setFileExtension(const QString &extension)
+void PluginManager::setPluginIID(const QString &iid)
{
- d->extension = extension;
+ d->pluginIID = iid;
}
/*!
@@ -892,7 +895,6 @@ void PluginManagerPrivate::nextDelayedInitialize()
\internal
*/
PluginManagerPrivate::PluginManagerPrivate(PluginManager *pluginManager) :
- extension(QLatin1String("xml")),
delayedInitializeTimer(0),
shutdownEventLoop(0),
m_profileElapsedMS(0),
@@ -1216,6 +1218,8 @@ void PluginManagerPrivate::loadPlugin(PluginSpec *spec, PluginSpec::State destSt
*/
void PluginManagerPrivate::setPluginPaths(const QStringList &paths)
{
+ qCDebug(pluginLog) << "Plugin search paths:" << paths;
+ qCDebug(pluginLog) << "Required IID:" << pluginIID;
pluginPaths = paths;
readSettings();
readPluginPaths();
@@ -1231,14 +1235,16 @@ void PluginManagerPrivate::readPluginPaths()
pluginSpecs.clear();
pluginCategories.clear();
- QStringList specFiles;
+ QStringList pluginFiles;
QStringList searchPaths = pluginPaths;
while (!searchPaths.isEmpty()) {
const QDir dir(searchPaths.takeFirst());
- const QString pattern = QLatin1String("*.") + extension;
- const QFileInfoList files = dir.entryInfoList(QStringList(pattern), QDir::Files);
- foreach (const QFileInfo &file, files)
- specFiles << file.absoluteFilePath();
+ const QFileInfoList files = dir.entryInfoList(QDir::Files | QDir::NoSymLinks);
+ foreach (const QFileInfo &file, files) {
+ const QString filePath = file.absoluteFilePath();
+ if (QLibrary::isLibrary(filePath))
+ pluginFiles.append(filePath);
+ }
const QFileInfoList dirs = dir.entryInfoList(QDir::Dirs|QDir::NoDotAndDotDot);
foreach (const QFileInfo &subdir, dirs)
searchPaths << subdir.absoluteFilePath();
@@ -1246,9 +1252,10 @@ void PluginManagerPrivate::readPluginPaths()
defaultCollection = new PluginCollection(QString());
pluginCategories.insert(QString(), defaultCollection);
- foreach (const QString &specFile, specFiles) {
+ foreach (const QString &pluginFile, pluginFiles) {
PluginSpec *spec = new PluginSpec;
- spec->d->read(specFile);
+ if (!spec->d->read(pluginFile)) // not a Qt Creator plugin
+ continue;
PluginCollection *collection = 0;
// find correct plugin collection or create a new one
diff --git a/src/libs/extensionsystem/pluginmanager.h b/src/libs/extensionsystem/pluginmanager.h
index 31f129980b..0d45d850d5 100644
--- a/src/libs/extensionsystem/pluginmanager.h
+++ b/src/libs/extensionsystem/pluginmanager.h
@@ -118,10 +118,10 @@ public:
static void loadPlugins();
static QStringList pluginPaths();
static void setPluginPaths(const QStringList &paths);
+ static QString pluginIID();
+ static void setPluginIID(const QString &iid);
static QList<PluginSpec *> plugins();
static QHash<QString, PluginCollection *> pluginCollections();
- static void setFileExtension(const QString &extension);
- static QString fileExtension();
static bool hasError();
// Settings
diff --git a/src/libs/extensionsystem/pluginmanager_p.h b/src/libs/extensionsystem/pluginmanager_p.h
index b3f845aa66..b7e22f6986 100644
--- a/src/libs/extensionsystem/pluginmanager_p.h
+++ b/src/libs/extensionsystem/pluginmanager_p.h
@@ -102,7 +102,7 @@ public:
QList<PluginSpec *> pluginSpecs;
QList<TestSpec> testSpecs;
QStringList pluginPaths;
- QString extension;
+ QString pluginIID;
QList<QObject *> allObjects; // ### make this a QList<QPointer<QObject> > > ?
QStringList defaultDisabledPlugins; // Plugins/Ignored from install settings
QStringList defaultEnabledPlugins; // Plugins/ForceEnabled from install settings
diff --git a/src/libs/extensionsystem/pluginspec.cpp b/src/libs/extensionsystem/pluginspec.cpp
index af38c01890..9b0272f081 100644
--- a/src/libs/extensionsystem/pluginspec.cpp
+++ b/src/libs/extensionsystem/pluginspec.cpp
@@ -39,17 +39,20 @@
#include <QDir>
#include <QFile>
#include <QFileInfo>
+#include <QJsonArray>
+#include <QJsonDocument>
+#include <QJsonObject>
+#include <QJsonValue>
#include <QPluginLoader>
#include <QRegExp>
-#include <QXmlStreamReader>
/*!
\class ExtensionSystem::PluginDependency
\brief The PluginDependency class contains the name and required compatible
version number of a plugin's dependency.
- This reflects the data of a dependency tag in the plugin's XML description
- file. The name and version are used to resolve the dependency. That is,
+ This reflects the data of a dependency object in the plugin's meta data.
+ The name and version are used to resolve the dependency. That is,
a plugin with the given name and
plugin \c {compatibility version <= dependency version <= plugin version} is searched for.
@@ -86,9 +89,8 @@
/*!
\class ExtensionSystem::PluginSpec
- \brief The PluginSpec class contains the information of the plugin's XML
- description file and
- information about the plugin's current state.
+ \brief The PluginSpec class contains the information of the plugin's embedded meta data
+ and information about the plugin's current state.
The plugin spec is also filled with more information as the plugin
goes through its loading process (see PluginSpec::State).
@@ -104,9 +106,9 @@
The state gives a hint on what went wrong in case of an error.
\value Invalid
- Starting point: Even the XML description file was not read.
+ Starting point: Even the plugin meta data was not read.
\value Read
- The XML description file has been successfully read, and its
+ The plugin meta data has been successfully read, and its
information is available via the PluginSpec.
\value Resolved
The dependencies given in the description file have been
@@ -448,31 +450,30 @@ QHash<PluginDependency, PluginSpec *> PluginSpec::dependencySpecs() const
//==========PluginSpecPrivate==================
namespace {
- const char PLUGIN[] = "plugin";
- const char PLUGIN_NAME[] = "name";
- const char PLUGIN_VERSION[] = "version";
- const char PLUGIN_COMPATVERSION[] = "compatVersion";
- const char PLUGIN_REQUIRED[] = "required";
- const char PLUGIN_EXPERIMENTAL[] = "experimental";
- const char PLUGIN_DISABLED_BY_DEFAULT[] = "disabledByDefault";
- const char VENDOR[] = "vendor";
- const char COPYRIGHT[] = "copyright";
- const char LICENSE[] = "license";
- const char DESCRIPTION[] = "description";
- const char URL[] = "url";
- const char CATEGORY[] = "category";
- const char PLATFORM[] = "platform";
- const char DEPENDENCYLIST[] = "dependencyList";
- const char DEPENDENCY[] = "dependency";
- const char DEPENDENCY_NAME[] = "name";
- const char DEPENDENCY_VERSION[] = "version";
- const char DEPENDENCY_TYPE[] = "type";
+ const char PLUGIN_METADATA[] = "MetaData";
+ const char PLUGIN_NAME[] = "Name";
+ const char PLUGIN_VERSION[] = "Version";
+ const char PLUGIN_COMPATVERSION[] = "CompatVersion";
+ const char PLUGIN_REQUIRED[] = "Required";
+ const char PLUGIN_EXPERIMENTAL[] = "Experimental";
+ const char PLUGIN_DISABLED_BY_DEFAULT[] = "DisabledByDefault";
+ const char VENDOR[] = "Vendor";
+ const char COPYRIGHT[] = "Copyright";
+ const char LICENSE[] = "License";
+ const char DESCRIPTION[] = "Description";
+ const char URL[] = "Url";
+ const char CATEGORY[] = "Category";
+ const char PLATFORM[] = "Platform";
+ const char DEPENDENCIES[] = "Dependencies";
+ const char DEPENDENCY_NAME[] = "Name";
+ const char DEPENDENCY_VERSION[] = "Version";
+ const char DEPENDENCY_TYPE[] = "Type";
const char DEPENDENCY_TYPE_SOFT[] = "optional";
const char DEPENDENCY_TYPE_HARD[] = "required";
- const char ARGUMENTLIST[] = "argumentList";
- const char ARGUMENT[] = "argument";
- const char ARGUMENT_NAME[] = "name";
- const char ARGUMENT_PARAMETER[] = "parameter";
+ const char ARGUMENTS[] = "Arguments";
+ const char ARGUMENT_NAME[] = "Name";
+ const char ARGUMENT_PARAMETER[] = "Parameter";
+ const char ARGUMENT_DESCRIPTION[] = "Description";
}
/*!
\internal
@@ -494,9 +495,11 @@ PluginSpecPrivate::PluginSpecPrivate(PluginSpec *spec)
/*!
\internal
+ Returns false if the file does not represent a Qt Creator plugin.
*/
bool PluginSpecPrivate::read(const QString &fileName)
{
+ qCDebug(pluginLog) << "\nReading meta data of" << fileName;
name
= version
= compatVersion
@@ -512,30 +515,18 @@ bool PluginSpecPrivate::read(const QString &fileName)
hasError = false;
errorString.clear();
dependencies.clear();
- QFile file(fileName);
- if (!file.open(QIODevice::ReadOnly))
- return reportError(tr("Cannot open file %1 for reading: %2")
- .arg(QDir::toNativeSeparators(file.fileName()), file.errorString()));
- QFileInfo fileInfo(file);
+ QFileInfo fileInfo(fileName);
location = fileInfo.absolutePath();
filePath = fileInfo.absoluteFilePath();
- QXmlStreamReader reader(&file);
- while (!reader.atEnd()) {
- reader.readNext();
- switch (reader.tokenType()) {
- case QXmlStreamReader::StartElement:
- readPluginSpec(reader);
- break;
- default:
- break;
- }
+ loader.setFileName(filePath);
+ if (loader.fileName().isEmpty()) {
+ qCDebug(pluginLog) << "Cannot open file";
+ return false;
}
- if (reader.hasError())
- return reportError(tr("Error parsing file %1: %2, at line %3, column %4")
- .arg(QDir::toNativeSeparators(file.fileName()))
- .arg(reader.errorString())
- .arg(reader.lineNumber())
- .arg(reader.columnNumber()));
+
+ if (!readMetaData(loader.metaData()))
+ return false;
+
state = PluginSpec::Read;
return true;
}
@@ -576,238 +567,251 @@ bool PluginSpecPrivate::reportError(const QString &err)
{
errorString = err;
hasError = true;
- return false;
+ return true;
}
-static inline QString msgAttributeMissing(const char *elt, const char *attribute)
+static inline QString msgValueMissing(const char *key)
{
- return QCoreApplication::translate("PluginSpec", "\"%1\" misses attribute \"%2\"").arg(QLatin1String(elt), QLatin1String(attribute));
+ return QCoreApplication::translate("PluginSpec", "\"%1\" is missing").arg(QLatin1String(key));
}
-static inline QString msgInvalidFormat(const char *content)
+static inline QString msgValueIsNotAString(const char *key)
{
- return QCoreApplication::translate("PluginSpec", "\"%1\" has invalid format").arg(QLatin1String(content));
+ return QCoreApplication::translate("PluginSpec", "Value for key \"%1\" is not a string")
+ .arg(QLatin1String(key));
}
-static inline QString msgInvalidElement(const QString &name)
+static inline QString msgValueIsNotABool(const char *key)
{
- return QCoreApplication::translate("PluginSpec", "Invalid element \"%1\"").arg(name);
+ return QCoreApplication::translate("PluginSpec", "Value for key \"%1\" is not a bool")
+ .arg(QLatin1String(key));
}
-static inline QString msgUnexpectedClosing(const QString &name)
+static inline QString msgValueIsNotAObjectArray(const char *key)
{
- return QCoreApplication::translate("PluginSpec", "Unexpected closing element \"%1\"").arg(name);
+ return QCoreApplication::translate("PluginSpec", "Value for key \"%1\" is not an array of objects")
+ .arg(QLatin1String(key));
}
-static inline QString msgUnexpectedToken()
+static inline QString msgValueIsNotAMultilineString(const char *key)
{
- return QCoreApplication::translate("PluginSpec", "Unexpected token");
+ return QCoreApplication::translate("PluginSpec", "Value for key \"%1\" is not a string and not an array of strings")
+ .arg(QLatin1String(key));
}
-/*!
- \internal
-*/
-void PluginSpecPrivate::readPluginSpec(QXmlStreamReader &reader)
+static inline QString msgInvalidFormat(const char *key, const QString &content)
{
- if (reader.name() != QLatin1String(PLUGIN)) {
- reader.raiseError(QCoreApplication::translate("PluginSpec", "Expected element \"%1\" as top level element")
- .arg(QLatin1String(PLUGIN)));
- return;
- }
- name = reader.attributes().value(QLatin1String(PLUGIN_NAME)).toString();
- if (name.isEmpty()) {
- reader.raiseError(msgAttributeMissing(PLUGIN, PLUGIN_NAME));
- return;
- }
- version = reader.attributes().value(QLatin1String(PLUGIN_VERSION)).toString();
- if (version.isEmpty()) {
- reader.raiseError(msgAttributeMissing(PLUGIN, PLUGIN_VERSION));
- return;
- }
- if (!isValidVersion(version)) {
- reader.raiseError(msgInvalidFormat(PLUGIN_VERSION));
- return;
- }
- compatVersion = reader.attributes().value(QLatin1String(PLUGIN_COMPATVERSION)).toString();
- if (!compatVersion.isEmpty() && !isValidVersion(compatVersion)) {
- reader.raiseError(msgInvalidFormat(PLUGIN_COMPATVERSION));
- return;
- } else if (compatVersion.isEmpty()) {
- compatVersion = version;
- }
- required = readBooleanValue(reader, PLUGIN_REQUIRED);
- experimental = readBooleanValue(reader, PLUGIN_EXPERIMENTAL);
- disabledByDefault = readBooleanValue(reader, PLUGIN_DISABLED_BY_DEFAULT);
- if (reader.hasError())
- return;
- if (experimental)
- disabledByDefault = true;
- enabledInSettings = !disabledByDefault;
- while (!reader.atEnd()) {
- reader.readNext();
- switch (reader.tokenType()) {
- case QXmlStreamReader::StartElement: {
- const QStringRef element = reader.name();
- if (element == QLatin1String(VENDOR))
- vendor = reader.readElementText().trimmed();
- else if (element == QLatin1String(COPYRIGHT))
- copyright = reader.readElementText().trimmed();
- else if (element == QLatin1String(LICENSE))
- license = reader.readElementText().trimmed();
- else if (element == QLatin1String(DESCRIPTION))
- description = reader.readElementText().trimmed();
- else if (element == QLatin1String(URL))
- url = reader.readElementText().trimmed();
- else if (element == QLatin1String(CATEGORY))
- category = reader.readElementText().trimmed();
- else if (element == QLatin1String(PLATFORM)) {
- const QString platformSpec = reader.readElementText().trimmed();
- if (!platformSpec.isEmpty()) {
- platformSpecification.setPattern(platformSpec);
- if (!platformSpecification.isValid())
- reader.raiseError(QLatin1String("Invalid platform specification \"")
- + platformSpec + QLatin1String("\": ")
- + platformSpecification.errorString());
- }
- } else if (element == QLatin1String(DEPENDENCYLIST))
- readDependencies(reader);
- else if (element == QLatin1String(ARGUMENTLIST))
- readArgumentDescriptions(reader);
- else
- reader.raiseError(msgInvalidElement(element.toString()));
- }
- break;
- case QXmlStreamReader::EndDocument:
- case QXmlStreamReader::Comment:
- case QXmlStreamReader::EndElement:
- case QXmlStreamReader::Characters:
- break;
- default:
- reader.raiseError(msgUnexpectedToken());
- break;
- }
- }
+ return QCoreApplication::translate("PluginSpec", "Value \"%2\" for key \"%1\" has invalid format")
+ .arg(QLatin1String(key), content);
}
-/*!
- \internal
-*/
-void PluginSpecPrivate::readArgumentDescriptions(QXmlStreamReader &reader)
-{
- while (!reader.atEnd()) {
- reader.readNext();
- switch (reader.tokenType()) {
- case QXmlStreamReader::StartElement:
- if (reader.name() == QLatin1String(ARGUMENT))
- readArgumentDescription(reader);
- else
- reader.raiseError(msgInvalidElement(reader.name().toString()));
- break;
- case QXmlStreamReader::Comment:
- case QXmlStreamReader::Characters:
- break;
- case QXmlStreamReader::EndElement:
- if (reader.name() == QLatin1String(ARGUMENTLIST))
- return;
- reader.raiseError(msgUnexpectedClosing(reader.name().toString()));
- break;
- default:
- reader.raiseError(msgUnexpectedToken());
- break;
+static inline bool readMultiLineString(const QJsonValue &value, QString *out)
+{
+ if (!out) {
+ qCWarning(pluginLog) << Q_FUNC_INFO << "missing output parameter";
+ return false;
+ }
+ if (value.isString()) {
+ *out = value.toString();
+ } else if (value.isArray()) {
+ QJsonArray array = value.toArray();
+ QStringList lines;
+ foreach (const QJsonValue &v, array) {
+ if (!v.isString())
+ return false;
+ lines.append(v.toString());
}
+ *out = lines.join(QLatin1Char('\n'));
+ } else {
+ return false;
}
+ return true;
}
/*!
\internal
*/
-void PluginSpecPrivate::readArgumentDescription(QXmlStreamReader &reader)
+bool PluginSpecPrivate::readMetaData(const QJsonObject &metaData)
{
- PluginArgumentDescription arg;
- arg.name = reader.attributes().value(QLatin1String(ARGUMENT_NAME)).toString();
- if (arg.name.isEmpty()) {
- reader.raiseError(msgAttributeMissing(ARGUMENT, ARGUMENT_NAME));
- return;
+ qCDebug(pluginLog) << "MetaData:" << QJsonDocument(metaData).toJson();
+ QJsonValue value;
+ value = metaData.value(QLatin1String("IID"));
+ if (!value.isString()) {
+ qCDebug(pluginLog) << "Not a plugin (no string IID found)";
+ return false;
+ }
+ if (value.toString() != PluginManager::pluginIID()) {
+ qCDebug(pluginLog) << "Plugin ignored (IID does not match)";
+ return false;
}
- arg.parameter = reader.attributes().value(QLatin1String(ARGUMENT_PARAMETER)).toString();
- arg.description = reader.readElementText();
- if (reader.tokenType() != QXmlStreamReader::EndElement)
- reader.raiseError(msgUnexpectedToken());
- argumentDescriptions.push_back(arg);
-}
-bool PluginSpecPrivate::readBooleanValue(QXmlStreamReader &reader, const char *key)
-{
- const QStringRef valueString = reader.attributes().value(QLatin1String(key));
- const bool isOn = valueString.compare(QLatin1String("true"), Qt::CaseInsensitive) == 0;
- if (!valueString.isEmpty() && !isOn
- && valueString.compare(QLatin1String("false"), Qt::CaseInsensitive) != 0) {
- reader.raiseError(msgInvalidFormat(key));
+ value = metaData.value(QLatin1String(PLUGIN_METADATA));
+ if (!value.isObject())
+ return reportError(tr("Plugin meta data not found"));
+ QJsonObject pluginInfo = value.toObject();
+
+ value = pluginInfo.value(QLatin1String(PLUGIN_NAME));
+ if (value.isUndefined())
+ return reportError(msgValueMissing(PLUGIN_NAME));
+ if (!value.isString())
+ return reportError(msgValueIsNotAString(PLUGIN_NAME));
+ name = value.toString();
+
+ value = pluginInfo.value(QLatin1String(PLUGIN_VERSION));
+ if (value.isUndefined())
+ return reportError(msgValueMissing(PLUGIN_VERSION));
+ if (!value.isString())
+ return reportError(msgValueIsNotAString(PLUGIN_VERSION));
+ version = value.toString();
+ if (!isValidVersion(version))
+ return reportError(msgInvalidFormat(PLUGIN_VERSION, version));
+
+ value = pluginInfo.value(QLatin1String(PLUGIN_COMPATVERSION));
+ if (!value.isUndefined() && !value.isString())
+ return reportError(msgValueIsNotAString(PLUGIN_COMPATVERSION));
+ compatVersion = value.toString(version);
+ if (!value.isUndefined() && !isValidVersion(compatVersion))
+ return reportError(msgInvalidFormat(PLUGIN_COMPATVERSION, compatVersion));
+
+ value = pluginInfo.value(QLatin1String(PLUGIN_REQUIRED));
+ if (!value.isUndefined() && !value.isBool())
+ return reportError(msgValueIsNotABool(PLUGIN_REQUIRED));
+ required = value.toBool(false);
+ qCDebug(pluginLog) << "required =" << required;
+
+ value = pluginInfo.value(QLatin1String(PLUGIN_EXPERIMENTAL));
+ if (!value.isUndefined() && !value.isBool())
+ return reportError(msgValueIsNotABool(PLUGIN_EXPERIMENTAL));
+ experimental = value.toBool(false);
+ qCDebug(pluginLog) << "experimental =" << experimental;
+
+ value = pluginInfo.value(QLatin1String(PLUGIN_DISABLED_BY_DEFAULT));
+ if (!value.isUndefined() && !value.isBool())
+ return reportError(msgValueIsNotABool(PLUGIN_DISABLED_BY_DEFAULT));
+ disabledByDefault = value.toBool(false);
+ qCDebug(pluginLog) << "disabledByDefault =" << disabledByDefault;
+
+ if (experimental)
+ disabledByDefault = true;
+ enabledInSettings = !disabledByDefault;
+
+ value = pluginInfo.value(QLatin1String(VENDOR));
+ if (!value.isUndefined() && !value.isString())
+ return reportError(msgValueIsNotAString(VENDOR));
+ vendor = value.toString();
+
+ value = pluginInfo.value(QLatin1String(COPYRIGHT));
+ if (!value.isUndefined() && !value.isString())
+ return reportError(msgValueIsNotAString(COPYRIGHT));
+ copyright = value.toString();
+
+ value = pluginInfo.value(QLatin1String(DESCRIPTION));
+ if (!value.isUndefined() && !readMultiLineString(value, &description))
+ return reportError(msgValueIsNotAString(DESCRIPTION));
+
+ value = pluginInfo.value(QLatin1String(URL));
+ if (!value.isUndefined() && !value.isString())
+ return reportError(msgValueIsNotAString(URL));
+ url = value.toString();
+
+ value = pluginInfo.value(QLatin1String(CATEGORY));
+ if (!value.isUndefined() && !value.isString())
+ return reportError(msgValueIsNotAString(CATEGORY));
+ category = value.toString();
+
+ value = pluginInfo.value(QLatin1String(LICENSE));
+ if (!value.isUndefined() && !readMultiLineString(value, &license))
+ return reportError(msgValueIsNotAMultilineString(LICENSE));
+
+ value = pluginInfo.value(QLatin1String(PLATFORM));
+ if (!value.isUndefined() && !value.isString())
+ return reportError(msgValueIsNotAString(PLATFORM));
+ const QString platformSpec = value.toString().trimmed();
+ if (!platformSpec.isEmpty()) {
+ platformSpecification.setPattern(platformSpec);
+ if (!platformSpecification.isValid())
+ return reportError(tr("Invalid platform specification \"%1\": %2")
+ .arg(platformSpec, platformSpecification.errorString()));
}
- return isOn;
-}
-/*!
- \internal
-*/
-void PluginSpecPrivate::readDependencies(QXmlStreamReader &reader)
-{
- while (!reader.atEnd()) {
- reader.readNext();
- switch (reader.tokenType()) {
- case QXmlStreamReader::StartElement:
- if (reader.name() == QLatin1String(DEPENDENCY))
- readDependencyEntry(reader);
- else
- reader.raiseError(msgInvalidElement(reader.name().toString()));
- break;
- case QXmlStreamReader::Comment:
- case QXmlStreamReader::Characters:
- break;
- case QXmlStreamReader::EndElement:
- if (reader.name() == QLatin1String(DEPENDENCYLIST))
- return;
- reader.raiseError(msgUnexpectedClosing(reader.name().toString()));
- break;
- default:
- reader.raiseError(msgUnexpectedToken());
- break;
+ value = pluginInfo.value(QLatin1String(DEPENDENCIES));
+ if (!value.isUndefined() && !value.isArray())
+ return reportError(msgValueIsNotAObjectArray(DEPENDENCIES));
+ if (!value.isUndefined()) {
+ QJsonArray array = value.toArray();
+ foreach (const QJsonValue &v, array) {
+ if (!v.isObject())
+ return reportError(msgValueIsNotAObjectArray(DEPENDENCIES));
+ QJsonObject dependencyObject = v.toObject();
+ PluginDependency dep;
+ value = dependencyObject.value(QLatin1String(DEPENDENCY_NAME));
+ if (value.isUndefined())
+ return reportError(tr("Dependency: %1").arg(msgValueMissing(DEPENDENCY_NAME)));
+ if (!value.isString())
+ return reportError(tr("Dependency: %1").arg(msgValueIsNotAString(DEPENDENCY_NAME)));
+ dep.name = value.toString();
+ value = dependencyObject.value(QLatin1String(DEPENDENCY_VERSION));
+ if (!value.isUndefined() && !value.isString())
+ return reportError(tr("Dependency: %1").arg(msgValueIsNotAString(DEPENDENCY_VERSION)));
+ dep.version = value.toString();
+ if (!isValidVersion(dep.version))
+ return reportError(tr("Dependency: %1").arg(msgInvalidFormat(DEPENDENCY_VERSION,
+ dep.version)));
+ dep.type = PluginDependency::Required;
+ value = dependencyObject.value(QLatin1String(DEPENDENCY_TYPE));
+ if (!value.isUndefined() && !value.isString())
+ return reportError(tr("Dependency: %1").arg(msgValueIsNotAString(DEPENDENCY_TYPE)));
+ if (!value.isUndefined()) {
+ const QString typeValue = value.toString();
+ if (typeValue.toLower() == QLatin1String(DEPENDENCY_TYPE_HARD)) {
+ dep.type = PluginDependency::Required;
+ } else if (typeValue.toLower() == QLatin1String(DEPENDENCY_TYPE_SOFT)) {
+ dep.type = PluginDependency::Optional;
+ } else {
+ return reportError(tr("Dependency: \"%1\" must be \"%2\" or \"%3\" (is \"%4\")")
+ .arg(QLatin1String(DEPENDENCY_TYPE),
+ QLatin1String(DEPENDENCY_TYPE_HARD),
+ QLatin1String(DEPENDENCY_TYPE_SOFT),
+ typeValue));
+ }
+ }
+ dependencies.append(dep);
}
}
-}
-/*!
- \internal
-*/
-void PluginSpecPrivate::readDependencyEntry(QXmlStreamReader &reader)
-{
- PluginDependency dep;
- dep.name = reader.attributes().value(QLatin1String(DEPENDENCY_NAME)).toString();
- if (dep.name.isEmpty()) {
- reader.raiseError(msgAttributeMissing(DEPENDENCY, DEPENDENCY_NAME));
- return;
- }
- dep.version = reader.attributes().value(QLatin1String(DEPENDENCY_VERSION)).toString();
- if (!dep.version.isEmpty() && !isValidVersion(dep.version)) {
- reader.raiseError(msgInvalidFormat(DEPENDENCY_VERSION));
- return;
- }
- dep.type = PluginDependency::Required;
- if (reader.attributes().hasAttribute(QLatin1String(DEPENDENCY_TYPE))) {
- const QStringRef typeValue = reader.attributes().value(QLatin1String(DEPENDENCY_TYPE));
- if (typeValue == QLatin1String(DEPENDENCY_TYPE_HARD)) {
- dep.type = PluginDependency::Required;
- } else if (typeValue == QLatin1String(DEPENDENCY_TYPE_SOFT)) {
- dep.type = PluginDependency::Optional;
- } else {
- reader.raiseError(msgInvalidFormat(DEPENDENCY_TYPE));
- return;
+ value = pluginInfo.value(QLatin1String(ARGUMENTS));
+ if (!value.isUndefined() && !value.isArray())
+ return reportError(msgValueIsNotAObjectArray(ARGUMENTS));
+ if (!value.isUndefined()) {
+ QJsonArray array = value.toArray();
+ foreach (const QJsonValue &v, array) {
+ if (!v.isObject())
+ return reportError(msgValueIsNotAObjectArray(ARGUMENTS));
+ QJsonObject argumentObject = v.toObject();
+ PluginArgumentDescription arg;
+ value = argumentObject.value(QLatin1String(ARGUMENT_NAME));
+ if (value.isUndefined())
+ return reportError(tr("Argument: %1").arg(msgValueMissing(ARGUMENT_NAME)));
+ if (!value.isString())
+ return reportError(tr("Argument: %1").arg(msgValueIsNotAString(ARGUMENT_NAME)));
+ arg.name = value.toString();
+ if (arg.name.isEmpty())
+ return reportError(tr("Argument: \"%1\" is empty").arg(QLatin1String(ARGUMENT_NAME)));
+ value = argumentObject.value(QLatin1String(ARGUMENT_DESCRIPTION));
+ if (!value.isUndefined() && !value.isString())
+ return reportError(tr("Argument: %1").arg(msgValueIsNotAString(ARGUMENT_DESCRIPTION)));
+ arg.description = value.toString();
+ value = argumentObject.value(QLatin1String(ARGUMENT_PARAMETER));
+ if (!value.isUndefined() && !value.isString())
+ return reportError(tr("Argument: %1").arg(msgValueIsNotAString(ARGUMENT_PARAMETER)));
+ arg.parameter = value.toString();
+ argumentDescriptions.append(arg);
+ qCDebug(pluginLog) << "Argument:" << arg.name << "Parameter:" << arg.parameter
+ << "Description:" << arg.description;
}
}
- dependencies.append(dep);
- reader.readNext();
- if (reader.tokenType() != QXmlStreamReader::EndElement)
- reader.raiseError(msgUnexpectedToken());
+
+ return true;
}
/*!
@@ -941,32 +945,9 @@ bool PluginSpecPrivate::loadLibrary()
hasError = true;
return false;
}
-#ifdef QT_NO_DEBUG
-
-#ifdef Q_OS_WIN
- QString libName = QString::fromLatin1("%1/%2.dll").arg(location).arg(name);
-#elif defined(Q_OS_MAC)
- QString libName = QString::fromLatin1("%1/lib%2.dylib").arg(location).arg(name);
-#else
- QString libName = QString::fromLatin1("%1/lib%2.so").arg(location).arg(name);
-#endif
-
-#else //Q_NO_DEBUG
-
-#ifdef Q_OS_WIN
- QString libName = QString::fromLatin1("%1/%2d.dll").arg(location).arg(name);
-#elif defined(Q_OS_MAC)
- QString libName = QString::fromLatin1("%1/lib%2_debug.dylib").arg(location).arg(name);
-#else
- QString libName = QString::fromLatin1("%1/lib%2.so").arg(location).arg(name);
-#endif
-
-#endif
-
- QPluginLoader loader(libName);
if (!loader.load()) {
hasError = true;
- errorString = QDir::toNativeSeparators(libName)
+ errorString = QDir::toNativeSeparators(filePath)
+ QString::fromLatin1(": ") + loader.errorString();
return false;
}
diff --git a/src/libs/extensionsystem/pluginspec_p.h b/src/libs/extensionsystem/pluginspec_p.h
index 6dfac9dbd3..0d8e014e8d 100644
--- a/src/libs/extensionsystem/pluginspec_p.h
+++ b/src/libs/extensionsystem/pluginspec_p.h
@@ -33,10 +33,12 @@
#include "pluginspec.h"
#include "iplugin.h"
+#include <QJsonObject>
#include <QObject>
+#include <QPluginLoader>
+#include <QRegExp>
#include <QStringList>
#include <QXmlStreamReader>
-#include <QRegExp>
namespace ExtensionSystem {
@@ -62,6 +64,8 @@ public:
IPlugin::ShutdownFlag stop();
void kill();
+ QPluginLoader loader;
+
QString name;
QString version;
QString compatVersion;
@@ -98,18 +102,12 @@ public:
void disableIndirectlyIfDependencyDisabled();
+ bool readMetaData(const QJsonObject &metaData);
private:
PluginSpec *q;
bool reportError(const QString &err);
- void readPluginSpec(QXmlStreamReader &reader);
- void readDependencies(QXmlStreamReader &reader);
- void readDependencyEntry(QXmlStreamReader &reader);
- void readArgumentDescriptions(QXmlStreamReader &reader);
- void readArgumentDescription(QXmlStreamReader &reader);
- bool readBooleanValue(QXmlStreamReader &reader, const char *key);
-
static QRegExp &versionRegExp();
};
diff --git a/src/plugins/analyzerbase/AnalyzerBase.json.in b/src/plugins/analyzerbase/AnalyzerBase.json.in
new file mode 100644
index 0000000000..7b96d9abb9
--- /dev/null
+++ b/src/plugins/analyzerbase/AnalyzerBase.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"AnalyzerBase\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Code Analyzer\",
+ \"Description\" : \"Code Analyzer Base Plugin.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/analyzerbase/AnalyzerBase.pluginspec.in b/src/plugins/analyzerbase/AnalyzerBase.pluginspec.in
deleted file mode 100644
index 50588cf90e..0000000000
--- a/src/plugins/analyzerbase/AnalyzerBase.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"AnalyzerBase\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Code Analyzer</category>
- <description>Code Analyzer Base Plugin</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/android/Android.json.in b/src/plugins/android/Android.json.in
new file mode 100644
index 0000000000..41a92d419d
--- /dev/null
+++ b/src/plugins/android/Android.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Android\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"KDE Necessitas\",
+ \"Copyright\" : \"(C) 2014 BogDan Vatra\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Device Support\",
+ \"Description\" : \"Support for deployment to and execution on Android Devices.\",
+ \"Url\" : \"http://necessitas.kde.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/android/Android.pluginspec.in b/src/plugins/android/Android.pluginspec.in
deleted file mode 100644
index 562a88e53d..0000000000
--- a/src/plugins/android/Android.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Android\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>KDE Necessitas</vendor>
- <copyright>(C) 2014 BogDan Vatra</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>Support for deployment to and execution on Android Devices</description>
- <category>Device Support</category>
- <url>http://necessitas.kde.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.json.in b/src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.json.in
new file mode 100644
index 0000000000..7348041c60
--- /dev/null
+++ b/src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.json.in
@@ -0,0 +1,20 @@
+{
+ \"Name\" : \"AutotoolsProjectManager\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"DisabledByDefault\" : true,
+ \"Vendor\" : \"Openismus GmbH\",
+ \"Copyright\" : \"(C) 2014 Openismus GmbH\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Build Systems\",
+ \"Description\" : \"Autotools project integration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.pluginspec.in b/src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.pluginspec.in
deleted file mode 100644
index 74d504cadd..0000000000
--- a/src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"AutotoolsProjectManager\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\" experimental=\"true\">
- <vendor>Openismus GmbH</vendor>
- <copyright>(C) 2014 Openismus GmbH</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Build Systems</category>
- <description>Autotools project integration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/baremetal/BareMetal.json.in b/src/plugins/baremetal/BareMetal.json.in
new file mode 100644
index 0000000000..21e9e7d97a
--- /dev/null
+++ b/src/plugins/baremetal/BareMetal.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"BareMetal\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Experimental\" : true,
+ \"Vendor\" : \"Tim Sander\",
+ \"Copyright\" : \"Copyright (C) 2014 Tim Sander\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Device Support\",
+ \"Description\" : \"This plugin adds a target for bare metal development.\",
+ $$dependencyList
+}
diff --git a/src/plugins/baremetal/BareMetal.pluginspec.in b/src/plugins/baremetal/BareMetal.pluginspec.in
deleted file mode 100644
index 3199ed59b4..0000000000
--- a/src/plugins/baremetal/BareMetal.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"BareMetal\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\" experimental=\"true\">
- <vendor>Tim Sander</vendor>
- <copyright>Copyright (C) 2014 Tim Sander</copyright>
- <license>
- Commercial Usage
-
- Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
- GNU Lesser General Public License Usage
-
- Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>This plugin adds a target for bare metal development.</description>
- <category>Device Support</category>
- <url></url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/bazaar/Bazaar.json.in b/src/plugins/bazaar/Bazaar.json.in
new file mode 100644
index 0000000000..128e69d08c
--- /dev/null
+++ b/src/plugins/bazaar/Bazaar.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Bazaar\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Hugues Delorme\",
+ \"Copyright\" : \"(C) 2014 Hugues Delorme\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Version Control\",
+ \"Description\" : \"Bazaar integration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/bazaar/Bazaar.pluginspec.in b/src/plugins/bazaar/Bazaar.pluginspec.in
deleted file mode 100644
index e605a28f36..0000000000
--- a/src/plugins/bazaar/Bazaar.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Bazaar\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Hugues Delorme</vendor>
- <copyright>(C) 2014 Hugues Delorme</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Version Control</category>
- <description>Bazaar integration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/beautifier/Beautifier.json.in b/src/plugins/beautifier/Beautifier.json.in
new file mode 100644
index 0000000000..66ce201195
--- /dev/null
+++ b/src/plugins/beautifier/Beautifier.json.in
@@ -0,0 +1,20 @@
+{
+ \"Name\" : \"Beautifier\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Experimental\" : true,
+ \"Vendor\" : \"Lorenz Haas\",
+ \"Copyright\" : \"(C) 2014 Lorenz Haas\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"C++\",
+ \"Description\" : \"Format source files with the help of beautifiers like AStyle, uncrustify or clang-format.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/beautifier/Beautifier.pluginspec.in b/src/plugins/beautifier/Beautifier.pluginspec.in
deleted file mode 100644
index df85d373eb..0000000000
--- a/src/plugins/beautifier/Beautifier.pluginspec.in
+++ /dev/null
@@ -1,18 +0,0 @@
-<plugin name=\"Beautifier\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_VERSION\" experimental=\"true\">
- <vendor>Lorenz Haas</vendor>
- <copyright>(C) 2014 Lorenz Haas</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>Format source files with the help of beautifiers like AStyle, uncrustify or clang-format.</description>
- <category>C++</category>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
-
diff --git a/src/plugins/bineditor/BinEditor.json.in b/src/plugins/bineditor/BinEditor.json.in
new file mode 100644
index 0000000000..d68bc3b6c3
--- /dev/null
+++ b/src/plugins/bineditor/BinEditor.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"BinEditor\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Binary editor component.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/bineditor/BinEditor.pluginspec.in b/src/plugins/bineditor/BinEditor.pluginspec.in
deleted file mode 100644
index 948268a6a2..0000000000
--- a/src/plugins/bineditor/BinEditor.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"BinEditor\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Binary editor component.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/bookmarks/Bookmarks.json.in b/src/plugins/bookmarks/Bookmarks.json.in
new file mode 100644
index 0000000000..3699c1df71
--- /dev/null
+++ b/src/plugins/bookmarks/Bookmarks.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Bookmarks\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Bookmarks in text editors.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/bookmarks/Bookmarks.pluginspec.in b/src/plugins/bookmarks/Bookmarks.pluginspec.in
deleted file mode 100644
index ad880c8f8d..0000000000
--- a/src/plugins/bookmarks/Bookmarks.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Bookmarks\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Bookmarks in text editors.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/clangcodemodel/ClangCodeModel.json.in b/src/plugins/clangcodemodel/ClangCodeModel.json.in
new file mode 100644
index 0000000000..743e5cecb3
--- /dev/null
+++ b/src/plugins/clangcodemodel/ClangCodeModel.json.in
@@ -0,0 +1,20 @@
+{
+ \"Name\" : \"ClangCodeModel\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Experimental\" : true,
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"C++\",
+ \"Description\" : \"Clang Code Model plugin.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/clangcodemodel/ClangCodeModel.pluginspec.in b/src/plugins/clangcodemodel/ClangCodeModel.pluginspec.in
deleted file mode 100644
index 43f47e650c..0000000000
--- a/src/plugins/clangcodemodel/ClangCodeModel.pluginspec.in
+++ /dev/null
@@ -1,21 +0,0 @@
-<plugin name=\"ClangCodeModel\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_VERSION\" experimental=\"true\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>C++</category>
- <description>Clang Code Model plugin.</description>
- <url>http://www.qt-project.org</url>
- <dependencyList>
- <dependency name=\"Core\" version=\"$$QTCREATOR_VERSION\"/>
- <dependency name=\"CppTools\" version=\"$$QTCREATOR_VERSION\"/>
- <dependency name=\"TextEditor\" version=\"$$QTCREATOR_VERSION\"/>
- </dependencyList>
-</plugin>
diff --git a/src/plugins/classview/ClassView.json.in b/src/plugins/classview/ClassView.json.in
new file mode 100644
index 0000000000..d27b53ec96
--- /dev/null
+++ b/src/plugins/classview/ClassView.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"ClassView\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Denis Mingulov\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"C++\",
+ \"Description\" : \"Class View component.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/classview/ClassView.pluginspec.in b/src/plugins/classview/ClassView.pluginspec.in
deleted file mode 100644
index cca6e06aed..0000000000
--- a/src/plugins/classview/ClassView.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"ClassView\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Denis Mingulov</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>C++</category>
- <description>Class View component.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/clearcase/ClearCase.json.in b/src/plugins/clearcase/ClearCase.json.in
new file mode 100644
index 0000000000..98a268b72f
--- /dev/null
+++ b/src/plugins/clearcase/ClearCase.json.in
@@ -0,0 +1,20 @@
+{
+ \"Name\" : \"ClearCase\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"DisabledByDefault\" : $$CLEARCASE_DISABLED_STR,
+ \"Vendor\" : \"AudioCodes\",
+ \"Copyright\" : \"(C) 2014 AudioCodes Ltd.\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Version Control\",
+ \"Description\" : \"ClearCase integration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/clearcase/ClearCase.pluginspec.in b/src/plugins/clearcase/ClearCase.pluginspec.in
deleted file mode 100644
index c9e5e4eaca..0000000000
--- a/src/plugins/clearcase/ClearCase.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"ClearCase\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\" disabledByDefault=\"$$CLEARCASE_DISABLED_STR\">
- <vendor>AudioCodes</vendor>
- <copyright>(C) 2014 AudioCodes Ltd.</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Version Control</category>
- <description>ClearCase integration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/clearcase/clearcase.qbs b/src/plugins/clearcase/clearcase.qbs
index 9081032607..7c8c24a717 100644
--- a/src/plugins/clearcase/clearcase.qbs
+++ b/src/plugins/clearcase/clearcase.qbs
@@ -5,7 +5,7 @@ import QtcPlugin
QtcPlugin {
name: "ClearCase"
- pluginspecreplacements: ({"CLEARCASE_DISABLED_STR": (qbs.targetOS.contains("osx") ? "true": "false")})
+ pluginJsonReplacements: ({"CLEARCASE_DISABLED_STR": (qbs.targetOS.contains("osx") ? "true": "false")})
Depends { name: "Qt.widgets" }
Depends { name: "Utils" }
diff --git a/src/plugins/cmakeprojectmanager/CMakeProjectManager.json.in b/src/plugins/cmakeprojectmanager/CMakeProjectManager.json.in
new file mode 100644
index 0000000000..72783a55e4
--- /dev/null
+++ b/src/plugins/cmakeprojectmanager/CMakeProjectManager.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"CMakeProjectManager\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Build Systems\",
+ \"Description\" : \"CMake support.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/cmakeprojectmanager/CMakeProjectManager.pluginspec.in b/src/plugins/cmakeprojectmanager/CMakeProjectManager.pluginspec.in
deleted file mode 100644
index aa275ee56f..0000000000
--- a/src/plugins/cmakeprojectmanager/CMakeProjectManager.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"CMakeProjectManager\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Build Systems</category>
- <description>CMake support</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/coreplugin/Core.json.in b/src/plugins/coreplugin/Core.json.in
new file mode 100644
index 0000000000..4c0c0e917c
--- /dev/null
+++ b/src/plugins/coreplugin/Core.json.in
@@ -0,0 +1,31 @@
+{
+ \"Name\" : \"Core\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Required\" : true,
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"The core plugin for the Qt IDE.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ \"Arguments\" : [
+ {
+ \"Name\" : \"-color\",
+ \"Parameter\" : \"color\",
+ \"Description\" : \"Override selected UI color\"
+ },
+ {
+ \"Name\" : \"-presentationMode\",
+ \"Description\" : \"Enable presentation mode with pop-ups for key combos\"
+ }
+ ],
+ $$dependencyList
+}
diff --git a/src/plugins/coreplugin/Core.pluginspec.in b/src/plugins/coreplugin/Core.pluginspec.in
deleted file mode 100644
index cb4c7fa9e7..0000000000
--- a/src/plugins/coreplugin/Core.pluginspec.in
+++ /dev/null
@@ -1,20 +0,0 @@
-<plugin name=\"Core\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\" required=\"true\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>The core plugin for the Qt IDE.</description>
- <url>http://www.qt-project.org</url>
- <argumentList>
- <argument name=\"-color\" parameter=\"color\">Override selected UI color</argument>
- <argument name=\"-presentationMode\">Enable presentation mode with pop-ups for key combos</argument>
- </argumentList>
-</plugin>
diff --git a/src/plugins/cpaster/CodePaster.json.in b/src/plugins/cpaster/CodePaster.json.in
new file mode 100644
index 0000000000..5ad681540e
--- /dev/null
+++ b/src/plugins/cpaster/CodePaster.json.in
@@ -0,0 +1,18 @@
+{
+ \"Name\" : \"CodePaster\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Description\" : \"Codepaster plugin for pushing/fetching diff from server.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/cpaster/CodePaster.pluginspec.in b/src/plugins/cpaster/CodePaster.pluginspec.in
deleted file mode 100644
index 5bfb797c90..0000000000
--- a/src/plugins/cpaster/CodePaster.pluginspec.in
+++ /dev/null
@@ -1,16 +0,0 @@
-<plugin name=\"CodePaster\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>Codepaster plugin for pushing/fetching diff from server</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/cppeditor/CppEditor.json.in b/src/plugins/cppeditor/CppEditor.json.in
new file mode 100644
index 0000000000..40c64bdf8a
--- /dev/null
+++ b/src/plugins/cppeditor/CppEditor.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"CppEditor\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"C++\",
+ \"Description\" : \"C/C++ editor component.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/cppeditor/CppEditor.pluginspec.in b/src/plugins/cppeditor/CppEditor.pluginspec.in
deleted file mode 100644
index b1ddd79c93..0000000000
--- a/src/plugins/cppeditor/CppEditor.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"CppEditor\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>C++</category>
- <description>C/C++ editor component.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/cpptools/CppTools.json.in b/src/plugins/cpptools/CppTools.json.in
new file mode 100644
index 0000000000..fa7e0a28ec
--- /dev/null
+++ b/src/plugins/cpptools/CppTools.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"CppTools\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"C++\",
+ \"Description\" : \"Tools for analyzing C/C++ code.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/cpptools/CppTools.pluginspec.in b/src/plugins/cpptools/CppTools.pluginspec.in
deleted file mode 100644
index 93dac6961f..0000000000
--- a/src/plugins/cpptools/CppTools.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"CppTools\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>C++</category>
- <description>Tools for analyzing C/C++ code.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/cvs/CVS.json.in b/src/plugins/cvs/CVS.json.in
new file mode 100644
index 0000000000..519760d87d
--- /dev/null
+++ b/src/plugins/cvs/CVS.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"CVS\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Version Control\",
+ \"Description\" : \"CVS integration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/cvs/CVS.pluginspec.in b/src/plugins/cvs/CVS.pluginspec.in
deleted file mode 100644
index 1c89ae0c7c..0000000000
--- a/src/plugins/cvs/CVS.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"CVS\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Version Control</category>
- <description>CVS integration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/debugger/Debugger.json.in b/src/plugins/debugger/Debugger.json.in
new file mode 100644
index 0000000000..68711e45c5
--- /dev/null
+++ b/src/plugins/debugger/Debugger.json.in
@@ -0,0 +1,44 @@
+{
+ \"Name\" : \"Debugger\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Debugger integration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ \"Arguments\" : [
+ {
+ \"Name\" : \"-debug\",
+ \"Parameter\" : \"pid\",
+ \"Description\" : \"Attach to local process\"
+ },
+ {
+ \"Name\" : \"-debug\",
+ \"Parameter\" : \"executable\",
+ \"Description\" : \"Start and debug executable\"
+ },
+ {
+ \"Name\" : \"-debug [executable,]core=<corefile>[,kit=<kit>]\",
+ \"Description\" : \"Attach to core file\"
+ },
+ {
+ \"Name\" : \"-debug <executable>,server=<server:port>[,kit=<kit>]\",
+ \"Description\" : \"Attach to remote debug server\"
+ },
+ {
+ \"Name\" : \"-wincrashevent\",
+ \"Parameter\" : \"eventhandle:pid\",
+ \"Description\" : \"Event handle used for attaching to crashed processes\"
+ }
+ ],
+ $$dependencyList
+}
diff --git a/src/plugins/debugger/Debugger.pluginspec.in b/src/plugins/debugger/Debugger.pluginspec.in
deleted file mode 100644
index 6c95aa4ae2..0000000000
--- a/src/plugins/debugger/Debugger.pluginspec.in
+++ /dev/null
@@ -1,28 +0,0 @@
-<plugin name=\"Debugger\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Debugger integration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
- <argumentList>
- <argument name=\"-debug\" parameter=\"pid\">Attach to local process</argument>
- <argument name=\"-debug\" parameter=\"executable\">Start and debug executable</argument>
- <argument name=\"-debug [executable,]core=&lt;corefile&gt;[,kit=&lt;kit&gt;]\">
- Attach to core file</argument>
- <argument name=\"-debug &lt;executable&gt;,server=&lt;server:port&gt;[,kit=&lt;kit&gt;]\">
- Attach to remote debug server</argument>
- <argument name=\"-wincrashevent\"
- parameter=\"eventhandle:pid\">
- Event handle used for attaching to crashed processes</argument>
- </argumentList>
-</plugin>
diff --git a/src/plugins/designer/Designer.json.in b/src/plugins/designer/Designer.json.in
new file mode 100644
index 0000000000..c75ef0c5fa
--- /dev/null
+++ b/src/plugins/designer/Designer.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Designer\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Qt Designer integration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/designer/Designer.pluginspec.in b/src/plugins/designer/Designer.pluginspec.in
deleted file mode 100644
index 1de2d7b4bd..0000000000
--- a/src/plugins/designer/Designer.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Designer\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Qt Designer integration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/diffeditor/DiffEditor.json.in b/src/plugins/diffeditor/DiffEditor.json.in
new file mode 100644
index 0000000000..b4db397b77
--- /dev/null
+++ b/src/plugins/diffeditor/DiffEditor.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"DiffEditor\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Diff editor component.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/diffeditor/DiffEditor.pluginspec.in b/src/plugins/diffeditor/DiffEditor.pluginspec.in
deleted file mode 100644
index de362447dc..0000000000
--- a/src/plugins/diffeditor/DiffEditor.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"DiffEditor\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Diff editor component.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/emacskeys/EmacsKeys.json.in b/src/plugins/emacskeys/EmacsKeys.json.in
new file mode 100644
index 0000000000..0fea2fbf91
--- /dev/null
+++ b/src/plugins/emacskeys/EmacsKeys.json.in
@@ -0,0 +1,31 @@
+{
+ \"Name\" : \"EmacsKeys\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Experimental\" : true,
+ \"Vendor\" : \"nsf\",
+ \"Copyright\" : \"(C) nsf <no.smile.face@gmail.com>\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Description\" : [
+ \"The main idea behind this plugin is to provide additional actions a typical emacs user would expect. It doesn\'t claim to provide full emacs emulation. The following actions are available:\",
+ \" - Movement [C-f, C-b, C-n, C-p, M-f, M-b, C-a, C-e, M-<, M->]\",
+ \" - Mark-based selection [C-SPC, C-x C-x]\",
+ \" - Cut/copy/yank (doesn\'t provide kill ring feature) [M-w, C-w, C-y]\",
+ \" - Kill actions, which interact properly with clipboard [C-k, M-d, C-d]\",
+ \" - Scrolling (half of the screen, keeps cursor visible) [C-v, M-v]\",
+ \" - Insert new line and indent [C-j]\",
+ \"\",
+ \"IMPORTANT: Actions are not bound to any key combinations by default. You can find them under \'EmacsKeys\' section in keyboard shortcuts settings.\",
+ \"\",
+ \"Also it\'s worth mentioning that EmacsKeys plugin forces disabling of menu mnemonics by calling Qt\'s qt_set_sequence_auto_mnemonic function with false argument. Many of the english menu mnemonics get into the way of typical emacs keys, this includes: Alt+F (File), Alt+B (Build), Alt+W (Window). It\'s a temporary solution, it remains until there is a better one.\"
+ ],
+ \"Url\" : \"http://nosmileface.ru\",
+ $$dependencyList
+}
diff --git a/src/plugins/emacskeys/EmacsKeys.pluginspec.in b/src/plugins/emacskeys/EmacsKeys.pluginspec.in
deleted file mode 100644
index d6020826bb..0000000000
--- a/src/plugins/emacskeys/EmacsKeys.pluginspec.in
+++ /dev/null
@@ -1,28 +0,0 @@
-<plugin name=\"EmacsKeys\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\" experimental=\"true\">
- <vendor>nsf</vendor>
- <copyright>(C) nsf &lt;no.smile.face@gmail.com&gt;</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>
-The main idea behind this plugin is to provide additional actions a typical emacs user would expect. It doesn&#39;t claim to provide full emacs emulation. The following actions are available:
- - Movement [C-f, C-b, C-n, C-p, M-f, M-b, C-a, C-e, M-&lt;, M-&gt;]
- - Mark-based selection [C-SPC, C-x C-x]
- - Cut/copy/yank (doesn&#39;t provide kill ring feature) [M-w, C-w, C-y]
- - Kill actions, which interact properly with clipboard [C-k, M-d, C-d]
- - Scrolling (half of the screen, keeps cursor visible) [C-v, M-v]
- - Insert new line and indent [C-j]
-
-IMPORTANT: Actions are not bound to any key combinations by default. You can find them under &#39;EmacsKeys&#39; section in keyboard shortcuts settings.
-
-Also it&#39;s worth mentioning that EmacsKeys plugin forces disabling of menu mnemonics by calling Qt&#39;s qt_set_sequence_auto_mnemonic function with false argument. Many of the english menu mnemonics get into the way of typical emacs keys, this includes: Alt+F (File), Alt+B (Build), Alt+W (Window). It&#39;s a temporary solution, it remains until there is a better one.
- </description>
- <url>http://nosmileface.ru</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/fakevim/FakeVim.json.in b/src/plugins/fakevim/FakeVim.json.in
new file mode 100644
index 0000000000..136ea45a03
--- /dev/null
+++ b/src/plugins/fakevim/FakeVim.json.in
@@ -0,0 +1,18 @@
+{
+ \"Name\" : \"FakeVim\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Description\" : \"VI-style keyboard navigation.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/fakevim/FakeVim.pluginspec.in b/src/plugins/fakevim/FakeVim.pluginspec.in
deleted file mode 100644
index d8c2b8658d..0000000000
--- a/src/plugins/fakevim/FakeVim.pluginspec.in
+++ /dev/null
@@ -1,16 +0,0 @@
-<plugin name=\"FakeVim\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>VI-style keyboard navigation.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/genericprojectmanager/GenericProjectManager.json.in b/src/plugins/genericprojectmanager/GenericProjectManager.json.in
new file mode 100644
index 0000000000..03fc6696d3
--- /dev/null
+++ b/src/plugins/genericprojectmanager/GenericProjectManager.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"GenericProjectManager\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Build Systems\",
+ \"Description\" : \"Generic support.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/genericprojectmanager/GenericProjectManager.pluginspec.in b/src/plugins/genericprojectmanager/GenericProjectManager.pluginspec.in
deleted file mode 100644
index e018441767..0000000000
--- a/src/plugins/genericprojectmanager/GenericProjectManager.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"GenericProjectManager\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Build Systems</category>
- <description>Generic support</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/git/Git.json.in b/src/plugins/git/Git.json.in
new file mode 100644
index 0000000000..f06c501f29
--- /dev/null
+++ b/src/plugins/git/Git.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Git\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Version Control\",
+ \"Description\" : \"Git integration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/git/Git.pluginspec.in b/src/plugins/git/Git.pluginspec.in
deleted file mode 100644
index 95203b3eb2..0000000000
--- a/src/plugins/git/Git.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Git\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Version Control</category>
- <description>Git integration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/glsleditor/GLSLEditor.json.in b/src/plugins/glsleditor/GLSLEditor.json.in
new file mode 100644
index 0000000000..5a8a5b2992
--- /dev/null
+++ b/src/plugins/glsleditor/GLSLEditor.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"GLSLEditor\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"GLSL\",
+ \"Description\" : \"Editor for GLSL.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/glsleditor/GLSLEditor.pluginspec.in b/src/plugins/glsleditor/GLSLEditor.pluginspec.in
deleted file mode 100644
index ec077be8b5..0000000000
--- a/src/plugins/glsleditor/GLSLEditor.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"GLSLEditor\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>GLSL</category>
- <description>Editor for GLSL.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/helloworld/HelloWorld.json.in b/src/plugins/helloworld/HelloWorld.json.in
new file mode 100644
index 0000000000..a276f203e1
--- /dev/null
+++ b/src/plugins/helloworld/HelloWorld.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"HelloWorld\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Experimental\" : true,
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Description\" : \"Hello World sample plugin.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/helloworld/HelloWorld.pluginspec.in b/src/plugins/helloworld/HelloWorld.pluginspec.in
deleted file mode 100644
index b99efdddf3..0000000000
--- a/src/plugins/helloworld/HelloWorld.pluginspec.in
+++ /dev/null
@@ -1,16 +0,0 @@
-<plugin name=\"HelloWorld\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\" experimental=\"true\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>Hello World sample plugin.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/helloworld/helloworldplugin.cpp b/src/plugins/helloworld/helloworldplugin.cpp
index bb38692de2..062d1fdedb 100644
--- a/src/plugins/helloworld/helloworldplugin.cpp
+++ b/src/plugins/helloworld/helloworldplugin.cpp
@@ -129,12 +129,12 @@ bool HelloWorldPlugin::initialize(const QStringList &arguments, QString *errorMe
}
/*! Notification that all extensions that this plugin depends on have been
- initialized. The dependencies are defined in the plugins .pluginspec file.
+ initialized. The dependencies are defined in the plugins .json(.in) file.
Normally this function is used for things that rely on other plugins to have
added objects to the plugin manager, that implement interfaces that we're
interested in. These objects can now be requested through the
- PluginManagerInterface.
+ PluginManager.
The HelloWorldPlugin doesn't need things from other plugins, so it does
nothing here.
diff --git a/src/plugins/help/Help.json.in b/src/plugins/help/Help.json.in
new file mode 100644
index 0000000000..54acb9ef22
--- /dev/null
+++ b/src/plugins/help/Help.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Help\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Help system.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/help/Help.pluginspec.in b/src/plugins/help/Help.pluginspec.in
deleted file mode 100644
index f8bb8ab6f8..0000000000
--- a/src/plugins/help/Help.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Help\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Help system.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/imageviewer/ImageViewer.json.in b/src/plugins/imageviewer/ImageViewer.json.in
new file mode 100644
index 0000000000..60097263a3
--- /dev/null
+++ b/src/plugins/imageviewer/ImageViewer.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"ImageViewer\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Image Viewer component.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/imageviewer/ImageViewer.pluginspec.in b/src/plugins/imageviewer/ImageViewer.pluginspec.in
deleted file mode 100644
index 6e65a78d7d..0000000000
--- a/src/plugins/imageviewer/ImageViewer.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"ImageViewer\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Denis Mingulov</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Image Viewer component.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/ios/Ios.json.in b/src/plugins/ios/Ios.json.in
new file mode 100644
index 0000000000..766cfda66d
--- /dev/null
+++ b/src/plugins/ios/Ios.json.in
@@ -0,0 +1,20 @@
+{
+ \"Name\" : \"Ios\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Platform\" : \"OS X.*\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Device Support\",
+ \"Description\" : \"Support for deployment to and execution on iOS Devices.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/ios/Ios.pluginspec.in b/src/plugins/ios/Ios.pluginspec.in
deleted file mode 100644
index 10af513c88..0000000000
--- a/src/plugins/ios/Ios.pluginspec.in
+++ /dev/null
@@ -1,18 +0,0 @@
-<plugin name=\"Ios\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <platform>OS X.*</platform>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>Support for deployment to and execution on iOS Devices</description>
- <category>Device Support</category>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/macros/Macros.json.in b/src/plugins/macros/Macros.json.in
new file mode 100644
index 0000000000..fc0188fe08
--- /dev/null
+++ b/src/plugins/macros/Macros.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Macros\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Macros in text editors.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/macros/Macros.pluginspec.in b/src/plugins/macros/Macros.pluginspec.in
deleted file mode 100644
index b88ff2b19b..0000000000
--- a/src/plugins/macros/Macros.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Macros\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Nicolas Arnaud-Cormos</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Macros in text editors.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/mercurial/Mercurial.json.in b/src/plugins/mercurial/Mercurial.json.in
new file mode 100644
index 0000000000..3b42f79e48
--- /dev/null
+++ b/src/plugins/mercurial/Mercurial.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Mercurial\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Brian McGillion\",
+ \"Copyright\" : \"(C) 2014 Brian McGillion\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Version Control\",
+ \"Description\" : \"Mercurial integration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/mercurial/Mercurial.pluginspec.in b/src/plugins/mercurial/Mercurial.pluginspec.in
deleted file mode 100644
index 4911760716..0000000000
--- a/src/plugins/mercurial/Mercurial.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Mercurial\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Brian McGillion</vendor>
- <copyright>(C) 2014 Brian McGillion</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Version Control</category>
- <description>Mercurial integration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/perforce/Perforce.json.in b/src/plugins/perforce/Perforce.json.in
new file mode 100644
index 0000000000..a5d0323cd0
--- /dev/null
+++ b/src/plugins/perforce/Perforce.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Perforce\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Version Control\",
+ \"Description\" : \"Perforce integration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/perforce/Perforce.pluginspec.in b/src/plugins/perforce/Perforce.pluginspec.in
deleted file mode 100644
index 97037e8fdf..0000000000
--- a/src/plugins/perforce/Perforce.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Perforce\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Version Control</category>
- <description>Perforce integration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 52d3335a69..92ee74b3fa 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -55,6 +55,7 @@ SUBDIRS = \
qmlprofiler \
welcome
+
isEmpty(QBS_INSTALL_DIR): QBS_INSTALL_DIR = $$(QBS_INSTALL_DIR)
exists(../shared/qbs/qbs.pro)|!isEmpty(QBS_INSTALL_DIR): \
SUBDIRS += \
diff --git a/src/plugins/projectexplorer/ProjectExplorer.json.in b/src/plugins/projectexplorer/ProjectExplorer.json.in
new file mode 100644
index 0000000000..33a07e72a9
--- /dev/null
+++ b/src/plugins/projectexplorer/ProjectExplorer.json.in
@@ -0,0 +1,29 @@
+{
+ \"Name\" : \"ProjectExplorer\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"ProjectExplorer framework that can be extended with different kind of project types.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ \"Arguments\" : [
+ {
+ \"Name\" : \"-customwizard-verbose\",
+ \"Description\" : \"Verbose loading of custom wizards\"
+ },
+ {
+ \"Name\" : \"-lastsession\",
+ \"Description\" : \"Restore the last session\"
+ }
+ ],
+ $$dependencyList
+}
diff --git a/src/plugins/projectexplorer/ProjectExplorer.pluginspec.in b/src/plugins/projectexplorer/ProjectExplorer.pluginspec.in
deleted file mode 100644
index 62b797fad8..0000000000
--- a/src/plugins/projectexplorer/ProjectExplorer.pluginspec.in
+++ /dev/null
@@ -1,21 +0,0 @@
-<plugin name=\"ProjectExplorer\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>ProjectExplorer framework that can be extended with different kind of project types.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
- <argumentList>
- <argument name=\"-customwizard-verbose\">Verbose loading of custom wizards</argument>
- <argument name=\"-lastsession\">Restore the last session</argument>
- </argumentList>
-</plugin>
diff --git a/src/plugins/pythoneditor/PythonEditor.json.in b/src/plugins/pythoneditor/PythonEditor.json.in
new file mode 100644
index 0000000000..a573e7cf1e
--- /dev/null
+++ b/src/plugins/pythoneditor/PythonEditor.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"PythonEditor\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Python\",
+ \"Description\" : \"Editor and file creation wizards for Python. Example plugin for QtCreator API demonstration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/pythoneditor/PythonEditor.pluginspec.in b/src/plugins/pythoneditor/PythonEditor.pluginspec.in
deleted file mode 100644
index fad2ecf5db..0000000000
--- a/src/plugins/pythoneditor/PythonEditor.pluginspec.in
+++ /dev/null
@@ -1,18 +0,0 @@
-<plugin name=\"PythonEditor\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Python</category>
- <description>Editor and file creation wizards for Python. Example plugin for QtCreator API demonstration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
-
diff --git a/src/plugins/qbsprojectmanager/QbsProjectManager.json.in b/src/plugins/qbsprojectmanager/QbsProjectManager.json.in
new file mode 100644
index 0000000000..6c9f72248d
--- /dev/null
+++ b/src/plugins/qbsprojectmanager/QbsProjectManager.json.in
@@ -0,0 +1,20 @@
+{
+ \"Name\" : \"QbsProjectManager\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Experimental\" : true,
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Build Systems\",
+ \"Description\" : \"QBS support.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/qbsprojectmanager/QbsProjectManager.pluginspec.in b/src/plugins/qbsprojectmanager/QbsProjectManager.pluginspec.in
deleted file mode 100644
index 8994030761..0000000000
--- a/src/plugins/qbsprojectmanager/QbsProjectManager.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"QbsProjectManager\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\" experimental=\"true\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Build Systems</category>
- <description>QBS support</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/qmakeandroidsupport/QmakeAndroidSupport.json.in b/src/plugins/qmakeandroidsupport/QmakeAndroidSupport.json.in
new file mode 100644
index 0000000000..9769c4c25e
--- /dev/null
+++ b/src/plugins/qmakeandroidsupport/QmakeAndroidSupport.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"QmakeAndroidSupport\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Build Systems\",
+ \"Description\" : \"Android support for qmake project manager.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/qmakeandroidsupport/QmakeAndroidSupport.pluginspec.in b/src/plugins/qmakeandroidsupport/QmakeAndroidSupport.pluginspec.in
deleted file mode 100644
index d77e8fb4b2..0000000000
--- a/src/plugins/qmakeandroidsupport/QmakeAndroidSupport.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"QmakeAndroidSupport\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Build Systems</category>
- <description>Android support for qmake project manager</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/qmakeprojectmanager/QmakeProjectManager.json.in b/src/plugins/qmakeprojectmanager/QmakeProjectManager.json.in
new file mode 100644
index 0000000000..d3b3fdfc6a
--- /dev/null
+++ b/src/plugins/qmakeprojectmanager/QmakeProjectManager.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"QmakeProjectManager\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Build Systems\",
+ \"Description\" : \"Provides project type for Qt/QMake .pro files and tools.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/qmakeprojectmanager/QmakeProjectManager.pluginspec.in b/src/plugins/qmakeprojectmanager/QmakeProjectManager.pluginspec.in
deleted file mode 100644
index d334d47fc7..0000000000
--- a/src/plugins/qmakeprojectmanager/QmakeProjectManager.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"QmakeProjectManager\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Build Systems</category>
- <description>Provides project type for Qt/QMake .pro files and tools.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/qmldesigner/QmlDesigner.json.in b/src/plugins/qmldesigner/QmlDesigner.json.in
new file mode 100644
index 0000000000..aae85db851
--- /dev/null
+++ b/src/plugins/qmldesigner/QmlDesigner.json.in
@@ -0,0 +1,26 @@
+{
+ \"Name\" : \"QmlDesigner\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Quick\",
+ \"Description\" : \"Visual Designer for QML files.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ \"Arguments\" : [
+ {
+ \"Name\" : \"-capture-puppet-stream\",
+ \"Parameter\" : \"capture file\",
+ \"Description\" : \"Captures the Qml Puppet stream\"
+ }
+ ],
+ $$dependencyList
+}
diff --git a/src/plugins/qmldesigner/QmlDesigner.pluginspec.in b/src/plugins/qmldesigner/QmlDesigner.pluginspec.in
deleted file mode 100644
index f8fd6670e9..0000000000
--- a/src/plugins/qmldesigner/QmlDesigner.pluginspec.in
+++ /dev/null
@@ -1,26 +0,0 @@
-<plugin name=\"QmlDesigner\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in
-accordance with the Qt Commercial License Agreement provided with the
-Software or, alternatively, in accordance with the terms contained in
-a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser
-General Public License version 2.1 as published by the Free Software
-Foundation. Please review the following information to
-ensure the GNU Lesser General Public License version 2.1 requirements
-will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.</license>
- <category>Qt Quick</category>
- <description>Visual Designer for QML files.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
- <argumentList>
- <argument name=\"-capture-puppet-stream\" parameter=\"capture file\">Captures the Qml Puppet stream</argument>
- </argumentList>
-</plugin>
diff --git a/src/plugins/qmljseditor/QmlJSEditor.json.in b/src/plugins/qmljseditor/QmlJSEditor.json.in
new file mode 100644
index 0000000000..a9b74f28d1
--- /dev/null
+++ b/src/plugins/qmljseditor/QmlJSEditor.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"QmlJSEditor\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Quick\",
+ \"Description\" : \"Editor for QML and JavaScript.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/qmljseditor/QmlJSEditor.pluginspec.in b/src/plugins/qmljseditor/QmlJSEditor.pluginspec.in
deleted file mode 100644
index f0c2b2531e..0000000000
--- a/src/plugins/qmljseditor/QmlJSEditor.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"QmlJSEditor\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Quick</category>
- <description>Editor for QML and JavaScript.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/qmljstools/QmlJSTools.json.in b/src/plugins/qmljstools/QmlJSTools.json.in
new file mode 100644
index 0000000000..d4e70a4336
--- /dev/null
+++ b/src/plugins/qmljstools/QmlJSTools.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"QmlJSTools\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Quick\",
+ \"Description\" : \"Tools for analyzing Qml/JS code.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/qmljstools/QmlJSTools.pluginspec.in b/src/plugins/qmljstools/QmlJSTools.pluginspec.in
deleted file mode 100644
index d158493627..0000000000
--- a/src/plugins/qmljstools/QmlJSTools.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"QmlJSTools\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Quick</category>
- <description>Tools for analyzing Qml/JS code.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/qmlprofiler/QmlProfiler.json.in b/src/plugins/qmlprofiler/QmlProfiler.json.in
new file mode 100644
index 0000000000..b87f96255f
--- /dev/null
+++ b/src/plugins/qmlprofiler/QmlProfiler.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"QmlProfiler\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Quick\",
+ \"Description\" : \"Qml Profiler Plugin.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/qmlprofiler/QmlProfiler.pluginspec.in b/src/plugins/qmlprofiler/QmlProfiler.pluginspec.in
deleted file mode 100644
index c1d07a175e..0000000000
--- a/src/plugins/qmlprofiler/QmlProfiler.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"QmlProfiler\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
- Commercial Usage
-
- Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
- GNU Lesser General Public License Usage
-
- Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Quick</category>
- <description>Qml Profiler Plugin</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/qmlprojectmanager/QmlProjectManager.json.in b/src/plugins/qmlprojectmanager/QmlProjectManager.json.in
new file mode 100644
index 0000000000..0a19c8c432
--- /dev/null
+++ b/src/plugins/qmlprojectmanager/QmlProjectManager.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"QmlProjectManager\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Quick\",
+ \"Description\" : \"Qt Quick support\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/qmlprojectmanager/QmlProjectManager.pluginspec.in b/src/plugins/qmlprojectmanager/QmlProjectManager.pluginspec.in
deleted file mode 100644
index 8ceeb9e1e3..0000000000
--- a/src/plugins/qmlprojectmanager/QmlProjectManager.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"QmlProjectManager\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Quick</category>
- <description>Qt Quick support</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/qnx/Qnx.json.in b/src/plugins/qnx/Qnx.json.in
new file mode 100644
index 0000000000..4bede83a72
--- /dev/null
+++ b/src/plugins/qnx/Qnx.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Qnx\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"BlackBerry\",
+ \"Copyright\" : \"(C) 2014 BlackBerry\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Device Support\",
+ \"Description\" : \"Adds support for QNX and BlackBerry 10 to Qt Creator.\",
+ \"Url\" : \"http://www.blackberry.com\",
+ $$dependencyList
+}
diff --git a/src/plugins/qnx/Qnx.pluginspec.in b/src/plugins/qnx/Qnx.pluginspec.in
deleted file mode 100644
index 30c5ed29aa..0000000000
--- a/src/plugins/qnx/Qnx.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Qnx\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>BlackBerry</vendor>
- <copyright>(C) 2014 BlackBerry</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>Adds support for QNX and BlackBerry 10 to Qt Creator</description>
- <category>Device Support</category>
- <url>http://www.blackberry.com</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/qtsupport/QtSupport.json.in b/src/plugins/qtsupport/QtSupport.json.in
new file mode 100644
index 0000000000..5e8ead73dc
--- /dev/null
+++ b/src/plugins/qtsupport/QtSupport.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"QtSupport\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Build Systems\",
+ \"Description\" : \"Provides support code for build systems.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/qtsupport/QtSupport.pluginspec.in b/src/plugins/qtsupport/QtSupport.pluginspec.in
deleted file mode 100644
index a71d972884..0000000000
--- a/src/plugins/qtsupport/QtSupport.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"QtSupport\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Build Systems</category>
- <description>Provides support code for build systems.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/remotelinux/RemoteLinux.json.in b/src/plugins/remotelinux/RemoteLinux.json.in
new file mode 100644
index 0000000000..defc2d1663
--- /dev/null
+++ b/src/plugins/remotelinux/RemoteLinux.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"RemoteLinux\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Device Support\",
+ \"Description\" : \"Support for deployment to and execution on a remote Linux host.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/remotelinux/RemoteLinux.pluginspec.in b/src/plugins/remotelinux/RemoteLinux.pluginspec.in
deleted file mode 100644
index fcce786703..0000000000
--- a/src/plugins/remotelinux/RemoteLinux.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"RemoteLinux\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>Support for deployment to and execution on a remote Linux host.</description>
- <category>Device Support</category>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/resourceeditor/ResourceEditor.json.in b/src/plugins/resourceeditor/ResourceEditor.json.in
new file mode 100644
index 0000000000..a1b2d91af8
--- /dev/null
+++ b/src/plugins/resourceeditor/ResourceEditor.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"ResourceEditor\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Editor for qrc files.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/resourceeditor/ResourceEditor.pluginspec.in b/src/plugins/resourceeditor/ResourceEditor.pluginspec.in
deleted file mode 100644
index ca458b403e..0000000000
--- a/src/plugins/resourceeditor/ResourceEditor.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"ResourceEditor\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Editor for qrc files.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/subversion/Subversion.json.in b/src/plugins/subversion/Subversion.json.in
new file mode 100644
index 0000000000..1b06becc46
--- /dev/null
+++ b/src/plugins/subversion/Subversion.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Subversion\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Version Control\",
+ \"Description\" : \"Subversion integration.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/subversion/Subversion.pluginspec.in b/src/plugins/subversion/Subversion.pluginspec.in
deleted file mode 100644
index 3e83d730cb..0000000000
--- a/src/plugins/subversion/Subversion.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Subversion\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Version Control</category>
- <description>Subversion integration.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/tasklist/TaskList.json.in b/src/plugins/tasklist/TaskList.json.in
new file mode 100644
index 0000000000..a371d42214
--- /dev/null
+++ b/src/plugins/tasklist/TaskList.json.in
@@ -0,0 +1,18 @@
+{
+ \"Name\" : \"TaskList\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Description\" : \"Use .tasks-files to populate the Issues view.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/tasklist/TaskList.pluginspec.in b/src/plugins/tasklist/TaskList.pluginspec.in
deleted file mode 100644
index 3ffc8538b9..0000000000
--- a/src/plugins/tasklist/TaskList.pluginspec.in
+++ /dev/null
@@ -1,16 +0,0 @@
-<plugin name=\"TaskList\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>Use .tasks-files to populate the Issues view.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/texteditor/TextEditor.json.in b/src/plugins/texteditor/TextEditor.json.in
new file mode 100644
index 0000000000..e4a10fa4eb
--- /dev/null
+++ b/src/plugins/texteditor/TextEditor.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"TextEditor\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Text editor framework and the implementation of the basic text editor.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/texteditor/TextEditor.pluginspec.in b/src/plugins/texteditor/TextEditor.pluginspec.in
deleted file mode 100644
index 9598315f7b..0000000000
--- a/src/plugins/texteditor/TextEditor.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"TextEditor\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Text editor framework and the implementation of the basic text editor.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/todo/Todo.json.in b/src/plugins/todo/Todo.json.in
new file mode 100644
index 0000000000..420fcf394b
--- /dev/null
+++ b/src/plugins/todo/Todo.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Todo\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Experimental\" : true,
+ \"Vendor\" : \"Dmitry Savchenko\",
+ \"Copyright\" : \"(C) 2014 Dmitry Savchenko, (C) 2014 Vasiliy Sorokin\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Description\" : \"Adds pane that lists all TODO, FIXME, etc. entries in comments.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/todo/Todo.pluginspec.in b/src/plugins/todo/Todo.pluginspec.in
deleted file mode 100644
index 32391347d0..0000000000
--- a/src/plugins/todo/Todo.pluginspec.in
+++ /dev/null
@@ -1,16 +0,0 @@
-<plugin name=\"Todo\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\" experimental=\"true\">
- <vendor>Dmitry Savchenko</vendor>
- <copyright>(C) 2014 Dmitry Savchenko, (C) 2014 Vasiliy Sorokin</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <description>Adds pane that lists all TODO, FIXME, etc. entries in comments.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/updateinfo/UpdateInfo.json.in b/src/plugins/updateinfo/UpdateInfo.json.in
new file mode 100644
index 0000000000..b382c7612b
--- /dev/null
+++ b/src/plugins/updateinfo/UpdateInfo.json.in
@@ -0,0 +1,20 @@
+{
+ \"Name\" : \"UpdateInfo\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Experimental\" : $$UPDATEINFO_EXPERIMENTAL_STR,
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Displays Update-Infos for Qt Installer Framework-based Updaters.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/updateinfo/UpdateInfo.pluginspec.in b/src/plugins/updateinfo/UpdateInfo.pluginspec.in
deleted file mode 100644
index 8e51b9f75f..0000000000
--- a/src/plugins/updateinfo/UpdateInfo.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"UpdateInfo\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\" experimental=\"$$UPDATEINFO_EXPERIMENTAL_STR\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Displays Update-Infos for Qt Installer Framework-based Updaters.</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/updateinfo/updateinfo.qbs b/src/plugins/updateinfo/updateinfo.qbs
index 47b26a895e..6841a0a0e6 100644
--- a/src/plugins/updateinfo/updateinfo.qbs
+++ b/src/plugins/updateinfo/updateinfo.qbs
@@ -11,7 +11,7 @@ QtcPlugin {
Depends { name: "Core" }
property bool enable: false
- pluginspecreplacements: ({"UPDATEINFO_EXPERIMENTAL_STR": (enable ? "false": "true")})
+ pluginJsonReplacements: ({"UPDATEINFO_EXPERIMENTAL_STR": (enable ? "false": "true")})
files: [
"updateinfobutton.cpp",
diff --git a/src/plugins/valgrind/Valgrind.json.in b/src/plugins/valgrind/Valgrind.json.in
new file mode 100644
index 0000000000..875b877ca4
--- /dev/null
+++ b/src/plugins/valgrind/Valgrind.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Valgrind\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Code Analyzer\",
+ \"Description\" : \"Valgrind Plugin.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/valgrind/Valgrind.pluginspec.in b/src/plugins/valgrind/Valgrind.pluginspec.in
deleted file mode 100644
index c494295dd6..0000000000
--- a/src/plugins/valgrind/Valgrind.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Valgrind\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Code Analyzer</category>
- <description>Valgrind Plugin</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/vcsbase/VcsBase.json.in b/src/plugins/vcsbase/VcsBase.json.in
new file mode 100644
index 0000000000..e285302ff4
--- /dev/null
+++ b/src/plugins/vcsbase/VcsBase.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"VcsBase\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Version Control\",
+ \"Description\" : \"Version Control System Base Plugin.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/vcsbase/VcsBase.pluginspec.in b/src/plugins/vcsbase/VcsBase.pluginspec.in
deleted file mode 100644
index 6c24820307..0000000000
--- a/src/plugins/vcsbase/VcsBase.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"VcsBase\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Version Control</category>
- <description>Version Control System Base Plugin</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/welcome/Welcome.json.in b/src/plugins/welcome/Welcome.json.in
new file mode 100644
index 0000000000..ff54d892f3
--- /dev/null
+++ b/src/plugins/welcome/Welcome.json.in
@@ -0,0 +1,19 @@
+{
+ \"Name\" : \"Welcome\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Qt Creator\",
+ \"Description\" : \"Default Welcome Screen Plugin.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/welcome/Welcome.pluginspec.in b/src/plugins/welcome/Welcome.pluginspec.in
deleted file mode 100644
index 062cca7328..0000000000
--- a/src/plugins/welcome/Welcome.pluginspec.in
+++ /dev/null
@@ -1,17 +0,0 @@
-<plugin name=\"Welcome\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_COMPAT_VERSION\">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Qt Creator</category>
- <description>Default Welcome Screen Plugin</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/plugins/winrt/WinRt.json.in b/src/plugins/winrt/WinRt.json.in
new file mode 100644
index 0000000000..4cd8e0afd3
--- /dev/null
+++ b/src/plugins/winrt/WinRt.json.in
@@ -0,0 +1,21 @@
+{
+ \"Name\" : \"WinRt\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Experimental\" : true,
+ \"Platform\" : \"Windows 8\",
+ \"Vendor\" : \"Digia Plc\",
+ \"Copyright\" : \"(C) 2014 Digia Plc\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.\",
+ \"\",
+ \"GNU Lesser General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\"
+ ],
+ \"Category\" : \"Device Support\",
+ \"Description\" : \"Helper for Windows Runtime projects.\",
+ \"Url\" : \"http://www.qt-project.org\",
+ $$dependencyList
+}
diff --git a/src/plugins/winrt/WinRt.pluginspec.in b/src/plugins/winrt/WinRt.pluginspec.in
deleted file mode 100644
index 447a788ac2..0000000000
--- a/src/plugins/winrt/WinRt.pluginspec.in
+++ /dev/null
@@ -1,18 +0,0 @@
-<plugin name=\"WinRt\" version=\"$$QTCREATOR_VERSION\" compatVersion=\"$$QTCREATOR_VERSION\" experimental=\"true\">
- <platform>Windows 8</platform>
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-Commercial Usage
-
-Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Digia.
-
-GNU Lesser General Public License Usage
-
-Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. Please review the following information to ensure the GNU Lesser General Public License version 2.1 requirements will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- </license>
- <category>Device Support</category>
- <description>Helper for Windows Runtime projects</description>
- <url>http://www.qt-project.org</url>
- $$dependencyList
-</plugin>
diff --git a/src/qtcreatorplugin.pri b/src/qtcreatorplugin.pri
index a1fd8253d9..11916659c6 100644
--- a/src/qtcreatorplugin.pri
+++ b/src/qtcreatorplugin.pri
@@ -14,8 +14,8 @@ plugin_recmds = $$QTC_PLUGIN_RECOMMENDS
include(../qtcreator.pri)
-# for substitution in the .pluginspec
-dependencyList = "<dependencyList>"
+# for substitution in the .json
+dependencyList =
for(dep, plugin_deps) {
dependencies_file =
for(dir, QTC_PLUGIN_DIRS) {
@@ -27,7 +27,7 @@ for(dep, plugin_deps) {
isEmpty(dependencies_file): \
error("Plugin dependency $$dep not found")
include($$dependencies_file)
- dependencyList += " <dependency name=\"$$QTC_PLUGIN_NAME\" version=\"$$QTCREATOR_VERSION\"/>"
+ dependencyList += " { \"Name\" : \"$$QTC_PLUGIN_NAME\", \"Version\" : \"$$QTCREATOR_VERSION\" }"
}
for(dep, plugin_recmds) {
dependencies_file =
@@ -40,10 +40,11 @@ for(dep, plugin_recmds) {
isEmpty(dependencies_file): \
error("Plugin dependency $$dep not found")
include($$dependencies_file)
- dependencyList += " <dependency name=\"$$QTC_PLUGIN_NAME\" version=\"$$QTCREATOR_VERSION\" type=\"optional\"/>"
+ dependencyList += " { \"Name\" : \"$$QTC_PLUGIN_NAME\", \"Version\" : \"$$QTCREATOR_VERSION\", \"Type\" : \"optional\" }"
}
-dependencyList += " </dependencyList>"
-dependencyList = $$join(dependencyList, $$escape_expand(\\n))
+dependencyList = $$join(dependencyList, ",$$escape_expand(\\n)")
+
+dependencyList = "\"Dependencies\" : [$$escape_expand(\\n)$$dependencyList$$escape_expand(\\n) ]"
# use gui precompiled header for plugins by default
isEmpty(PRECOMPILED_HEADER):PRECOMPILED_HEADER = $$PWD/shared/qtcreator_gui_pch.h
@@ -77,38 +78,16 @@ defineReplace(stripOutDir) {
return($$relative_path($$1, $$OUT_PWD))
}
-PLUGINSPEC = $$_PRO_FILE_PWD_/$${TARGET}.pluginspec
-PLUGINSPEC_IN = $${PLUGINSPEC}.in
-exists($$PLUGINSPEC_IN) {
- OTHER_FILES += $$PLUGINSPEC_IN
- QMAKE_SUBSTITUTES += $$PLUGINSPEC_IN
- PLUGINSPEC = $$OUT_PWD/$${TARGET}.pluginspec
- copy2build.output = $$DESTDIR/${QMAKE_FUNC_FILE_IN_stripOutDir}
+PLUGINJSON = $$_PRO_FILE_PWD_/$${TARGET}.json
+PLUGINJSON_IN = $${PLUGINJSON}.in
+exists($$PLUGINJSON_IN) {
+ OTHER_FILES += $$PLUGINJSON_IN
+ QMAKE_SUBSTITUTES += $$PLUGINJSON_IN
+ PLUGINJSON = $$OUT_PWD/$${TARGET}.json
} else {
# need to support that for external plugins
- OTHER_FILES += $$PLUGINSPEC
- copy2build.output = $$DESTDIR/${QMAKE_FUNC_FILE_IN_stripSrcDir}
+ OTHER_FILES += $$PLUGINJSON
}
-copy2build.input = PLUGINSPEC
-isEmpty(vcproj):copy2build.variable_out = PRE_TARGETDEPS
-copy2build.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
-copy2build.name = COPY ${QMAKE_FILE_IN}
-copy2build.CONFIG += no_link no_clean
-QMAKE_EXTRA_COMPILERS += copy2build
-
-# Create a Json file containing the plugin information required by
-# Qt 5's plugin system by running a XSLT sheet on the
-# pluginspec file before moc runs.
-XMLPATTERNS = $$targetPath($$[QT_INSTALL_BINS]/xmlpatterns)
-
-pluginspec2json.name = Create Qt 5 plugin json file
-pluginspec2json.input = PLUGINSPEC
-pluginspec2json.variable_out = GENERATED_FILES
-pluginspec2json.output = $${TARGET}.json
-pluginspec2json.commands = $$XMLPATTERNS -no-format -output $$pluginspec2json.output $$PWD/qtcreatorplugin2json.xsl $$PLUGINSPEC
-pluginspec2json.CONFIG += no_link
-moc_header.depends += $$pluginspec2json.output
-QMAKE_EXTRA_COMPILERS += pluginspec2json
osx: QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/PlugIns/
include(rpath.pri)
@@ -121,9 +100,7 @@ linux*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
!macx {
target.path = $$QTC_PREFIX/$$IDE_LIBRARY_BASENAME/qtcreator/plugins
- pluginspec.files += $${TARGET}.pluginspec
- pluginspec.path = $$QTC_PREFIX/$$IDE_LIBRARY_BASENAME/qtcreator/plugins
- INSTALLS += target pluginspec
+ INSTALLS += target
}
MIMETYPES = $$_PRO_FILE_PWD_/$${TARGET}.mimetypes.xml
diff --git a/src/qtcreatorplugin2json.xsl b/src/qtcreatorplugin2json.xsl
deleted file mode 100644
index bd85083a00..0000000000
--- a/src/qtcreatorplugin2json.xsl
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!-- XSL sheet to transform Qt Creator's pluginspec files into json files required
- for the new Qt 5 plugin system. -->
-<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<xsl:strip-space elements="plugin vendor category description url"/>
-<xsl:template match="/">
-{
- <xsl:apply-templates/>
-}
-</xsl:template>
-<xsl:template match="license"/>
-<xsl:template match="dependencyList"/>
-<xsl:template match="copyright"/>
-<xsl:template match="argumentList"/>
-<xsl:template match="vendor">
-"Vendor" : "<xsl:apply-templates/>",
-</xsl:template>
-<xsl:template match="platform">
-"Platform" : "<xsl:apply-templates/>",
-</xsl:template>
-<xsl:template match="category">
-"Category" : "<xsl:apply-templates/>",
-</xsl:template>
-<xsl:template match="description">
-"Description" : "<xsl:apply-templates/>",
-</xsl:template>
-<xsl:template match="url">
-"Url" : "<xsl:apply-templates/>"
-</xsl:template>
-</xsl:stylesheet>
diff --git a/tests/auto/extensionsystem/copy.pri b/tests/auto/extensionsystem/copy.pri
deleted file mode 100644
index 9dc7f8dbd0..0000000000
--- a/tests/auto/extensionsystem/copy.pri
+++ /dev/null
@@ -1,12 +0,0 @@
-#set COPYFILES and COPYDIR
-!equals(_PRO_FILE_PWD_, $$OUT_PWD) { #only do something in case of shadow build
- # stolen from qtcreatorplugin.pri
- copy2build.input = COPYFILES
- copy2build.output = $$COPYDIR/${QMAKE_FUNC_FILE_IN_stripSrcDir}
- isEmpty(vcproj):copy2build.variable_out = PRE_TARGETDEPS
- copy2build.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
- copy2build.name = COPY ${QMAKE_FILE_IN}
- copy2build.CONFIG += no_link
- QMAKE_EXTRA_COMPILERS += copy2build
-}
-
diff --git a/tests/auto/extensionsystem/plugin.qbs b/tests/auto/extensionsystem/plugin.qbs
index 8a97ad522e..cff24baff0 100644
--- a/tests/auto/extensionsystem/plugin.qbs
+++ b/tests/auto/extensionsystem/plugin.qbs
@@ -15,12 +15,5 @@ DynamicLibrary {
project.buildDirectory + "/" + project.libDirName + "/qtcreator",
project.buildDirectory + "/" + project.libDirName + "/qtcreator/plugins"
].concat(additionalRPaths)
- property pathList filesToCopy
property pathList additionalRPaths: []
- Group {
- name: "resources"
- fileTags: "copyable_resource"
- copyable_resource.targetDirectory: product.destinationDirectory
- files: product.filesToCopy
- }
}
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin.xml b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin.xml
deleted file mode 100644
index db201f34c3..0000000000
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<plugin name="plugin1" version="1.0.0" compatVersion="1.0.0">
- <dependencyList>
- <dependency name="plugin2" version="1.0.0"/>
- <dependency name="plugin3" version="1.0.0"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.h b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.h
index a39dc0ea69..e2ec9620be 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.h
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.h
@@ -46,7 +46,7 @@ namespace Plugin1 {
class PLUGIN1_EXPORT MyPlugin1 : public ExtensionSystem::IPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "plugin1.json")
+ Q_PLUGIN_METADATA(IID "plugin" FILE "plugin1.json")
public:
MyPlugin1();
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.json b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.json
index 0967ef424b..22b180f14c 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.json
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.json
@@ -1 +1,9 @@
-{}
+{
+ "Name" : "plugin1",
+ "Version" : "1.0.0",
+ "CompatVersion" : "1.0.0",
+ "Dependencies" : [
+ { "Name" : "plugin2", "Version" : "1.0.0" },
+ { "Name" : "plugin3", "Version" : "1.0.0" }
+ ]
+}
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.pro b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.pro
index a760102147..92f0c6c831 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.pro
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.pro
@@ -4,15 +4,11 @@ SOURCES += plugin1.cpp
HEADERS += plugin1.h
DEFINES += PLUGIN1_LIBRARY
-OTHER_FILES = $$PWD/plugin.xml
+OTHER_FILES = $$PWD/plugin.json
QTC_LIB_DEPENDS += extensionsystem
include(../../../../../../qtcreator.pri)
include(../../../../qttestrpath.pri)
-COPYDIR = $$OUT_PWD
-COPYFILES = $$OTHER_FILES
-include(../../../copy.pri)
-
TARGET = $$qtLibraryName(plugin1)
CONFIG -= debug_and_release_target
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.qbs b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.qbs
index b90744efb6..ddb751dc5d 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.qbs
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.qbs
@@ -3,7 +3,6 @@ import "../../../plugin.qbs" as Plugin
Plugin {
name: "circular_plugin1"
- filesToCopy: "plugin.xml"
files: ["plugin1.h", "plugin1.cpp"]
cpp.defines: base.concat(["PLUGIN1_LIBRARY"])
}
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin.xml b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin.xml
deleted file mode 100644
index 5436967a80..0000000000
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="plugin2" version="1.0.0" compatVersion="1.0.0">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.h b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.h
index 6e74e32e0a..64f834c265 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.h
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.h
@@ -46,7 +46,7 @@ namespace Plugin2 {
class PLUGIN2_EXPORT MyPlugin2 : public ExtensionSystem::IPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "plugin2.json")
+ Q_PLUGIN_METADATA(IID "plugin" FILE "plugin2.json")
public:
MyPlugin2();
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.json b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.json
index 0967ef424b..18313e98a6 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.json
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.json
@@ -1 +1,6 @@
-{}
+{
+ "Name" : "plugin2",
+ "Version" : "1.0.0",
+ "CompatVersion" : "1.0.0"
+}
+
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.pro b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.pro
index 51a01919be..c2c5baf51d 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.pro
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.pro
@@ -4,15 +4,11 @@ SOURCES += plugin2.cpp
HEADERS += plugin2.h
DEFINES += PLUGIN2_LIBRARY
-OTHER_FILES = $$PWD/plugin.xml
+OTHER_FILES = $$PWD/plugin.json
QTC_LIB_DEPENDS += extensionsystem
include(../../../../../../qtcreator.pri)
include(../../../../qttestrpath.pri)
-COPYDIR = $$OUT_PWD
-COPYFILES = $$OTHER_FILES
-include(../../../copy.pri)
-
TARGET = $$qtLibraryName(plugin2)
CONFIG -= debug_and_release_target
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.qbs b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.qbs
index 5bf7389297..148a55a180 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.qbs
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.qbs
@@ -3,7 +3,6 @@ import "../../../plugin.qbs" as Plugin
Plugin {
name: "circular_plugin2"
- filesToCopy: "plugin.xml"
files: ["plugin2.h", "plugin2.cpp"]
cpp.defines: base.concat(["PLUGIN2_LIBRARY"])
}
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin.xml b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin.xml
deleted file mode 100644
index f7e90978ba..0000000000
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<plugin name="plugin3" version="1.0.0" compatVersion="1.0.0">
- <dependencyList>
- <dependency name="plugin1" version="1.0.0"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.h b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.h
index 634395aed6..6589c43c2a 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.h
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.h
@@ -46,7 +46,7 @@ namespace Plugin3 {
class PLUGIN3_EXPORT MyPlugin3 : public ExtensionSystem::IPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "plugin3.json")
+ Q_PLUGIN_METADATA(IID "plugin" FILE "plugin3.json")
public:
MyPlugin3();
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.json b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.json
index 0967ef424b..fcb6ee099b 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.json
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.json
@@ -1 +1,8 @@
-{}
+{
+ "Name" : "plugin3",
+ "Version" : "1.0.0",
+ "CompatVersion" : "1.0.0",
+ "Dependencies" : [
+ { "Name" : "plugin1", "Version" : "1.0.0" }
+ ]
+}
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.pro b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.pro
index ea0861362d..2ec06c35db 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.pro
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.pro
@@ -4,15 +4,11 @@ SOURCES += plugin3.cpp
HEADERS += plugin3.h
DEFINES += PLUGIN3_LIBRARY
-OTHER_FILES = $$PWD/plugin.xml
+OTHER_FILES = $$PWD/plugin.json
QTC_LIB_DEPENDS += extensionsystem
include(../../../../../../qtcreator.pri)
include(../../../../qttestrpath.pri)
-COPYDIR = $$OUT_PWD
-COPYFILES = $$OTHER_FILES
-include(../../../copy.pri)
-
TARGET = $$qtLibraryName(plugin3)
CONFIG -= debug_and_release_target
diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.qbs b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.qbs
index 5bf2bf3fad..9e7a0621e0 100644
--- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.qbs
+++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin3/plugin3.qbs
@@ -3,7 +3,6 @@ import "../../../plugin.qbs" as Plugin
Plugin {
name: "circular_plugin3"
- filesToCopy: "plugin.xml"
files: ["plugin3.h", "plugin3.cpp"]
cpp.defines: base.concat(["PLUGIN3_LIBRARY"])
}
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin.spec b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin.spec
deleted file mode 100644
index db201f34c3..0000000000
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin.spec
+++ /dev/null
@@ -1,6 +0,0 @@
-<plugin name="plugin1" version="1.0.0" compatVersion="1.0.0">
- <dependencyList>
- <dependency name="plugin2" version="1.0.0"/>
- <dependency name="plugin3" version="1.0.0"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.h b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.h
index 700c1d84b2..e06d82976e 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.h
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.h
@@ -46,7 +46,7 @@ namespace Plugin1 {
class PLUGIN1_EXPORT MyPlugin1 : public ExtensionSystem::IPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "plugin1.json")
+ Q_PLUGIN_METADATA(IID "plugin" FILE "plugin1.json")
public:
MyPlugin1();
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.json b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.json
index 0967ef424b..22b180f14c 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.json
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.json
@@ -1 +1,9 @@
-{}
+{
+ "Name" : "plugin1",
+ "Version" : "1.0.0",
+ "CompatVersion" : "1.0.0",
+ "Dependencies" : [
+ { "Name" : "plugin2", "Version" : "1.0.0" },
+ { "Name" : "plugin3", "Version" : "1.0.0" }
+ ]
+}
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.pro b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.pro
index 5c48e5c305..e777d0aa7f 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.pro
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.pro
@@ -4,15 +4,11 @@ SOURCES += plugin1.cpp
HEADERS += plugin1.h
DEFINES += PLUGIN1_LIBRARY
-OTHER_FILES = $$PWD/plugin.spec
+OTHER_FILES = $$PWD/plugin.json
QTC_LIB_DEPENDS += extensionsystem
include(../../../../qttest.pri)
-COPYDIR = $$OUT_PWD
-COPYFILES = $$OTHER_FILES
-include(../../../copy.pri)
-
TARGET = $$qtLibraryName(plugin1)
CONFIG -= debug_and_release_target
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.qbs b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.qbs
index 01f72ee6f3..cdda4788c4 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.qbs
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.qbs
@@ -5,7 +5,6 @@ Plugin {
name: "correct_plugin1"
Depends { name: "correct_plugin2" }
Depends { name: "correct_plugin3" }
- filesToCopy: "plugin.spec"
additionalRPaths: [
destinationDirectory + "/../plugin2",
destinationDirectory + "/../plugin3"
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin.spec b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin.spec
deleted file mode 100644
index 5436967a80..0000000000
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin.spec
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="plugin2" version="1.0.0" compatVersion="1.0.0">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.h b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.h
index c6b6694a10..153a2b6098 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.h
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.h
@@ -46,7 +46,7 @@ namespace Plugin2 {
class PLUGIN2_EXPORT MyPlugin2 : public ExtensionSystem::IPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "plugin2.json")
+ Q_PLUGIN_METADATA(IID "plugin" FILE "plugin2.json")
public:
MyPlugin2();
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.json b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.json
index 0967ef424b..8aa0fab608 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.json
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.json
@@ -1 +1,5 @@
-{}
+{
+ "Name" : "plugin2",
+ "Version" : "1.0.0",
+ "CompatVersion" : "1.0.0"
+}
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.pro b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.pro
index 181407e76e..a2eba0cada 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.pro
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.pro
@@ -4,15 +4,11 @@ SOURCES += plugin2.cpp
HEADERS += plugin2.h
DEFINES += PLUGIN2_LIBRARY
-OTHER_FILES = $$PWD/plugin.spec
+OTHER_FILES = $$PWD/plugin.json
QTC_LIB_DEPENDS += extensionsystem
include(../../../../qttest.pri)
-COPYDIR = $$OUT_PWD
-COPYFILES = $$OTHER_FILES
-include(../../../copy.pri)
-
TARGET = $$qtLibraryName(plugin2)
CONFIG -= debug_and_release_target
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.qbs b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.qbs
index 916c5dfebc..0166b831aa 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.qbs
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.qbs
@@ -3,7 +3,6 @@ import "../../../plugin.qbs" as Plugin
Plugin {
name: "correct_plugin2"
- filesToCopy: "plugin.spec"
files: ["plugin2.h", "plugin2.cpp"]
cpp.defines: base.concat(["PLUGIN2_LIBRARY"])
}
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin.spec b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin.spec
deleted file mode 100644
index 234bf56ea2..0000000000
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin.spec
+++ /dev/null
@@ -1,5 +0,0 @@
-<plugin name="plugin3" version="1.0.0" compatVersion="1.0.0">
- <dependencyList>
- <dependency name="plugin2" version="1.0.0"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.h b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.h
index 477122ca16..51709b4916 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.h
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.h
@@ -45,7 +45,7 @@ namespace Plugin3 {
class PLUGIN3_EXPORT MyPlugin3 : public ExtensionSystem::IPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "plugin3.json")
+ Q_PLUGIN_METADATA(IID "plugin" FILE "plugin3.json")
public:
MyPlugin3();
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.json b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.json
index 0967ef424b..83ac3ff817 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.json
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.json
@@ -1 +1,8 @@
-{}
+{
+ "Name" : "plugin3",
+ "Version" : "1.0.0",
+ "CompatVersion" : "1.0.0",
+ "Dependencies" : [
+ { "Name" : "plugin2", "Version" : "1.0.0" }
+ ]
+}
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.pro b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.pro
index 8317fcecb2..21a3a92db8 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.pro
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.pro
@@ -4,15 +4,11 @@ SOURCES += plugin3.cpp
HEADERS += plugin3.h
DEFINES += PLUGIN3_LIBRARY
-OTHER_FILES = $$PWD/plugin.spec
+OTHER_FILES = $$PWD/plugin.json
QTC_LIB_DEPENDS += extensionsystem
include(../../../../qttest.pri)
-COPYDIR = $$OUT_PWD
-COPYFILES = $$OTHER_FILES
-include(../../../copy.pri)
-
TARGET = $$qtLibraryName(plugin3)
CONFIG -= debug_and_release_target
diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.qbs b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.qbs
index 3f0ba48295..9c46ff0540 100644
--- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.qbs
+++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.qbs
@@ -4,7 +4,6 @@ import "../../../plugin.qbs" as Plugin
Plugin {
name: "correct_plugin3"
Depends { name: "correct_plugin2" }
- filesToCopy: "plugin.spec"
additionalRPaths: [destinationDirectory + "/../plugin2"]
files: ["plugin3.h", "plugin3.cpp"]
cpp.defines: base.concat(["PLUGIN3_LIBRARY"])
diff --git a/tests/auto/extensionsystem/pluginmanager/plugins/myplug/myplug.xml b/tests/auto/extensionsystem/pluginmanager/plugins/myplug/myplug.xml
deleted file mode 100644
index c79b29780d..0000000000
--- a/tests/auto/extensionsystem/pluginmanager/plugins/myplug/myplug.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="dummyPlugin" version="1.1.1" compatVersion="1.0.0">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginmanager/plugins/otherplugin.xml b/tests/auto/extensionsystem/pluginmanager/plugins/otherplugin.xml
deleted file mode 100644
index 6f0483f0f8..0000000000
--- a/tests/auto/extensionsystem/pluginmanager/plugins/otherplugin.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="helloworld" version="1.0.0">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginmanager/test.pro b/tests/auto/extensionsystem/pluginmanager/test.pro
index 4fe9054eda..736e6319f0 100644
--- a/tests/auto/extensionsystem/pluginmanager/test.pro
+++ b/tests/auto/extensionsystem/pluginmanager/test.pro
@@ -7,12 +7,4 @@ include(../../qttest.pri)
SOURCES += tst_pluginmanager.cpp
-OTHER_FILES = $$PWD/plugins/otherplugin.xml \
- $$PWD/plugins/plugin1.xml \
- $$PWD/plugins/myplug/myplug.xml
-
-COPYDIR = $$OUT_PWD
-COPYFILES = $$OTHER_FILES
-include(../copy.pri)
-
DEFINES += "PLUGINMANAGER_TESTS_DIR=\\\"$$OUT_PWD\\\""
diff --git a/tests/auto/extensionsystem/pluginmanager/test.qbs b/tests/auto/extensionsystem/pluginmanager/test.qbs
index 47958855c3..7fd1bccf36 100644
--- a/tests/auto/extensionsystem/pluginmanager/test.qbs
+++ b/tests/auto/extensionsystem/pluginmanager/test.qbs
@@ -11,17 +11,6 @@ QtcAutotest {
Depends { name: "correct_plugin1" }
Depends { name: "correct_plugin2" }
Depends { name: "correct_plugin3" }
- Group {
- id: pluginGroup
- name: "plugins"
- fileTags: "copyable_resource"
- copyable_resource.targetDirectory: product.destinationDirectory + "/plugins"
- files: [
- "plugins/otherplugin.xml",
- "plugins/plugin1.xml",
- "plugins/myplug/myplug.xml"
- ]
- }
files: "tst_pluginmanager.cpp"
cpp.defines: base.concat(['PLUGINMANAGER_TESTS_DIR="' + destinationDirectory + '"'])
diff --git a/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp b/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp
index 9e3ce28cdb..ca098c8c54 100644
--- a/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp
+++ b/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp
@@ -49,7 +49,6 @@ private slots:
void addRemoveObjects();
void getObject();
void getObjects();
- void plugins();
void circularPlugins();
void correctPlugins1();
@@ -82,7 +81,9 @@ static QString pluginFolder(const QLatin1String &folder)
void tst_PluginManager::init()
{
+ QLoggingCategory::setFilterRules(QLatin1String("qtc.*.debug=false"));
m_pm = new PluginManager;
+ m_pm->setPluginIID(QLatin1String("plugin"));
m_objectAdded = new QSignalSpy(m_pm, SIGNAL(objectAdded(QObject*)));
m_aboutToRemoveObject = new QSignalSpy(m_pm, SIGNAL(aboutToRemoveObject(QObject*)));
m_pluginsChanged = new QSignalSpy(m_pm, SIGNAL(pluginsChanged()));
@@ -196,24 +197,6 @@ void tst_PluginManager::getObjects()
delete object11;
}
-void tst_PluginManager::plugins()
-{
- m_pm->setPluginPaths(QStringList() << pluginFolder(QLatin1String("plugins")));
- QCOMPARE(m_pluginsChanged->count(), 1);
- QList<PluginSpec *> plugins = m_pm->plugins();
- QCOMPARE(plugins.count(), 3);
- foreach (const QString &expected, QStringList() << "helloworld" << "MyPlugin" << "dummyPlugin") {
- bool found = false;
- foreach (PluginSpec *spec, plugins) {
- if (spec->name() == expected) {
- found = true;
- break;
- }
- }
- QVERIFY2(found, QString("plugin \"%1\" not found").arg(expected).toLocal8Bit().constData());
- }
-}
-
void tst_PluginManager::circularPlugins()
{
m_pm->setPluginPaths(QStringList() << pluginFolder(QLatin1String("circularplugins")));
@@ -238,15 +221,20 @@ void tst_PluginManager::circularPlugins()
void tst_PluginManager::correctPlugins1()
{
- m_pm->setFileExtension("spec");
m_pm->setPluginPaths(QStringList() << pluginFolder(QLatin1String("correctplugins1")));
m_pm->loadPlugins();
+ bool specError = false;
+ bool runError = false;
foreach (PluginSpec *spec, m_pm->plugins()) {
- if (spec->hasError())
+ if (spec->hasError()) {
+ qDebug() << spec->filePath();
qDebug() << spec->errorString();
- QVERIFY(!spec->hasError());
- QCOMPARE(spec->state(), PluginSpec::Running);
+ }
+ specError = specError || spec->hasError();
+ runError = runError || (spec->state() != PluginSpec::Running);
}
+ QVERIFY(!specError);
+ QVERIFY(!runError);
bool plugin1running = false;
bool plugin2running = false;
bool plugin3running = false;
diff --git a/tests/auto/extensionsystem/pluginspec/test.pro b/tests/auto/extensionsystem/pluginspec/test.pro
index aa82b3d921..df398b1fab 100644
--- a/tests/auto/extensionsystem/pluginspec/test.pro
+++ b/tests/auto/extensionsystem/pluginspec/test.pro
@@ -4,27 +4,23 @@ TARGET = pluginspec
SOURCES += tst_pluginspec.cpp
OTHER_FILES += \
- $$PWD/testspecs/simplespec.xml \
- $$PWD/testspecs/simplespec_experimental.xml \
- $$PWD/testspecs/spec1.xml \
- $$PWD/testspecs/spec2.xml \
- $$PWD/testspecs/spec_wrong1.xml \
- $$PWD/testspecs/spec_wrong2.xml \
- $$PWD/testspecs/spec_wrong3.xml \
- $$PWD/testspecs/spec_wrong4.xml \
- $$PWD/testspecs/spec_wrong5.xml \
- $$PWD/testdependencies/spec1.xml \
- $$PWD/testdependencies/spec2.xml \
- $$PWD/testdependencies/spec3.xml \
- $$PWD/testdependencies/spec4.xml \
- $$PWD/testdependencies/spec5.xml \
- $$PWD/testdir/spec.xml
+ $$PWD/testspecs/simplespec.json \
+ $$PWD/testspecs/simplespec_experimental.json \
+ $$PWD/testspecs/spec1.json \
+ $$PWD/testspecs/spec2.json \
+ $$PWD/testspecs/spec_wrong2.json \
+ $$PWD/testspecs/spec_wrong3.json \
+ $$PWD/testspecs/spec_wrong4.json \
+ $$PWD/testspecs/spec_wrong5.json \
+ $$PWD/testdependencies/spec1.json \
+ $$PWD/testdependencies/spec2.json \
+ $$PWD/testdependencies/spec3.json \
+ $$PWD/testdependencies/spec4.json \
+ $$PWD/testdependencies/spec5.json \
+ $$PWD/testdir/spec.json
QTC_LIB_DEPENDS += extensionsystem
include(../../qttest.pri)
DEFINES += "PLUGINSPEC_DIR=\\\"$$PWD\\\""
-
-COPYDIR = $$OUT_PWD
-COPYFILES = $$OTHER_FILES
-include(../copy.pri)
+DEFINES += "PLUGIN_DIR=\\\"$$OUT_PWD\\\""
diff --git a/tests/auto/extensionsystem/pluginspec/test.qbs b/tests/auto/extensionsystem/pluginspec/test.qbs
index 365266d5e9..a6e65844ed 100644
--- a/tests/auto/extensionsystem/pluginspec/test.qbs
+++ b/tests/auto/extensionsystem/pluginspec/test.qbs
@@ -5,44 +5,43 @@ QtcAutotest {
name: "ExtensionSystem pluginspec autotest"
Depends { name: "Aggregation" }
Depends { name: "ExtensionSystem" }
- Depends { name: "pluginspec_test" }
- cpp.defines: base.concat(['PLUGINSPEC_DIR="' + destinationDirectory + '"'])
- files: "tst_pluginspec.cpp"
+ Group {
+ name: "Sources"
+ files: "tst_pluginspec.cpp"
+ cpp.defines: base.concat([
+ 'PLUGIN_DIR="' + destinationDirectory + '"',
+ 'PLUGINSPEC_DIR="' + sourceDirectory + '"'
+ ])
+ }
+
Group {
id: testSpecsGroup
name: "test specs"
- fileTags: "copyable_resource"
- copyable_resource.targetDirectory: product.destinationDirectory + "/testspecs"
files: [
- "testspecs/simplespec.xml",
- "testspecs/simplespec_experimental.xml",
- "testspecs/spec1.xml",
- "testspecs/spec2.xml",
- "testspecs/spec_wrong1.xml",
- "testspecs/spec_wrong2.xml",
- "testspecs/spec_wrong3.xml",
- "testspecs/spec_wrong4.xml",
- "testspecs/spec_wrong5.xml",
+ "testspecs/simplespec.json",
+ "testspecs/simplespec_experimental.json",
+ "testspecs/spec1.json",
+ "testspecs/spec2.json",
+ "testspecs/spec_wrong2.json",
+ "testspecs/spec_wrong3.json",
+ "testspecs/spec_wrong4.json",
+ "testspecs/spec_wrong5.json",
]
}
Group {
id: testDependenciesGroup
name: "test dependencies"
- fileTags: "copyable_resource"
- copyable_resource.targetDirectory: product.destinationDirectory + "/testdependencies"
files: [
- "testdependencies/spec1.xml",
- "testdependencies/spec2.xml",
- "testdependencies/spec3.xml",
- "testdependencies/spec4.xml",
- "testdependencies/spec5.xml",
+ "testdependencies/spec1.json",
+ "testdependencies/spec2.json",
+ "testdependencies/spec3.json",
+ "testdependencies/spec4.json",
+ "testdependencies/spec5.json",
]
}
Group {
id: specGroup
name: "spec"
- fileTags: "copyable_resource"
- copyable_resource.targetDirectory: product.destinationDirectory + "/testdir"
- files: ["testdir/spec.xml"]
+ files: ["testdir/spec.json"]
}
}
diff --git a/tests/auto/extensionsystem/pluginspec/testdependencies/spec1.json b/tests/auto/extensionsystem/pluginspec/testdependencies/spec1.json
new file mode 100644
index 0000000000..62f4e614a9
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testdependencies/spec1.json
@@ -0,0 +1,12 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "plugin1",
+ "Version" : "1.0.1",
+ "CompatVersion" : "1.0.0",
+ "Dependencies" : [
+ { "Name" : "plugin2", "Version" : "2.3.0_2" },
+ { "Name" : "plugin3", "Version" : "1.0.0" }
+ ]
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testdependencies/spec1.xml b/tests/auto/extensionsystem/pluginspec/testdependencies/spec1.xml
deleted file mode 100644
index 137e1b494c..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testdependencies/spec1.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<plugin name="plugin1" version="1.0.1" compatVersion="1.0.0">
- <dependencyList>
- <dependency name="plugin2" version="2.3.0_2"/>
- <dependency name="plugin3" version="1.0.0"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testdependencies/spec2.json b/tests/auto/extensionsystem/pluginspec/testdependencies/spec2.json
new file mode 100644
index 0000000000..020bc447a8
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testdependencies/spec2.json
@@ -0,0 +1,8 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "plugin2",
+ "Version" : "2.4.1",
+ "CompatVersion" : "2.3.0"
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testdependencies/spec2.xml b/tests/auto/extensionsystem/pluginspec/testdependencies/spec2.xml
deleted file mode 100644
index 451f854185..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testdependencies/spec2.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="plugin2" version="2.4.1" compatVersion="2.3.0">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testdependencies/spec3.json b/tests/auto/extensionsystem/pluginspec/testdependencies/spec3.json
new file mode 100644
index 0000000000..9773582368
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testdependencies/spec3.json
@@ -0,0 +1,8 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "plugin3",
+ "Version" : "1.0.0",
+ "CompatVersion" : "1.0.0"
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testdependencies/spec3.xml b/tests/auto/extensionsystem/pluginspec/testdependencies/spec3.xml
deleted file mode 100644
index 9fa01a442f..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testdependencies/spec3.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="plugin3" version="1.0.0" compatVersion="1.0.0">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testdependencies/spec4.json b/tests/auto/extensionsystem/pluginspec/testdependencies/spec4.json
new file mode 100644
index 0000000000..a574c8ee78
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testdependencies/spec4.json
@@ -0,0 +1,11 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "plugin4",
+ "Version" : "1.0.1",
+ "CompatVersion" : "1.0.0",
+ "Dependencies" : [
+ { "Name" : "plugin5", "Version" : "2.3.0_2" }
+ ]
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testdependencies/spec4.xml b/tests/auto/extensionsystem/pluginspec/testdependencies/spec4.xml
deleted file mode 100644
index b06bab2fa0..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testdependencies/spec4.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<plugin name="plugin4" version="1.0.1" compatVersion="1.0.0">
- <dependencyList>
- <dependency name="plugin5" version="2.3.0_2"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testdependencies/spec5.json b/tests/auto/extensionsystem/pluginspec/testdependencies/spec5.json
new file mode 100644
index 0000000000..660aff9011
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testdependencies/spec5.json
@@ -0,0 +1,8 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "plugin5",
+ "Version" : "1.0.1",
+ "CompatVersion" : "1.0.0"
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testdependencies/spec5.xml b/tests/auto/extensionsystem/pluginspec/testdependencies/spec5.xml
deleted file mode 100644
index aab8f424c3..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testdependencies/spec5.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="plugin5" version="1.0.1" compatVersion="1.0.0">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginmanager/plugins/plugin1.xml b/tests/auto/extensionsystem/pluginspec/testdir/spec.json
index 6bd573957b..6bd573957b 100644
--- a/tests/auto/extensionsystem/pluginmanager/plugins/plugin1.xml
+++ b/tests/auto/extensionsystem/pluginspec/testdir/spec.json
diff --git a/tests/auto/extensionsystem/pluginspec/testdir/spec.xml b/tests/auto/extensionsystem/pluginspec/testdir/spec.xml
deleted file mode 100644
index 6bd573957b..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testdir/spec.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="MyPlugin" version="2.2.3_9" compatVersion="2.0.0">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.h b/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.h
index 122a530432..e2b785ae6d 100644
--- a/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.h
+++ b/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.h
@@ -40,7 +40,7 @@ namespace MyPlugin {
class MYPLUGIN_EXPORT MyPluginImpl : public ExtensionSystem::IPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "testplugin.json")
+ Q_PLUGIN_METADATA(IID "plugin" FILE "testplugin.json")
public:
MyPluginImpl();
diff --git a/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.json b/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.json
index 0967ef424b..f6c891e9d3 100644
--- a/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.json
+++ b/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.json
@@ -1 +1,4 @@
-{}
+{
+ "Name" : "MyPlugin",
+ "Version" : "1.0.0"
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.pro b/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.pro
index 0f435476b6..c52eec0dc4 100644
--- a/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.pro
+++ b/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.pro
@@ -3,15 +3,11 @@ DEFINES += MYPLUGIN_LIBRARY
SOURCES += testplugin.cpp
HEADERS += testplugin.h testplugin_global.h
-OTHER_FILES += testplugin.xml
+OTHER_FILES += testplugin.json
QTC_LIB_DEPENDS += extensionsystem
include(../../../../../qtcreator.pri)
include(../../../qttestrpath.pri)
-COPYDIR = $$OUT_PWD
-COPYFILES = $$PWD/testplugin.xml
-include(../../copy.pri)
-
TARGET = $$qtLibraryName(test)
CONFIG -= debug_and_release_target
diff --git a/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.qbs b/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.qbs
index 5bf464c01d..ce0ab64d78 100644
--- a/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.qbs
+++ b/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.qbs
@@ -7,6 +7,5 @@ Plugin {
"testplugin.h", "testplugin.cpp",
"testplugin_global.h"
]
- filesToCopy: "testplugin.xml"
cpp.defines: base.concat(["MYPLUGIN_LIBRARY"])
}
diff --git a/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.xml b/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.xml
deleted file mode 100644
index f8ab3f7a39..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testplugin/testplugin.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="test" version="1.0.0">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/simplespec.json b/tests/auto/extensionsystem/pluginspec/testspecs/simplespec.json
new file mode 100644
index 0000000000..2f1851a748
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testspecs/simplespec.json
@@ -0,0 +1,8 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "MyPlugin",
+ "Version" : "2.2.3_9",
+ "CompatVersion" : "2.0.0"
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/simplespec.xml b/tests/auto/extensionsystem/pluginspec/testspecs/simplespec.xml
deleted file mode 100644
index 6bd573957b..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testspecs/simplespec.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="MyPlugin" version="2.2.3_9" compatVersion="2.0.0">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/simplespec_experimental.json b/tests/auto/extensionsystem/pluginspec/testspecs/simplespec_experimental.json
new file mode 100644
index 0000000000..5530383793
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testspecs/simplespec_experimental.json
@@ -0,0 +1,9 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "MyPlugin",
+ "Version" : "2.2.3_9",
+ "CompatVersion" : "2.0.0",
+ "Experimental" : true
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/simplespec_experimental.xml b/tests/auto/extensionsystem/pluginspec/testspecs/simplespec_experimental.xml
deleted file mode 100644
index 69fe37c53e..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testspecs/simplespec_experimental.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="MyPlugin" version="2.2.3_9" compatVersion="2.0.0" experimental="true">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec1.json b/tests/auto/extensionsystem/pluginspec/testspecs/spec1.json
new file mode 100644
index 0000000000..fedae9dfc5
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testspecs/spec1.json
@@ -0,0 +1,24 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "test",
+ "Version" : "1.0.1",
+ "CompatVersion" : "1.0.0",
+ "Vendor" : "Digia Plc",
+ "Copyright" : "(C) 2014 Digia Plc",
+ "License" : [
+ "This is a default license bla",
+ "blubbblubb",
+ "end of terms"
+ ],
+ "Description" : [
+ "This plugin is just a test.",
+ " it demonstrates the great use of the plugin spec."
+ ],
+ "Url" : "http://qt.digia.com",
+ "Dependencies" : [
+ { "Name" : "SomeOtherPlugin", "Version" : "2.3.0_2" },
+ { "Name" : "EvenOther", "Version" : "1.0.0" }
+ ]
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec1.xml b/tests/auto/extensionsystem/pluginspec/testspecs/spec1.xml
deleted file mode 100644
index f1d801495e..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testspecs/spec1.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<plugin name="test" version="1.0.1" compatVersion="1.0.0">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-This is a default license bla
-blubbblubb
-end of terms
- </license>
- <description>
-This plugin is just a test.
- it demonstrates the great use of the plugin spec.
- </description>
- <url>http://qt.digi.com</url>
- <dependencyList>
- <dependency name="SomeOtherPlugin" version="2.3.0_2"/>
- <dependency name="EvenOther" version="1.0.0"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec2.json b/tests/auto/extensionsystem/pluginspec/testspecs/spec2.json
new file mode 100644
index 0000000000..aaed8000a7
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testspecs/spec2.json
@@ -0,0 +1,8 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "test",
+ "Version" : "3.1.4_10",
+ "Required" : true
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec2.xml b/tests/auto/extensionsystem/pluginspec/testspecs/spec2.xml
deleted file mode 100644
index 24d272902a..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testspecs/spec2.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<plugin name="test" version="3.1.4_10" required="true">
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong1.xml b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong1.xml
deleted file mode 100644
index 561c36c633..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong1.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<something name="test" version="1.0.1" compatVersion="1.0.0">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-This is a default license bla
-blubbblubb
-end of terms
- </license>
- <description>
-This plugin is just a test.
- it demonstrates the great use of the plugin spec.
- </description>
- <url>http://qt.digia.com</url>
- <dependencyList>
- <dependency name="SomeOtherPlugin" version="2.3.0_2"/>
- <dependency name="EvenOther" version="1.0.0"/>
- </dependencyList>
-</something>
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong2.json b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong2.json
new file mode 100644
index 0000000000..1b53a5023d
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong2.json
@@ -0,0 +1,23 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Version" : "1.0.1",
+ "CompatVersion" : "1.0.0",
+ "Vendor" : "Digia Plc",
+ "Copyright" : "(C) 2014 Digia Plc",
+ "License" : [
+ "This is a default license bla",
+ "blubbblubb",
+ "end of terms"
+ ],
+ "Description" : [
+ "This plugin is just a test.",
+ " it demonstrates the great use of the plugin spec."
+ ],
+ "Url" : "http://qt.digia.com",
+ "Dependencies" : [
+ { "Name" : "SomeOtherPlugin", "Version" : "2.3.0_2" },
+ { "Name" : "EvenOther", "Version" : "1.0.0" }
+ ]
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong2.xml b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong2.xml
deleted file mode 100644
index 03c12acc20..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong2.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<plugin version="1.0.1" compatVersion="1.0.0">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-This is a default license bla
-blubbblubb
-end of terms
- </license>
- <description>
-This plugin is just a test.
- it demonstrates the great use of the plugin spec.
- </description>
- <url>http://qt.digia.com</url>
- <dependencyList>
- <dependency name="SomeOtherPlugin" version="2.3.0_2"/>
- <dependency name="EvenOther" version="1.0.0"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong3.json b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong3.json
new file mode 100644
index 0000000000..1462ca501a
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong3.json
@@ -0,0 +1,23 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "test",
+ "CompatVersion" : "1.0.0",
+ "Vendor" : "Digia Plc",
+ "Copyright" : "(C) 2014 Digia Plc",
+ "License" : [
+ "This is a default license bla",
+ "blubbblubb",
+ "end of terms"
+ ],
+ "Description" : [
+ "This plugin is just a test.",
+ " it demonstrates the great use of the plugin spec."
+ ],
+ "Url" : "http://qt.digia.com",
+ "Dependencies" : [
+ { "Name" : "SomeOtherPlugin", "Version" : "2.3.0_2" },
+ { "Name" : "EvenOther", "Version" : "1.0.0" }
+ ]
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong3.xml b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong3.xml
deleted file mode 100644
index 95567f8671..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong3.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<plugin name="test" compatVersion="1.0.0">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-This is a default license bla
-blubbblubb
-end of terms
- </license>
- <description>
-This plugin is just a test.
- it demonstrates the great use of the plugin spec.
- </description>
- <url>http://qt.digia.com</url>
- <dependencyList>
- <dependency name="SomeOtherPlugin" version="2.3.0_2"/>
- <dependency name="EvenOther" version="1.0.0"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong4.json b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong4.json
new file mode 100644
index 0000000000..b98f4bdb9d
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong4.json
@@ -0,0 +1,24 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "test",
+ "Version" : "1.0.1",
+ "CompatVersion" : "1.0.0",
+ "Vendor" : "Digia Plc",
+ "Copyright" : "(C) 2014 Digia Plc",
+ "License" : [
+ "This is a default license bla",
+ "blubbblubb",
+ "end of terms"
+ ],
+ "Description" : [
+ "This plugin is just a test.",
+ " it demonstrates the great use of the plugin spec."
+ ],
+ "Url" : "http://qt.digia.com",
+ "Dependencies" : [
+ { "Version" : "2.3.0_2" },
+ { "Name" : "EvenOther", "Version" : "1.0.0" }
+ ]
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong4.xml b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong4.xml
deleted file mode 100644
index 2ea33e31e8..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong4.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<plugin name="test" version="1.0.1" compatVersion="1.0.0">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-This is a default license bla
-blubbblubb
-end of terms
- </license>
- <description>
-This plugin is just a test.
- it demonstrates the great use of the plugin spec.
- </description>
- <url>http://qt.digia.com</url>
- <dependencyList>
- <dependency version="2.3.0_2"/>
- <dependency name="EvenOther" version="1.0.0"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong5.json b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong5.json
new file mode 100644
index 0000000000..2d3fb804ae
--- /dev/null
+++ b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong5.json
@@ -0,0 +1,24 @@
+{
+ "IID" : "plugin",
+ "MetaData" : {
+ "Name" : "test",
+ "Version" : "1.0.1",
+ "CompatVersion" : "1.0.0",
+ "Vendor" : "Digia Plc",
+ "Copyright" : "(C) 2014 Digia Plc",
+ "License" : [
+ "This is a default license bla",
+ "blubbblubb",
+ "end of terms"
+ ],
+ "Description" : [
+ "This plugin is just a test.",
+ " it demonstrates the great use of the plugin spec."
+ ],
+ "Url" : "http://qt.digia.com",
+ "Dependencies" : [
+ { "Name" : "SomeOtherPlugin", "Version" : "2.3aa.0_2" },
+ { "Name" : "EvenOther", "Version" : "1.0.0" }
+ ]
+ }
+}
diff --git a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong5.xml b/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong5.xml
deleted file mode 100644
index b9aaf18190..0000000000
--- a/tests/auto/extensionsystem/pluginspec/testspecs/spec_wrong5.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<plugin name="test" version="1.0.1" compatVersion="1.0.0">
- <vendor>Digia Plc</vendor>
- <copyright>(C) 2014 Digia Plc</copyright>
- <license>
-This is a default license bla
-blubbblubb
-end of terms
- </license>
- <description>
-This plugin is just a test.
- it demonstrates the great use of the plugin spec.
- </description>
- <url>http://qt.digia.com</url>
- <dependencyList>
- <dependency name="SomeOtherPlugin" version="2.3aa.0_2"/>
- <dependency name="EvenOther" version="1.0.0"/>
- </dependencyList>
-</plugin>
diff --git a/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp b/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp
index 8318a6bea6..f25e380bcb 100644
--- a/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp
+++ b/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp
@@ -32,6 +32,8 @@
#include <extensionsystem/pluginmanager_p.h>
#include <extensionsystem/pluginmanager.h>
+#include <QJsonDocument>
+#include <QJsonObject>
#include <QObject>
#include <QMetaObject>
#include <QtTest>
@@ -39,6 +41,33 @@
using namespace ExtensionSystem;
+static QJsonObject metaData(const QString &fileName)
+{
+ QFile f(fileName);
+ if (!f.open(QIODevice::ReadOnly)) {
+ qWarning() << "Could not open" << fileName;
+ return QJsonObject();
+ }
+ QJsonParseError error;
+ QJsonDocument doc = QJsonDocument::fromJson(f.readAll(), &error);
+ if (error.error != QJsonParseError::NoError) {
+ qWarning() << "Could not parse" << fileName << ":" << error.errorString();
+ return QJsonObject();
+ }
+ return doc.object();
+}
+
+static QString libraryName(const QString &basename)
+{
+#if defined(Q_OS_OSX)
+ return QLatin1String("lib") + basename + QLatin1String("_debug.dylib");
+#elif defined(Q_OS_UNIX)
+ return QLatin1String("lib") + basename + QLatin1String(".so");
+#else
+ return basename + QLatin1String("d.dll");
+#endif
+}
+
class tst_PluginSpec : public QObject
{
Q_OBJECT
@@ -56,19 +85,36 @@ private slots:
void initializePlugin();
void initializeExtensions();
void init();
+ void initTestCase();
+ void cleanupTestCase();
+
+private:
+ PluginManager *pm;
};
void tst_PluginSpec::init()
{
+ QLoggingCategory::setFilterRules(QLatin1String("qtc.*.debug=false"));
QVERIFY(QDir::setCurrent(QLatin1String(PLUGINSPEC_DIR)));
}
+void tst_PluginSpec::initTestCase()
+{
+ pm = new PluginManager;
+ pm->setPluginIID(QLatin1String("plugin"));
+}
+
+void tst_PluginSpec::cleanupTestCase()
+{
+ delete pm;
+ pm = 0;
+}
+
void tst_PluginSpec::read()
{
Internal::PluginSpecPrivate spec(0);
QCOMPARE(spec.state, PluginSpec::Invalid);
- QVERIFY(spec.read("testspecs/spec1.xml"));
- QCOMPARE(spec.state, PluginSpec::Read);
+ QVERIFY(spec.readMetaData(metaData("testspecs/spec1.json")));
QVERIFY(!spec.hasError);
QVERIFY(spec.errorString.isEmpty());
QCOMPARE(spec.name, QString("test"));
@@ -81,7 +127,7 @@ void tst_PluginSpec::read()
QCOMPARE(spec.copyright, QString("(C) 2014 Digia Plc"));
QCOMPARE(spec.license, QString("This is a default license bla\nblubbblubb\nend of terms"));
QCOMPARE(spec.description, QString("This plugin is just a test.\n it demonstrates the great use of the plugin spec."));
- QCOMPARE(spec.url, QString("http://qt.digi.com"));
+ QCOMPARE(spec.url, QString("http://qt.digia.com"));
PluginDependency dep1;
dep1.name = QString("SomeOtherPlugin");
dep1.version = QString("2.3.0_2");
@@ -92,7 +138,7 @@ void tst_PluginSpec::read()
// test missing compatVersion behavior
// and 'required' attribute
- QVERIFY(spec.read("testspecs/spec2.xml"));
+ QVERIFY(spec.readMetaData(metaData("testspecs/spec2.json")));
QCOMPARE(spec.version, QString("3.1.4_10"));
QCOMPARE(spec.compatVersion, QString("3.1.4_10"));
QCOMPARE(spec.required, true);
@@ -102,27 +148,23 @@ void tst_PluginSpec::readError()
{
Internal::PluginSpecPrivate spec(0);
QCOMPARE(spec.state, PluginSpec::Invalid);
- QVERIFY(!spec.read("non-existing-file.xml"));
+ QVERIFY(!spec.readMetaData(metaData("non-existing-file.json")));
QCOMPARE(spec.state, PluginSpec::Invalid);
- QVERIFY(spec.hasError);
- QVERIFY(!spec.errorString.isEmpty());
- QVERIFY(!spec.read("testspecs/spec_wrong1.xml"));
- QCOMPARE(spec.state, PluginSpec::Invalid);
- QVERIFY(spec.hasError);
- QVERIFY(!spec.errorString.isEmpty());
- QVERIFY(!spec.read("testspecs/spec_wrong2.xml"));
+ QVERIFY(!spec.hasError);
+ QVERIFY(spec.errorString.isEmpty());
+ QVERIFY(spec.readMetaData(metaData("testspecs/spec_wrong2.json")));
QCOMPARE(spec.state, PluginSpec::Invalid);
QVERIFY(spec.hasError);
QVERIFY(!spec.errorString.isEmpty());
- QVERIFY(!spec.read("testspecs/spec_wrong3.xml"));
+ QVERIFY(spec.readMetaData(metaData("testspecs/spec_wrong3.json")));
QCOMPARE(spec.state, PluginSpec::Invalid);
QVERIFY(spec.hasError);
QVERIFY(!spec.errorString.isEmpty());
- QVERIFY(!spec.read("testspecs/spec_wrong4.xml"));
+ QVERIFY(spec.readMetaData(metaData("testspecs/spec_wrong4.json")));
QCOMPARE(spec.state, PluginSpec::Invalid);
QVERIFY(spec.hasError);
QVERIFY(!spec.errorString.isEmpty());
- QVERIFY(!spec.read("testspecs/spec_wrong5.xml"));
+ QVERIFY(spec.readMetaData(metaData("testspecs/spec_wrong5.json")));
QCOMPARE(spec.state, PluginSpec::Invalid);
QVERIFY(spec.hasError);
QVERIFY(!spec.errorString.isEmpty());
@@ -168,7 +210,7 @@ void tst_PluginSpec::versionCompare()
void tst_PluginSpec::provides()
{
Internal::PluginSpecPrivate spec(0);
- QVERIFY(spec.read("testspecs/simplespec.xml"));
+ QVERIFY(spec.readMetaData(metaData("testspecs/simplespec.json")));
QVERIFY(!spec.provides("SomeOtherPlugin", "2.2.3_9"));
QVERIFY(!spec.provides("MyPlugin", "2.2.3_10"));
QVERIFY(!spec.provides("MyPlugin", "2.2.4"));
@@ -193,7 +235,7 @@ void tst_PluginSpec::provides()
void tst_PluginSpec::experimental()
{
Internal::PluginSpecPrivate spec(0);
- QVERIFY(spec.read("testspecs/simplespec_experimental.xml"));
+ QVERIFY(spec.readMetaData(metaData("testspecs/simplespec_experimental.json")));
QCOMPARE(spec.experimental, true);
QCOMPARE(spec.enabledInSettings, false);
}
@@ -201,15 +243,9 @@ void tst_PluginSpec::experimental()
void tst_PluginSpec::locationAndPath()
{
Internal::PluginSpecPrivate spec(0);
- QVERIFY(spec.read("testspecs/simplespec.xml"));
- QCOMPARE(spec.location, QString(QDir::currentPath()+"/testspecs"));
- QCOMPARE(spec.filePath, QString(QDir::currentPath()+"/testspecs/simplespec.xml"));
- QVERIFY(spec.read("testdir/../testspecs/simplespec.xml"));
- QCOMPARE(spec.location, QString(QDir::currentPath()+"/testspecs"));
- QCOMPARE(spec.filePath, QString(QDir::currentPath()+"/testspecs/simplespec.xml"));
- QVERIFY(spec.read("testdir/spec.xml"));
- QCOMPARE(spec.location, QString(QDir::currentPath()+"/testdir"));
- QCOMPARE(spec.filePath, QString(QDir::currentPath()+"/testdir/spec.xml"));
+ QVERIFY(spec.read(QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/") + libraryName(QLatin1String("test"))));
+ QCOMPARE(spec.location, QString(QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin")));
+ QCOMPARE(spec.filePath, QString(QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/") + libraryName(QLatin1String("test"))));
}
void tst_PluginSpec::resolveDependencies()
@@ -218,20 +254,33 @@ void tst_PluginSpec::resolveDependencies()
PluginSpec *spec1 = Internal::PluginManagerPrivate::createSpec();
specs.append(spec1);
Internal::PluginSpecPrivate *spec1Priv = Internal::PluginManagerPrivate::privateSpec(spec1);
- spec1Priv->read("testdependencies/spec1.xml");
+ spec1Priv->readMetaData(metaData("testdependencies/spec1.json"));
+ spec1Priv->state = PluginSpec::Read; // fake read state for plugin resolving
+
PluginSpec *spec2 = Internal::PluginManagerPrivate::createSpec();
specs.append(spec2);
- Internal::PluginManagerPrivate::privateSpec(spec2)->read("testdependencies/spec2.xml");
+ Internal::PluginSpecPrivate *spec2Priv = Internal::PluginManagerPrivate::privateSpec(spec2);
+ spec2Priv->readMetaData(metaData("testdependencies/spec2.json"));
+ spec2Priv->state = PluginSpec::Read; // fake read state for plugin resolving
+
PluginSpec *spec3 = Internal::PluginManagerPrivate::createSpec();
specs.append(spec3);
- Internal::PluginManagerPrivate::privateSpec(spec3)->read("testdependencies/spec3.xml");
+ Internal::PluginSpecPrivate *spec3Priv = Internal::PluginManagerPrivate::privateSpec(spec3);
+ spec3Priv->readMetaData(metaData("testdependencies/spec3.json"));
+ spec3Priv->state = PluginSpec::Read; // fake read state for plugin resolving
+
PluginSpec *spec4 = Internal::PluginManagerPrivate::createSpec();
specs.append(spec4);
Internal::PluginSpecPrivate *spec4Priv = Internal::PluginManagerPrivate::privateSpec(spec4);
- spec4Priv->read("testdependencies/spec4.xml");
+ spec4Priv->readMetaData(metaData("testdependencies/spec4.json"));
+ spec4Priv->state = PluginSpec::Read; // fake read state for plugin resolving
+
PluginSpec *spec5 = Internal::PluginManagerPrivate::createSpec();
specs.append(spec5);
- Internal::PluginManagerPrivate::privateSpec(spec5)->read("testdependencies/spec5.xml");
+ Internal::PluginSpecPrivate *spec5Priv = Internal::PluginManagerPrivate::privateSpec(spec5);
+ spec5Priv->readMetaData(metaData("testdependencies/spec5.json"));
+ spec5Priv->state = PluginSpec::Read; // fake read state for plugin resolving
+
QVERIFY(spec1Priv->resolveDependencies(specs));
QCOMPARE(spec1Priv->dependencySpecs.size(), 2);
QVERIFY(!spec1Priv->dependencySpecs.key(spec2).name.isEmpty());
@@ -246,8 +295,7 @@ void tst_PluginSpec::loadLibrary()
{
PluginSpec *ps = Internal::PluginManagerPrivate::createSpec();
Internal::PluginSpecPrivate *spec = Internal::PluginManagerPrivate::privateSpec(ps);
- PluginManager *manager = new PluginManager();
- QVERIFY(spec->read("testplugin/testplugin.xml"));
+ QVERIFY(spec->read(QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/") + libraryName(QLatin1String("test"))));
QVERIFY(spec->resolveDependencies(QList<PluginSpec *>()));
QVERIFY2(spec->loadLibrary(), qPrintable(spec->errorString));
QVERIFY(spec->plugin != 0);
@@ -255,14 +303,13 @@ void tst_PluginSpec::loadLibrary()
QCOMPARE(spec->state, PluginSpec::Loaded);
QVERIFY(!spec->hasError);
QCOMPARE(spec->plugin->pluginSpec(), ps);
- delete manager;
delete ps;
}
void tst_PluginSpec::initializePlugin()
{
Internal::PluginSpecPrivate spec(0);
- QVERIFY(spec.read("testplugin/testplugin.xml"));
+ QVERIFY(spec.read(QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/") + libraryName(QLatin1String("test"))));
QVERIFY(spec.resolveDependencies(QList<PluginSpec *>()));
QVERIFY2(spec.loadLibrary(), qPrintable(spec.errorString));
bool isInitialized;
@@ -280,7 +327,7 @@ void tst_PluginSpec::initializePlugin()
void tst_PluginSpec::initializeExtensions()
{
Internal::PluginSpecPrivate spec(0);
- QVERIFY(spec.read("testplugin/testplugin.xml"));
+ QVERIFY(spec.read(QLatin1String(PLUGIN_DIR) + QLatin1String("/testplugin/") + libraryName(QLatin1String("test"))));
QVERIFY(spec.resolveDependencies(QList<PluginSpec *>()));
QVERIFY2(spec.loadLibrary(), qPrintable(spec.errorString));
bool isExtensionsInitialized;