ExtensionSystem: Use Qt 5 plugin metadata instead of .pluginspec files

Change-Id: I2b2c704260c613985a4bda179658ec1f8879e70f
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
Eike Ziller
2014-08-26 17:29:38 +02:00
parent 8dc9d67e89
commit b5b6a46b4e
212 changed files with 2045 additions and 1921 deletions

1
.gitignore vendored
View File

@@ -40,7 +40,6 @@ Thumbs.db
*.creator.user*
*.qbs.user*
*.qmlproject.user*
*.pluginspec
*.json
/src/app/Info.plist
app_version.h

View File

@@ -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

View File

@@ -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]
}

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 {

View File

@@ -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;
}
}
}

View File

@@ -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 \

View File

@@ -95,7 +95,7 @@ while (1) {
next;
}
if (!$hasContact && $file !~ /\.pluginspec\.in$/) {
if (!$hasContact && $file !~ /\.json\.in$/) {
print "$file\tERROR\tWrong contact\n";
next;
}

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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));
}
static inline QString msgInvalidFormat(const char *key, const QString &content)
{
return QCoreApplication::translate("PluginSpec", "Value \"%2\" for key \"%1\" has invalid format")
.arg(QLatin1String(key), content);
}
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::readPluginSpec(QXmlStreamReader &reader)
bool PluginSpecPrivate::readMetaData(const QJsonObject &metaData)
{
if (reader.name() != QLatin1String(PLUGIN)) {
reader.raiseError(QCoreApplication::translate("PluginSpec", "Expected element \"%1\" as top level element")
.arg(QLatin1String(PLUGIN)));
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;
}
name = reader.attributes().value(QLatin1String(PLUGIN_NAME)).toString();
if (name.isEmpty()) {
reader.raiseError(msgAttributeMissing(PLUGIN, PLUGIN_NAME));
return;
if (value.toString() != PluginManager::pluginIID()) {
qCDebug(pluginLog) << "Plugin ignored (IID does not match)";
return false;
}
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;
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;
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;
}
}
}
/*!
\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;
}
}
}
value = pluginInfo.value(QLatin1String(VENDOR));
if (!value.isUndefined() && !value.isString())
return reportError(msgValueIsNotAString(VENDOR));
vendor = value.toString();
/*!
\internal
*/
void PluginSpecPrivate::readArgumentDescription(QXmlStreamReader &reader)
{
PluginArgumentDescription arg;
arg.name = reader.attributes().value(QLatin1String(ARGUMENT_NAME)).toString();
if (arg.name.isEmpty()) {
reader.raiseError(msgAttributeMissing(ARGUMENT, ARGUMENT_NAME));
return;
}
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);
}
value = pluginInfo.value(QLatin1String(COPYRIGHT));
if (!value.isUndefined() && !value.isString())
return reportError(msgValueIsNotAString(COPYRIGHT));
copyright = value.toString();
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));
}
return isOn;
}
value = pluginInfo.value(QLatin1String(DESCRIPTION));
if (!value.isUndefined() && !readMultiLineString(value, &description))
return reportError(msgValueIsNotAString(DESCRIPTION));
/*!
\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(URL));
if (!value.isUndefined() && !value.isString())
return reportError(msgValueIsNotAString(URL));
url = value.toString();
/*!
\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;
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()));
}
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)) {
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;
} else if (typeValue == QLatin1String(DEPENDENCY_TYPE_SOFT)) {
dep.type = PluginDependency::Optional;
} else {
reader.raiseError(msgInvalidFormat(DEPENDENCY_TYPE));
return;
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);
}
}
dependencies.append(dep);
reader.readNext();
if (reader.tokenType() != QXmlStreamReader::EndElement)
reader.raiseError(msgUnexpectedToken());
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;
}
}
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;
}

View File

@@ -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();
};

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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" }

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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 += \

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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
}

Some files were not shown because too many files have changed in this diff Show More