forked from qt-creator/qt-creator
ExtensionSystem: Add PluginId and VendorId
Change-Id: I4f47f95e1f4ff4af73c2b81320087b4592007993 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -400,7 +400,7 @@ function(add_qtc_plugin target_name)
|
|||||||
get_property(_v TARGET "${i}" PROPERTY _arg_VERSION)
|
get_property(_v TARGET "${i}" PROPERTY _arg_VERSION)
|
||||||
endif()
|
endif()
|
||||||
string(APPEND _arg_DEPENDENCY_STRING
|
string(APPEND _arg_DEPENDENCY_STRING
|
||||||
" { \"Name\" : \"${i}\", \"Version\" : \"${_v}\" }"
|
" { \"Id\" : \"${i}\", \"Version\" : \"${_v}\" }"
|
||||||
)
|
)
|
||||||
endforeach(i)
|
endforeach(i)
|
||||||
foreach(i IN LISTS _arg_PLUGIN_RECOMMENDS)
|
foreach(i IN LISTS _arg_PLUGIN_RECOMMENDS)
|
||||||
@@ -411,7 +411,7 @@ function(add_qtc_plugin target_name)
|
|||||||
get_property(_v TARGET "${i}" PROPERTY _arg_VERSION)
|
get_property(_v TARGET "${i}" PROPERTY _arg_VERSION)
|
||||||
endif()
|
endif()
|
||||||
string(APPEND _arg_DEPENDENCY_STRING
|
string(APPEND _arg_DEPENDENCY_STRING
|
||||||
" { \"Name\" : \"${i}\", \"Version\" : \"${_v}\", \"Type\" : \"optional\" }"
|
" { \"Id\" : \"${i}\", \"Version\" : \"${_v}\", \"Type\" : \"optional\" }"
|
||||||
)
|
)
|
||||||
endforeach(i)
|
endforeach(i)
|
||||||
foreach(i IN LISTS _arg_PLUGIN_TEST_DEPENDS)
|
foreach(i IN LISTS _arg_PLUGIN_TEST_DEPENDS)
|
||||||
@@ -420,7 +420,7 @@ function(add_qtc_plugin target_name)
|
|||||||
endif()
|
endif()
|
||||||
set(_v ${IDE_VERSION})
|
set(_v ${IDE_VERSION})
|
||||||
string(APPEND _arg_DEPENDENCY_STRING
|
string(APPEND _arg_DEPENDENCY_STRING
|
||||||
" { \"Name\" : \"${i}\", \"Version\" : \"${_v}\", \"Type\" : \"test\" }"
|
" { \"Id\" : \"${i}\", \"Version\" : \"${_v}\", \"Type\" : \"test\" }"
|
||||||
)
|
)
|
||||||
endforeach(i)
|
endforeach(i)
|
||||||
list(LENGTH _arg_PLUGIN_MANUAL_DEPENDS manualdep_len)
|
list(LENGTH _arg_PLUGIN_MANUAL_DEPENDS manualdep_len)
|
||||||
@@ -430,11 +430,11 @@ function(add_qtc_plugin target_name)
|
|||||||
foreach (i RANGE 0 ${manualdep_maxindex} 3)
|
foreach (i RANGE 0 ${manualdep_maxindex} 3)
|
||||||
math(EXPR dep_version_i "${i} + 1")
|
math(EXPR dep_version_i "${i} + 1")
|
||||||
math(EXPR dep_type_i "${i} + 2")
|
math(EXPR dep_type_i "${i} + 2")
|
||||||
list(GET _arg_PLUGIN_MANUAL_DEPENDS ${i} dep_name)
|
list(GET _arg_PLUGIN_MANUAL_DEPENDS ${i} dep_id)
|
||||||
list(GET _arg_PLUGIN_MANUAL_DEPENDS ${dep_version_i} dep_version)
|
list(GET _arg_PLUGIN_MANUAL_DEPENDS ${dep_version_i} dep_version)
|
||||||
list(GET _arg_PLUGIN_MANUAL_DEPENDS ${dep_type_i} dep_type)
|
list(GET _arg_PLUGIN_MANUAL_DEPENDS ${dep_type_i} dep_type)
|
||||||
string(APPEND _arg_DEPENDENCY_STRING
|
string(APPEND _arg_DEPENDENCY_STRING
|
||||||
" { \"Name\" : \"${dep_name}\", \"Version\" : \"${dep_version}\", \"Type\" : \"${dep_type}\" }"
|
" { \"Id\" : \"${dep_id}\", \"Version\" : \"${dep_version}\", \"Type\" : \"${dep_type}\" }"
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
@@ -59,7 +59,7 @@
|
|||||||
\li Disable the startup check for a previously crashed \QC instance.
|
\li Disable the startup check for a previously crashed \QC instance.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li -load <plugin>
|
\li -load <plugin-id>
|
||||||
\li Enable the specified plugin and all plugins that it depends on.
|
\li Enable the specified plugin and all plugins that it depends on.
|
||||||
You can combine \c -load and \c -noload options and specify both
|
You can combine \c -load and \c -noload options and specify both
|
||||||
options multiple times to enable and disable several plugins.
|
options multiple times to enable and disable several plugins.
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
\li Enable all plugins.
|
\li Enable all plugins.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li -noload <plugin>
|
\li -noload <plugin-id>
|
||||||
\li Disable the specified plugin and all plugins that depend on it.
|
\li Disable the specified plugin and all plugins that depend on it.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
|
@@ -1,10 +1,12 @@
|
|||||||
{
|
{
|
||||||
//! [1]
|
//! [1]
|
||||||
|
"Id" : "example",
|
||||||
"Name" : "Example",
|
"Name" : "Example",
|
||||||
"Version" : "0.0.1",
|
"Version" : "0.0.1",
|
||||||
"CompatVersion" : "0.0.1",
|
"CompatVersion" : "0.0.1",
|
||||||
//! [1]
|
//! [1]
|
||||||
//! [2]
|
//! [2]
|
||||||
|
"VendorId" : "mycompany",
|
||||||
"Vendor" : "MyCompany",
|
"Vendor" : "MyCompany",
|
||||||
"Copyright" : "(C) MyCompany",
|
"Copyright" : "(C) MyCompany",
|
||||||
"License" : "Put short license information here",
|
"License" : "Put short license information here",
|
||||||
|
@@ -255,8 +255,8 @@
|
|||||||
\snippet exampleplugin/Example.json.in 3
|
\snippet exampleplugin/Example.json.in 3
|
||||||
|
|
||||||
The \c {IDE_PLUGIN_DEPENDENCIES} variable is automatically replaced by the
|
The \c {IDE_PLUGIN_DEPENDENCIES} variable is automatically replaced by the
|
||||||
dependency information in \c {QTC_PLUGIN_DEPENDS} and
|
dependency information in \c {PLUGIN_DEPENDS} amd \c {PLUGIN_RECOMMENDS}
|
||||||
\c {QTC_PLUGIN_RECOMMENDS} from your plugin's \c {.pro} file.
|
from your plugin's \c {add_qtc_plugin()} call in its \c {CMakeLists.txt} file.
|
||||||
|
|
||||||
\section1 Plugin Class
|
\section1 Plugin Class
|
||||||
|
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
\section2 Main Keys
|
\section2 Main Keys
|
||||||
|
|
||||||
The main keys that are used to identify your your plugin and define default loading behavior,
|
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,
|
consist of the mandatory keys \c Id and \c Version, and the optional keys \c CompatVersion,
|
||||||
\c Experimental, \c DisabledByDefault, \c Required and \c Platform.
|
\c Experimental, \c DisabledByDefault, \c Required and \c Platform.
|
||||||
\table
|
\table
|
||||||
\header
|
\header
|
||||||
@@ -25,10 +25,14 @@
|
|||||||
\li Value Type
|
\li Value Type
|
||||||
\li Meaning
|
\li Meaning
|
||||||
\row
|
\row
|
||||||
\li Name
|
\li Id
|
||||||
\li String
|
\li String
|
||||||
\li This is used as an identifier for the plugin and can e.g.
|
\li This is used as an identifier for the plugin and can e.g.
|
||||||
be referenced in other plugin's dependencies.
|
be referenced in other plugin's dependencies.
|
||||||
|
\row
|
||||||
|
\li Name
|
||||||
|
\li String
|
||||||
|
\li This is used as the display name of your plugin in the UI.
|
||||||
\row
|
\row
|
||||||
\li Version
|
\li Version
|
||||||
\li String
|
\li String
|
||||||
@@ -146,36 +150,37 @@
|
|||||||
these other plugins are loaded before this plugin.
|
these other plugins are loaded before this plugin.
|
||||||
|
|
||||||
Dependencies are declared with the key \c Dependency, which contains an array of JSON objects
|
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.
|
with required keys \c Id and \c Version, and optional key \c Type.
|
||||||
|
|
||||||
The following formulas illustrate how the dependency information is matched.
|
The following formulas illustrate how the dependency information is matched.
|
||||||
In the formulas the name of the required plugin (as defined in the \c Name of the dependency
|
In the formulas the Id of the required plugin (as defined in the \c Id of the dependency
|
||||||
object) is denoted as \c DependencyName
|
object) is denoted as \c DependencyId
|
||||||
and the required version of the plugin is denoted as \c DependencyVersion.
|
and the required version of the plugin is denoted as \c DependencyVersion.
|
||||||
A plugin with given \c Name, \c Version and \c CompatVersion
|
A plugin with given \c Id, \c Version and \c CompatVersion
|
||||||
as defined in the plugin meta data matches
|
as defined in the plugin meta data matches
|
||||||
the dependency if
|
the dependency if
|
||||||
\list
|
\list
|
||||||
\li its \c Name matches \c DependencyName, and
|
\li its \c Id matches \c DependencyId, and
|
||||||
\li \c {CompatVersion <= DependencyVersion <= Version}.
|
\li \c {CompatVersion <= DependencyVersion <= Version}.
|
||||||
\endlist
|
\endlist
|
||||||
For example a dependency
|
For example a dependency
|
||||||
\code
|
\code
|
||||||
{
|
{
|
||||||
"Name" : "SomeOtherPlugin",
|
"Id" : "someotherplugin",
|
||||||
"Version" : "2.3.0_2"
|
"Version" : "2.3.0_2"
|
||||||
}
|
}
|
||||||
\endcode
|
\endcode
|
||||||
would be matched by a plugin with
|
would be matched by a plugin with
|
||||||
\code
|
\code
|
||||||
{
|
{
|
||||||
|
"Id" : "someotherplugin",
|
||||||
"Name" : "SomeOtherPlugin",
|
"Name" : "SomeOtherPlugin",
|
||||||
"Version" : "3.1.0",
|
"Version" : "3.1.0",
|
||||||
"CompatVersion" : "2.2.0",
|
"CompatVersion" : "2.2.0",
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
\endcode
|
\endcode
|
||||||
since the name matches, and the version \c{2.3.0_2} given in the dependency tag
|
since the id 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}.
|
lies in the range of \c{2.2.0} and \c{3.1.0}.
|
||||||
|
|
||||||
\table
|
\table
|
||||||
@@ -196,9 +201,9 @@
|
|||||||
\li Value Type
|
\li Value Type
|
||||||
\li Meaning
|
\li Meaning
|
||||||
\row
|
\row
|
||||||
\li Name
|
\li Id
|
||||||
\li String
|
\li String
|
||||||
\li The name of the plugin, on which this plugin relies.
|
\li The Id of the plugin, on which this plugin relies.
|
||||||
\row
|
\row
|
||||||
\li Version
|
\li Version
|
||||||
\li String
|
\li String
|
||||||
@@ -298,9 +303,11 @@
|
|||||||
|
|
||||||
\code
|
\code
|
||||||
{
|
{
|
||||||
|
"Id" : "test",
|
||||||
"Name" : "Test",
|
"Name" : "Test",
|
||||||
"Version" : "1.0.1",
|
"Version" : "1.0.1",
|
||||||
"CompatVersion" : "1.0.0",
|
"CompatVersion" : "1.0.0",
|
||||||
|
"VendorId" : "mycompany",
|
||||||
"Vendor" : "My Company",
|
"Vendor" : "My Company",
|
||||||
"Copyright" : "(C) 2016 MyCompany",
|
"Copyright" : "(C) 2016 MyCompany",
|
||||||
"License" : [
|
"License" : [
|
||||||
@@ -323,8 +330,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"Dependencies" : [
|
"Dependencies" : [
|
||||||
{ "Name" : "SomeOtherPlugin", "Version" : "2.3.0_2" },
|
{ "Id" : "someotherplugin", "Version" : "2.3.0_2" },
|
||||||
{ "Name" : "EvenOther", "Version" : "1.0.0" }
|
{ "Id" : "evenother", "Version" : "1.0.0" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
\endcode
|
\endcode
|
||||||
|
@@ -60,7 +60,7 @@ Module {
|
|||||||
var depdeps = deps[d].dependencies;
|
var depdeps = deps[d].dependencies;
|
||||||
for (var dd in depdeps) {
|
for (var dd in depdeps) {
|
||||||
if (depdeps[dd].name == 'pluginjson') {
|
if (depdeps[dd].name == 'pluginjson') {
|
||||||
cmd.plugin_depends.push(deps[d].name);
|
cmd.plugin_depends.push(deps[d].id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -87,13 +87,13 @@ Module {
|
|||||||
vars['QTC_PLUGIN_REVISION'] = product.vcs ? (product.vcs.repoState || "") : "";
|
vars['QTC_PLUGIN_REVISION'] = product.vcs ? (product.vcs.repoState || "") : "";
|
||||||
var deplist = [];
|
var deplist = [];
|
||||||
for (i in plugin_depends) {
|
for (i in plugin_depends) {
|
||||||
deplist.push(" { \"Name\" : \"" + plugin_depends[i] + "\", \"Version\" : \"" + qtcVersion + "\" }");
|
deplist.push(" { \"Id\" : \"" + plugin_depends[i] + "\", \"Version\" : \"" + qtcVersion + "\" }");
|
||||||
}
|
}
|
||||||
for (i in plugin_recommends) {
|
for (i in plugin_recommends) {
|
||||||
deplist.push(" { \"Name\" : \"" + plugin_recommends[i] + "\", \"Version\" : \"" + qtcVersion + "\", \"Type\" : \"optional\" }");
|
deplist.push(" { \"Id\" : \"" + plugin_recommends[i] + "\", \"Version\" : \"" + qtcVersion + "\", \"Type\" : \"optional\" }");
|
||||||
}
|
}
|
||||||
for (i in plugin_test_depends) {
|
for (i in plugin_test_depends) {
|
||||||
deplist.push(" { \"Name\" : \"" + plugin_test_depends[i] + "\", \"Version\" : \"" + qtcVersion + "\", \"Type\" : \"test\" }");
|
deplist.push(" { \"Id\" : \"" + plugin_test_depends[i] + "\", \"Version\" : \"" + qtcVersion + "\", \"Type\" : \"test\" }");
|
||||||
}
|
}
|
||||||
deplist = deplist.join(",\n")
|
deplist = deplist.join(",\n")
|
||||||
vars['IDE_PLUGIN_DEPENDENCIES'] = "\"Dependencies\" : [\n" + deplist + "\n ]";
|
vars['IDE_PLUGIN_DEPENDENCIES'] = "\"Dependencies\" : [\n" + deplist + "\n ]";
|
||||||
@@ -109,4 +109,3 @@ Module {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
-- Copyright (C) 2024 The Qt Company Ltd.
|
-- Copyright (C) 2024 The Qt Company Ltd.
|
||||||
-- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
-- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
return {
|
return {
|
||||||
Name = "AIAssistant",
|
Id = "aiassistant",
|
||||||
|
Name = "Qt AI Assistant",
|
||||||
Version = "1.0.0",
|
Version = "1.0.0",
|
||||||
CompatVersion = "1.0.0",
|
CompatVersion = "1.0.0",
|
||||||
|
VendorId = "theqtcompany",
|
||||||
Vendor = "The Qt Company",
|
Vendor = "The Qt Company",
|
||||||
Category = "Language Client",
|
Category = "Language Client",
|
||||||
Description = "Qt AI Assistant",
|
Description = "Qt AI Assistant",
|
||||||
@@ -17,8 +19,8 @@ You also need one of the following valid Qt licenses: Qt for Application Develop
|
|||||||
You will need access to a LLM for the suggestions. You can use a subscription to a commercial, cloud-hosted LLM, a privately hosted or on-premise LLM, or a Small Language Model running locally on your computer.
|
You will need access to a LLM for the suggestions. You can use a subscription to a commercial, cloud-hosted LLM, a privately hosted or on-premise LLM, or a Small Language Model running locally on your computer.
|
||||||
]],
|
]],
|
||||||
Dependencies = {
|
Dependencies = {
|
||||||
{ Name = "Lua", Version = "14.0.0" },
|
{ Id = "lua", Version = "14.0.0" },
|
||||||
{ Name = "LuaLanguageClient", Version = "14.0.0" }
|
{ Id = "lualanguageclient", Version = "14.0.0" }
|
||||||
},
|
},
|
||||||
hooks = {
|
hooks = {
|
||||||
editors = {
|
editors = {
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
-- Copyright (C) 2024 The Qt Company Ltd.
|
-- Copyright (C) 2024 The Qt Company Ltd.
|
||||||
-- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
-- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
return {
|
return {
|
||||||
Name = "LuaLanguageServer",
|
Id = "lualanguageserver",
|
||||||
|
Name = "Lua Language Server",
|
||||||
Version = "1.0.0",
|
Version = "1.0.0",
|
||||||
CompatVersion = "1.0.0",
|
CompatVersion = "1.0.0",
|
||||||
|
VendorId = "theqtcompany",
|
||||||
Vendor = "The Qt Company",
|
Vendor = "The Qt Company",
|
||||||
Category = "Language Client",
|
Category = "Language Client",
|
||||||
Description = "The Lua Language Server",
|
Description = "The Lua Language Server",
|
||||||
@@ -14,8 +16,8 @@ This plugin provides the Lua Language Server.
|
|||||||
It will try to install it if it is not found.
|
It will try to install it if it is not found.
|
||||||
]],
|
]],
|
||||||
Dependencies = {
|
Dependencies = {
|
||||||
{ Name = "Lua", Version = "14.0.0" },
|
{ Id = "lua", Version = "14.0.0" },
|
||||||
{ Name = "LuaLanguageClient", Version = "14.0.0" }
|
{ Id = "lualanguageclient", Version = "14.0.0" }
|
||||||
},
|
},
|
||||||
setup = function()
|
setup = function()
|
||||||
require 'init'.setup()
|
require 'init'.setup()
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
-- Copyright (C) 2024 The Qt Company Ltd.
|
-- Copyright (C) 2024 The Qt Company Ltd.
|
||||||
-- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
-- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
return {
|
return {
|
||||||
Name = "LuaTests",
|
Id = "luatests",
|
||||||
|
Name = "Lua Tests",
|
||||||
Version = "1.0.0",
|
Version = "1.0.0",
|
||||||
CompatVersion = "1.0.0",
|
CompatVersion = "1.0.0",
|
||||||
|
VendorId = "theqtcompany",
|
||||||
Vendor = "The Qt Company",
|
Vendor = "The Qt Company",
|
||||||
Category = "Tests",
|
Category = "Tests",
|
||||||
DisabledByDefault = true,
|
DisabledByDefault = true,
|
||||||
@@ -13,7 +15,7 @@ return {
|
|||||||
It has tests for (almost) all functionality exposed by the API.
|
It has tests for (almost) all functionality exposed by the API.
|
||||||
]],
|
]],
|
||||||
Dependencies = {
|
Dependencies = {
|
||||||
{ Name = "Lua", Version = "14.0.0" }
|
{ Id = "lua", Version = "14.0.0" }
|
||||||
},
|
},
|
||||||
setup = function() require 'tests'.setup() end,
|
setup = function() require 'tests'.setup() end,
|
||||||
printToOutputPane = true,
|
printToOutputPane = true,
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
-- Copyright (C) 2024 The Qt Company Ltd.
|
-- Copyright (C) 2024 The Qt Company Ltd.
|
||||||
-- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
-- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
return {
|
return {
|
||||||
Name = "RustLanguageServer",
|
Id = "rustlanguageserver",
|
||||||
|
Name = "Rust Language Server",
|
||||||
Version = "1.0.0",
|
Version = "1.0.0",
|
||||||
CompatVersion = "1.0.0",
|
CompatVersion = "1.0.0",
|
||||||
|
VendorId = "theqtcompany",
|
||||||
Vendor = "The Qt Company",
|
Vendor = "The Qt Company",
|
||||||
Category = "Language Client",
|
Category = "Language Client",
|
||||||
Description = "The Rust Language Server",
|
Description = "The Rust Language Server",
|
||||||
@@ -14,8 +16,8 @@ This plugin provides the Rust Language Server.
|
|||||||
It will try to install it if it is not found.
|
It will try to install it if it is not found.
|
||||||
]],
|
]],
|
||||||
Dependencies = {
|
Dependencies = {
|
||||||
{ Name = "Lua", Version = "14.0.0" },
|
{ Id = "lua", Version = "14.0.0" },
|
||||||
{ Name = "LuaLanguageClient", Version = "14.0.0" }
|
{ Id = "lualanguageclient", Version = "14.0.0" }
|
||||||
},
|
},
|
||||||
setup = function()
|
setup = function()
|
||||||
require 'init'.setup()
|
require 'init'.setup()
|
||||||
|
@@ -41,14 +41,16 @@ local function setup()
|
|||||||
end
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
Id = "tellajoke",
|
||||||
Name = "Tell A Joke",
|
Name = "Tell A Joke",
|
||||||
Version = "1.0.0",
|
Version = "1.0.0",
|
||||||
CompatVersion = "1.0.0",
|
CompatVersion = "1.0.0",
|
||||||
|
VendorId = "theqtcompany",
|
||||||
Vendor = "The Qt Company",
|
Vendor = "The Qt Company",
|
||||||
Category = "Fun",
|
Category = "Fun",
|
||||||
Description = "This plugin adds an action that tells a joke.",
|
Description = "This plugin adds an action that tells a joke.",
|
||||||
Dependencies = {
|
Dependencies = {
|
||||||
{ Name = "Lua", Version = "14.0.0" },
|
{ Id = "lua", Version = "14.0.0" },
|
||||||
},
|
},
|
||||||
setup = setup,
|
setup = setup,
|
||||||
} --[[@as QtcPlugin]]
|
} --[[@as QtcPlugin]]
|
||||||
|
@@ -109,18 +109,18 @@ bool OptionsParser::checkForTestOptions()
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
QStringList args = m_currentArg.split(QLatin1Char(','));
|
QStringList args = m_currentArg.split(QLatin1Char(','));
|
||||||
const QString pluginName = args.takeFirst();
|
const QString pluginId = args.takeFirst();
|
||||||
if (PluginSpec *spec = m_pmPrivate->pluginByName(pluginName)) {
|
if (PluginSpec *spec = m_pmPrivate->pluginById(pluginId.toLower())) {
|
||||||
if (m_pmPrivate->containsTestSpec(spec)) {
|
if (m_pmPrivate->containsTestSpec(spec)) {
|
||||||
if (m_errorString)
|
if (m_errorString)
|
||||||
*m_errorString = Tr::tr("The plugin \"%1\" is specified twice for testing.").arg(pluginName);
|
*m_errorString = Tr::tr("The plugin \"%1\" is specified twice for testing.").arg(pluginId);
|
||||||
m_hasError = true;
|
m_hasError = true;
|
||||||
} else {
|
} else {
|
||||||
m_pmPrivate->testSpecs.emplace_back(spec, args);
|
m_pmPrivate->testSpecs.emplace_back(spec, args);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (m_errorString)
|
if (m_errorString)
|
||||||
*m_errorString = Tr::tr("The plugin \"%1\" does not exist.").arg(pluginName);
|
*m_errorString = Tr::tr("The plugin \"%1\" does not exist.").arg(pluginId);
|
||||||
m_hasError = true;
|
m_hasError = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ bool OptionsParser::checkForTestOptions()
|
|||||||
return true;
|
return true;
|
||||||
} else if (m_currentArg == QLatin1String(NOTEST_OPTION)) {
|
} else if (m_currentArg == QLatin1String(NOTEST_OPTION)) {
|
||||||
if (nextToken(RequiredToken)) {
|
if (nextToken(RequiredToken)) {
|
||||||
if (PluginSpec *spec = m_pmPrivate->pluginByName(m_currentArg)) {
|
if (PluginSpec *spec = m_pmPrivate->pluginById(m_currentArg.toLower())) {
|
||||||
if (!m_pmPrivate->containsTestSpec(spec)) {
|
if (!m_pmPrivate->containsTestSpec(spec)) {
|
||||||
if (m_errorString)
|
if (m_errorString)
|
||||||
*m_errorString = Tr::tr("The plugin \"%1\" is not tested.").arg(m_currentArg);
|
*m_errorString = Tr::tr("The plugin \"%1\" is not tested.").arg(m_currentArg);
|
||||||
@@ -179,7 +179,7 @@ bool OptionsParser::checkForLoadOption()
|
|||||||
spec->setForceEnabled(true);
|
spec->setForceEnabled(true);
|
||||||
m_isDependencyRefreshNeeded = true;
|
m_isDependencyRefreshNeeded = true;
|
||||||
} else {
|
} else {
|
||||||
PluginSpec *spec = m_pmPrivate->pluginByName(m_currentArg);
|
PluginSpec *spec = m_pmPrivate->pluginById(m_currentArg.toLower());
|
||||||
if (!spec) {
|
if (!spec) {
|
||||||
if (m_errorString)
|
if (m_errorString)
|
||||||
*m_errorString = Tr::tr("The plugin \"%1\" does not exist.").arg(m_currentArg);
|
*m_errorString = Tr::tr("The plugin \"%1\" does not exist.").arg(m_currentArg);
|
||||||
@@ -204,7 +204,7 @@ bool OptionsParser::checkForNoLoadOption()
|
|||||||
spec->setForceDisabled(true);
|
spec->setForceDisabled(true);
|
||||||
m_isDependencyRefreshNeeded = true;
|
m_isDependencyRefreshNeeded = true;
|
||||||
} else {
|
} else {
|
||||||
PluginSpec *spec = m_pmPrivate->pluginByName(m_currentArg);
|
PluginSpec *spec = m_pmPrivate->pluginById(m_currentArg.toLower());
|
||||||
if (!spec) {
|
if (!spec) {
|
||||||
if (m_errorString)
|
if (m_errorString)
|
||||||
*m_errorString = Tr::tr("The plugin \"%1\" does not exist.").arg(m_currentArg);
|
*m_errorString = Tr::tr("The plugin \"%1\" does not exist.").arg(m_currentArg);
|
||||||
|
@@ -43,10 +43,12 @@ class PluginDetailsViewPrivate
|
|||||||
public:
|
public:
|
||||||
PluginDetailsViewPrivate(PluginDetailsView *detailsView)
|
PluginDetailsViewPrivate(PluginDetailsView *detailsView)
|
||||||
: q(detailsView)
|
: q(detailsView)
|
||||||
|
, id(createContentsLabel())
|
||||||
, name(createContentsLabel())
|
, name(createContentsLabel())
|
||||||
, version(createContentsLabel())
|
, version(createContentsLabel())
|
||||||
, compatVersion(createContentsLabel())
|
, compatVersion(createContentsLabel())
|
||||||
, vendor(createContentsLabel())
|
, vendor(createContentsLabel())
|
||||||
|
, vendorId(createContentsLabel())
|
||||||
, component(createContentsLabel())
|
, component(createContentsLabel())
|
||||||
, url(createContentsLabel())
|
, url(createContentsLabel())
|
||||||
, documentationUrl(createContentsLabel())
|
, documentationUrl(createContentsLabel())
|
||||||
@@ -62,10 +64,12 @@ public:
|
|||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
Form {
|
Form {
|
||||||
|
Tr::tr("ID:"), id, br,
|
||||||
Tr::tr("Name:"), name, br,
|
Tr::tr("Name:"), name, br,
|
||||||
Tr::tr("Version:"), version, br,
|
Tr::tr("Version:"), version, br,
|
||||||
Tr::tr("Compatibility version:"), compatVersion, br,
|
Tr::tr("Compatibility version:"), compatVersion, br,
|
||||||
Tr::tr("Vendor:"), vendor, br,
|
Tr::tr("Vendor:"), vendor, br,
|
||||||
|
Tr::tr("VendorId:"), vendorId, br,
|
||||||
Tr::tr("Group:"), component, br,
|
Tr::tr("Group:"), component, br,
|
||||||
Tr::tr("URL:"), url, br,
|
Tr::tr("URL:"), url, br,
|
||||||
Tr::tr("Documentation:"), documentationUrl, br,
|
Tr::tr("Documentation:"), documentationUrl, br,
|
||||||
@@ -83,10 +87,12 @@ public:
|
|||||||
|
|
||||||
PluginDetailsView *q = nullptr;
|
PluginDetailsView *q = nullptr;
|
||||||
|
|
||||||
|
QLabel *id = nullptr;
|
||||||
QLabel *name = nullptr;
|
QLabel *name = nullptr;
|
||||||
QLabel *version = nullptr;
|
QLabel *version = nullptr;
|
||||||
QLabel *compatVersion = nullptr;
|
QLabel *compatVersion = nullptr;
|
||||||
QLabel *vendor = nullptr;
|
QLabel *vendor = nullptr;
|
||||||
|
QLabel *vendorId = nullptr;
|
||||||
QLabel *component = nullptr;
|
QLabel *component = nullptr;
|
||||||
QLabel *url = nullptr;
|
QLabel *url = nullptr;
|
||||||
QLabel *documentationUrl = nullptr;
|
QLabel *documentationUrl = nullptr;
|
||||||
@@ -140,6 +146,7 @@ PluginDetailsView::~PluginDetailsView()
|
|||||||
*/
|
*/
|
||||||
void PluginDetailsView::update(PluginSpec *spec)
|
void PluginDetailsView::update(PluginSpec *spec)
|
||||||
{
|
{
|
||||||
|
d->id->setText(spec->id());
|
||||||
d->name->setText(spec->name());
|
d->name->setText(spec->name());
|
||||||
const QString revision = spec->revision();
|
const QString revision = spec->revision();
|
||||||
const QString versionString = spec->version()
|
const QString versionString = spec->version()
|
||||||
@@ -147,6 +154,7 @@ void PluginDetailsView::update(PluginSpec *spec)
|
|||||||
d->version->setText(versionString);
|
d->version->setText(versionString);
|
||||||
d->compatVersion->setText(spec->compatVersion());
|
d->compatVersion->setText(spec->compatVersion());
|
||||||
d->vendor->setText(spec->vendor());
|
d->vendor->setText(spec->vendor());
|
||||||
|
d->vendorId->setText(spec->vendorId());
|
||||||
d->component->setText(spec->category().isEmpty() ? Tr::tr("None") : spec->category());
|
d->component->setText(spec->category().isEmpty() ? Tr::tr("None") : spec->category());
|
||||||
const auto toHtmlLink = [](const QString &url) {
|
const auto toHtmlLink = [](const QString &url) {
|
||||||
return QString::fromLatin1("<a href=\"%1\">%1</a>").arg(url);
|
return QString::fromLatin1("<a href=\"%1\">%1</a>").arg(url);
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
#include "pluginmanager.h"
|
#include "pluginmanager.h"
|
||||||
#include "pluginspec.h"
|
#include "pluginspec.h"
|
||||||
|
|
||||||
|
#include <utils/algorithm.h>
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
@@ -79,7 +80,8 @@ PluginErrorOverview::PluginErrorOverview(QWidget *parent)
|
|||||||
for (PluginSpec *spec : PluginManager::plugins()) {
|
for (PluginSpec *spec : PluginManager::plugins()) {
|
||||||
// only show errors on startup if plugin is enabled.
|
// only show errors on startup if plugin is enabled.
|
||||||
if (spec->hasError() && spec->isEffectivelyEnabled()) {
|
if (spec->hasError() && spec->isEffectivelyEnabled()) {
|
||||||
QListWidgetItem *item = new QListWidgetItem(spec->name());
|
const QString name = spec->displayName();
|
||||||
|
QListWidgetItem *item = new QListWidgetItem(name);
|
||||||
item->setData(Qt::UserRole, QVariant::fromValue(spec));
|
item->setData(Qt::UserRole, QVariant::fromValue(spec));
|
||||||
pluginList->addItem(item);
|
pluginList->addItem(item);
|
||||||
}
|
}
|
||||||
|
@@ -772,9 +772,15 @@ void PluginManager::formatPluginOptions(QTextStream &str, int optionIndentation,
|
|||||||
for (PluginSpec *ps : std::as_const(d->pluginSpecs)) {
|
for (PluginSpec *ps : std::as_const(d->pluginSpecs)) {
|
||||||
const PluginSpec::PluginArgumentDescriptions pargs = ps->argumentDescriptions();
|
const PluginSpec::PluginArgumentDescriptions pargs = ps->argumentDescriptions();
|
||||||
if (!pargs.empty()) {
|
if (!pargs.empty()) {
|
||||||
str << "\nPlugin: " << ps->name() << '\n';
|
str << "\nPlugin: " << ps->id() << '\n';
|
||||||
for (const PluginArgumentDescription &pad : pargs)
|
for (const PluginArgumentDescription &pad : pargs)
|
||||||
formatOption(str, pad.name, pad.parameter, pad.description, optionIndentation, descriptionIndentation);
|
formatOption(
|
||||||
|
str,
|
||||||
|
pad.name,
|
||||||
|
pad.parameter,
|
||||||
|
pad.description,
|
||||||
|
optionIndentation,
|
||||||
|
descriptionIndentation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1006,18 +1012,24 @@ void PluginManagerPrivate::writeSettings()
|
|||||||
settings->setValueWithDefault(C_FORCEENABLED_PLUGINS, tempForceEnabledPlugins);
|
settings->setValueWithDefault(C_FORCEENABLED_PLUGINS, tempForceEnabledPlugins);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline QStringList toLower(const QStringList &list)
|
||||||
|
{
|
||||||
|
return Utils::transform(list, [](const QString &s) { return s.toLower(); });
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\internal
|
\internal
|
||||||
*/
|
*/
|
||||||
void PluginManagerPrivate::readSettings()
|
void PluginManagerPrivate::readSettings()
|
||||||
{
|
{
|
||||||
if (globalSettings) {
|
if (globalSettings) {
|
||||||
defaultDisabledPlugins = globalSettings->value(C_IGNORED_PLUGINS).toStringList();
|
defaultDisabledPlugins = toLower(globalSettings->value(C_IGNORED_PLUGINS).toStringList());
|
||||||
defaultEnabledPlugins = globalSettings->value(C_FORCEENABLED_PLUGINS).toStringList();
|
defaultEnabledPlugins = toLower(
|
||||||
|
globalSettings->value(C_FORCEENABLED_PLUGINS).toStringList());
|
||||||
}
|
}
|
||||||
if (settings) {
|
if (settings) {
|
||||||
disabledPlugins = settings->value(C_IGNORED_PLUGINS).toStringList();
|
disabledPlugins = toLower(settings->value(C_IGNORED_PLUGINS).toStringList());
|
||||||
forceEnabledPlugins = settings->value(C_FORCEENABLED_PLUGINS).toStringList();
|
forceEnabledPlugins = toLower(settings->value(C_FORCEENABLED_PLUGINS).toStringList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1053,7 +1065,7 @@ void PluginManagerPrivate::checkForDuplicatePlugins()
|
|||||||
{
|
{
|
||||||
QHash<QString, PluginSpec *> seen;
|
QHash<QString, PluginSpec *> seen;
|
||||||
for (PluginSpec *spec : pluginSpecs) {
|
for (PluginSpec *spec : pluginSpecs) {
|
||||||
if (PluginSpec *other = seen.value(spec->name())) {
|
if (PluginSpec *other = seen.value(spec->id())) {
|
||||||
// Plugin with same name already there. We do not know, which version is the right one,
|
// Plugin with same name already there. We do not know, which version is the right one,
|
||||||
// keep it simple and fail both (if enabled).
|
// keep it simple and fail both (if enabled).
|
||||||
if (spec->isEffectivelyEnabled() && other->isEffectivelyEnabled()) {
|
if (spec->isEffectivelyEnabled() && other->isEffectivelyEnabled()) {
|
||||||
@@ -1063,7 +1075,8 @@ void PluginManagerPrivate::checkForDuplicatePlugins()
|
|||||||
other->setError(error);
|
other->setError(error);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
seen.insert(spec->name(), spec);
|
if (!spec->id().isEmpty())
|
||||||
|
seen.insert(spec->id(), spec);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1551,15 +1564,15 @@ public:
|
|||||||
+ ".lock";
|
+ ".lock";
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<QString> lockedPluginName(PluginManagerPrivate *pm)
|
static std::optional<QString> lockedPluginId(PluginManagerPrivate *pm)
|
||||||
{
|
{
|
||||||
const QString lockFilePath = LockFile::filePath(pm);
|
const QString lockFilePath = LockFile::filePath(pm);
|
||||||
if (QFileInfo::exists(lockFilePath)) {
|
if (QFileInfo::exists(lockFilePath)) {
|
||||||
QFile f(lockFilePath);
|
QFile f(lockFilePath);
|
||||||
if (f.open(QIODevice::ReadOnly)) {
|
if (f.open(QIODevice::ReadOnly)) {
|
||||||
const auto pluginName = QString::fromUtf8(f.readLine()).trimmed();
|
const auto pluginId = QString::fromUtf8(f.readLine()).trimmed();
|
||||||
f.close();
|
f.close();
|
||||||
return pluginName;
|
return pluginId;
|
||||||
} else {
|
} else {
|
||||||
qCDebug(pluginLog) << "Lock file" << lockFilePath << "exists but is not readable";
|
qCDebug(pluginLog) << "Lock file" << lockFilePath << "exists but is not readable";
|
||||||
}
|
}
|
||||||
@@ -1591,9 +1604,9 @@ void PluginManagerPrivate::checkForProblematicPlugins()
|
|||||||
{
|
{
|
||||||
if (!enableCrashCheck)
|
if (!enableCrashCheck)
|
||||||
return;
|
return;
|
||||||
const std::optional<QString> pluginName = LockFile::lockedPluginName(this);
|
const std::optional<QString> pluginId = LockFile::lockedPluginId(this);
|
||||||
if (pluginName) {
|
if (pluginId) {
|
||||||
PluginSpec *spec = pluginByName(*pluginName);
|
PluginSpec *spec = pluginById(*pluginId);
|
||||||
if (spec && !spec->isRequired()) {
|
if (spec && !spec->isRequired()) {
|
||||||
const QSet<PluginSpec *> dependents = PluginManager::pluginsRequiringPlugin(spec);
|
const QSet<PluginSpec *> dependents = PluginManager::pluginsRequiringPlugin(spec);
|
||||||
auto dependentsNames = Utils::transform<QStringList>(dependents, &PluginSpec::name);
|
auto dependentsNames = Utils::transform<QStringList>(dependents, &PluginSpec::name);
|
||||||
@@ -1763,16 +1776,16 @@ void PluginManagerPrivate::addPlugins(const PluginSpecs &specs)
|
|||||||
for (PluginSpec *spec : specs) {
|
for (PluginSpec *spec : specs) {
|
||||||
// defaultDisabledPlugins and defaultEnabledPlugins from install settings
|
// defaultDisabledPlugins and defaultEnabledPlugins from install settings
|
||||||
// is used to override the defaults read from the plugin spec
|
// is used to override the defaults read from the plugin spec
|
||||||
if (spec->isEnabledByDefault() && defaultDisabledPlugins.contains(spec->name())) {
|
if (spec->isEnabledByDefault() && defaultDisabledPlugins.contains(spec->id())) {
|
||||||
spec->setEnabledByDefault(false);
|
spec->setEnabledByDefault(false);
|
||||||
spec->setEnabledBySettings(false);
|
spec->setEnabledBySettings(false);
|
||||||
} else if (!spec->isEnabledByDefault() && defaultEnabledPlugins.contains(spec->name())) {
|
} else if (!spec->isEnabledByDefault() && defaultEnabledPlugins.contains(spec->id())) {
|
||||||
spec->setEnabledByDefault(true);
|
spec->setEnabledByDefault(true);
|
||||||
spec->setEnabledBySettings(true);
|
spec->setEnabledBySettings(true);
|
||||||
}
|
}
|
||||||
if (!spec->isEnabledByDefault() && forceEnabledPlugins.contains(spec->name()))
|
if (!spec->isEnabledByDefault() && forceEnabledPlugins.contains(spec->id()))
|
||||||
spec->setEnabledBySettings(true);
|
spec->setEnabledBySettings(true);
|
||||||
if (spec->isEnabledByDefault() && disabledPlugins.contains(spec->name()))
|
if (spec->isEnabledByDefault() && disabledPlugins.contains(spec->id()))
|
||||||
spec->setEnabledBySettings(false);
|
spec->setEnabledBySettings(false);
|
||||||
|
|
||||||
pluginCategories[spec->category()].append(spec);
|
pluginCategories[spec->category()].append(spec);
|
||||||
@@ -1838,10 +1851,9 @@ PluginSpec *PluginManagerPrivate::pluginForOption(const QString &option, bool *r
|
|||||||
// Look in the plugins for an option
|
// Look in the plugins for an option
|
||||||
*requiresArgument = false;
|
*requiresArgument = false;
|
||||||
for (PluginSpec *spec : std::as_const(pluginSpecs)) {
|
for (PluginSpec *spec : std::as_const(pluginSpecs)) {
|
||||||
PluginArgumentDescription match = Utils::findOrDefault(spec->argumentDescriptions(),
|
PluginArgumentDescription match = Utils::findOrDefault(
|
||||||
[option](PluginArgumentDescription pad) {
|
spec->argumentDescriptions(),
|
||||||
return pad.name == option;
|
[option](PluginArgumentDescription pad) { return pad.name == option; });
|
||||||
});
|
|
||||||
if (!match.name.isEmpty()) {
|
if (!match.name.isEmpty()) {
|
||||||
*requiresArgument = !match.parameter.isEmpty();
|
*requiresArgument = !match.parameter.isEmpty();
|
||||||
return spec;
|
return spec;
|
||||||
@@ -1850,9 +1862,10 @@ PluginSpec *PluginManagerPrivate::pluginForOption(const QString &option, bool *r
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
PluginSpec *PluginManagerPrivate::pluginByName(const QString &name) const
|
PluginSpec *PluginManagerPrivate::pluginById(const QString &id) const
|
||||||
{
|
{
|
||||||
return Utils::findOrDefault(pluginSpecs, [name](PluginSpec *spec) { return spec->name() == name; });
|
QTC_CHECK(id.isLower()); // Plugin ids are always lower case. So the id argument should be too.
|
||||||
|
return Utils::findOrDefault(pluginSpecs, [id](PluginSpec *spec) { return spec->id() == id; });
|
||||||
}
|
}
|
||||||
|
|
||||||
void PluginManagerPrivate::increaseProfilingVerbosity()
|
void PluginManagerPrivate::increaseProfilingVerbosity()
|
||||||
|
@@ -117,7 +117,7 @@ public:
|
|||||||
|
|
||||||
// Look in argument descriptions of the specs for the option.
|
// Look in argument descriptions of the specs for the option.
|
||||||
PluginSpec *pluginForOption(const QString &option, bool *requiresArgument) const;
|
PluginSpec *pluginForOption(const QString &option, bool *requiresArgument) const;
|
||||||
PluginSpec *pluginByName(const QString &name) const;
|
PluginSpec *pluginById(const QString &id) const;
|
||||||
|
|
||||||
static void addTestCreator(IPlugin *plugin, const std::function<QObject *()> &testCreator);
|
static void addTestCreator(IPlugin *plugin, const std::function<QObject *()> &testCreator);
|
||||||
|
|
||||||
|
@@ -139,7 +139,7 @@ namespace ExtensionSystem {
|
|||||||
*/
|
*/
|
||||||
size_t qHash(const PluginDependency &value)
|
size_t qHash(const PluginDependency &value)
|
||||||
{
|
{
|
||||||
return qHash(value.name);
|
return qHash(value.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -147,7 +147,7 @@ size_t qHash(const PluginDependency &value)
|
|||||||
*/
|
*/
|
||||||
bool PluginDependency::operator==(const PluginDependency &other) const
|
bool PluginDependency::operator==(const PluginDependency &other) const
|
||||||
{
|
{
|
||||||
return name == other.name && version == other.version && type == other.type;
|
return id == other.id && version == other.version && type == other.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString typeString(PluginDependency::Type type)
|
static QString typeString(PluginDependency::Type type)
|
||||||
@@ -168,7 +168,7 @@ static QString typeString(PluginDependency::Type type)
|
|||||||
*/
|
*/
|
||||||
QString PluginDependency::toString() const
|
QString PluginDependency::toString() const
|
||||||
{
|
{
|
||||||
return name + " (" + version + typeString(type) + ")";
|
return id + " (" + version + typeString(type) + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -186,9 +186,11 @@ class PluginSpecPrivate
|
|||||||
public:
|
public:
|
||||||
ExtensionSystem::PerformanceData performanceData;
|
ExtensionSystem::PerformanceData performanceData;
|
||||||
|
|
||||||
|
QString id;
|
||||||
QString name;
|
QString name;
|
||||||
QString version;
|
QString version;
|
||||||
QString compatVersion;
|
QString compatVersion;
|
||||||
|
QString vendorId;
|
||||||
QString vendor;
|
QString vendor;
|
||||||
QString category;
|
QString category;
|
||||||
QString description;
|
QString description;
|
||||||
@@ -254,6 +256,26 @@ QString PluginSpec::name() const
|
|||||||
return d->name;
|
return d->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the plugin display name. This is valid after the PluginSpec::Read
|
||||||
|
state is reached.
|
||||||
|
*/
|
||||||
|
QString PluginSpec::id() const
|
||||||
|
{
|
||||||
|
return d->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns either name(), or id() if name() is empty. If both are empty, returns "<unknown>".
|
||||||
|
*/
|
||||||
|
QString PluginSpec::displayName() const
|
||||||
|
{
|
||||||
|
return Utils::findOr(
|
||||||
|
QStringList{name(), id(), filePath().fileName()},
|
||||||
|
"<Unknown>",
|
||||||
|
std::not_fn(&QString::isEmpty));
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the plugin version. This is valid after the PluginSpec::Read state
|
Returns the plugin version. This is valid after the PluginSpec::Read state
|
||||||
is reached.
|
is reached.
|
||||||
@@ -281,6 +303,15 @@ QString PluginSpec::vendor() const
|
|||||||
return d->vendor;
|
return d->vendor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the display name of the plugins vendor. This is valid after the PluginSpec::Read
|
||||||
|
state is reached.
|
||||||
|
*/
|
||||||
|
QString PluginSpec::vendorId() const
|
||||||
|
{
|
||||||
|
return d->vendorId;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the plugin copyright. This is valid after the PluginSpec::Read
|
Returns the plugin copyright. This is valid after the PluginSpec::Read
|
||||||
state is reached.
|
state is reached.
|
||||||
@@ -576,7 +607,7 @@ QString PluginSpec::errorString() const
|
|||||||
*/
|
*/
|
||||||
bool PluginSpec::provides(PluginSpec *spec, const PluginDependency &dependency) const
|
bool PluginSpec::provides(PluginSpec *spec, const PluginDependency &dependency) const
|
||||||
{
|
{
|
||||||
if (QString::compare(dependency.name, spec->name(), Qt::CaseInsensitive) != 0)
|
if (QString::compare(dependency.id, spec->id(), Qt::CaseInsensitive) != 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return (versionCompare(spec->version(), dependency.version) >= 0)
|
return (versionCompare(spec->version(), dependency.version) >= 0)
|
||||||
@@ -674,6 +705,7 @@ PluginSpecs PluginSpec::enableDependenciesIndirectly(bool enableTestDependencies
|
|||||||
namespace {
|
namespace {
|
||||||
const char PLUGIN_METADATA[] = "MetaData";
|
const char PLUGIN_METADATA[] = "MetaData";
|
||||||
const char PLUGIN_NAME[] = "Name";
|
const char PLUGIN_NAME[] = "Name";
|
||||||
|
const char PLUGIN_ID[] = "Id";
|
||||||
const char PLUGIN_VERSION[] = "Version";
|
const char PLUGIN_VERSION[] = "Version";
|
||||||
const char PLUGIN_COMPATVERSION[] = "CompatVersion";
|
const char PLUGIN_COMPATVERSION[] = "CompatVersion";
|
||||||
const char PLUGIN_REQUIRED[] = "Required";
|
const char PLUGIN_REQUIRED[] = "Required";
|
||||||
@@ -682,6 +714,7 @@ namespace {
|
|||||||
const char PLUGIN_DEPRECATED[] = "Deprecated";
|
const char PLUGIN_DEPRECATED[] = "Deprecated";
|
||||||
const char PLUGIN_SOFTLOADABLE[] = "SoftLoadable";
|
const char PLUGIN_SOFTLOADABLE[] = "SoftLoadable";
|
||||||
const char VENDOR[] = "Vendor";
|
const char VENDOR[] = "Vendor";
|
||||||
|
const char VENDOR_ID[] = "VendorId";
|
||||||
const char COPYRIGHT[] = "Copyright";
|
const char COPYRIGHT[] = "Copyright";
|
||||||
const char LICENSE[] = "License";
|
const char LICENSE[] = "License";
|
||||||
const char DESCRIPTION[] = "Description";
|
const char DESCRIPTION[] = "Description";
|
||||||
@@ -691,7 +724,7 @@ namespace {
|
|||||||
const char CATEGORY[] = "Category";
|
const char CATEGORY[] = "Category";
|
||||||
const char PLATFORM[] = "Platform";
|
const char PLATFORM[] = "Platform";
|
||||||
const char DEPENDENCIES[] = "Dependencies";
|
const char DEPENDENCIES[] = "Dependencies";
|
||||||
const char DEPENDENCY_NAME[] = "Name";
|
const char DEPENDENCY_ID[] = "Id";
|
||||||
const char DEPENDENCY_VERSION[] = "Version";
|
const char DEPENDENCY_VERSION[] = "Version";
|
||||||
const char DEPENDENCY_TYPE[] = "Type";
|
const char DEPENDENCY_TYPE[] = "Type";
|
||||||
const char DEPENDENCY_TYPE_SOFT[] = "optional";
|
const char DEPENDENCY_TYPE_SOFT[] = "optional";
|
||||||
@@ -807,108 +840,145 @@ expected_str<void> CppPluginSpec::readMetaData(const QJsonObject &pluginMetaData
|
|||||||
return PluginSpec::readMetaData(value.toObject());
|
return PluginSpec::readMetaData(value.toObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
struct Invert
|
||||||
|
{
|
||||||
|
T &value;
|
||||||
|
Invert(T &value)
|
||||||
|
: value(value)
|
||||||
|
{}
|
||||||
|
Invert &operator=(const T &other)
|
||||||
|
{
|
||||||
|
value = !other;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
using copy_assign_t = decltype(std::declval<T &>() = std::declval<const T &>());
|
||||||
|
|
||||||
Utils::expected_str<void> PluginSpecPrivate::readMetaData(const QJsonObject &data)
|
Utils::expected_str<void> PluginSpecPrivate::readMetaData(const QJsonObject &data)
|
||||||
{
|
{
|
||||||
metaData = data;
|
metaData = data;
|
||||||
|
|
||||||
QJsonValue value = metaData.value(QLatin1String(PLUGIN_NAME));
|
auto assign = [&data](QString &member, const char *fieldName) -> expected_str<void> {
|
||||||
if (value.isUndefined())
|
QJsonValue value = data.value(QLatin1String(fieldName));
|
||||||
return reportError(msgValueMissing(PLUGIN_NAME));
|
if (value.isUndefined())
|
||||||
if (!value.isString())
|
return make_unexpected(msgValueMissing(fieldName));
|
||||||
return reportError(msgValueIsNotAString(PLUGIN_NAME));
|
if (!value.isString())
|
||||||
name = value.toString();
|
return make_unexpected(msgValueIsNotAString(fieldName));
|
||||||
|
member = value.toString();
|
||||||
|
return {};
|
||||||
|
};
|
||||||
|
|
||||||
|
auto assignOr =
|
||||||
|
[&data](auto &&member, const char *fieldName, auto &&defaultValue) -> expected_str<void> {
|
||||||
|
QJsonValue value = data.value(QLatin1String(fieldName));
|
||||||
|
if (value.isUndefined())
|
||||||
|
member = defaultValue;
|
||||||
|
else {
|
||||||
|
constexpr bool isBool = std::is_assignable<decltype(member), bool>::value;
|
||||||
|
constexpr bool isString = std::is_assignable<decltype(member), QString>::value;
|
||||||
|
|
||||||
|
static_assert(isString || isBool, "Unsupported type");
|
||||||
|
|
||||||
|
if constexpr (isString) {
|
||||||
|
if (!value.isString())
|
||||||
|
return make_unexpected(msgValueIsNotAString(fieldName));
|
||||||
|
member = value.toString();
|
||||||
|
} else if constexpr (isBool) {
|
||||||
|
if (!value.isBool())
|
||||||
|
return make_unexpected(msgValueIsNotABool(fieldName));
|
||||||
|
member = value.toBool();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
};
|
||||||
|
|
||||||
|
auto assignMultiLine = [&data](QString &member, const char *fieldName) -> expected_str<void> {
|
||||||
|
QJsonValue value = data.value(QLatin1String(fieldName));
|
||||||
|
if (value.isUndefined())
|
||||||
|
return {};
|
||||||
|
if (!readMultiLineString(value, &member))
|
||||||
|
return make_unexpected(msgValueIsNotAMultilineString(fieldName));
|
||||||
|
return {};
|
||||||
|
};
|
||||||
|
|
||||||
|
if (auto r = assign(id, PLUGIN_ID); !r.has_value())
|
||||||
|
return reportError(r.error());
|
||||||
|
|
||||||
|
if (!id.isLower())
|
||||||
|
return reportError(::ExtensionSystem::Tr::tr("Plugin id \"%1\" must be lowercase").arg(id));
|
||||||
|
|
||||||
|
if (auto r = assignOr(name, PLUGIN_NAME, id); !r.has_value())
|
||||||
|
return reportError(r.error());
|
||||||
|
|
||||||
|
if (auto r = assign(version, PLUGIN_VERSION); !r.has_value())
|
||||||
|
return reportError(r.error());
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(PLUGIN_VERSION));
|
|
||||||
if (value.isUndefined())
|
|
||||||
return reportError(msgValueMissing(PLUGIN_VERSION));
|
|
||||||
if (!value.isString())
|
|
||||||
return reportError(msgValueIsNotAString(PLUGIN_VERSION));
|
|
||||||
version = value.toString();
|
|
||||||
if (!PluginSpec::isValidVersion(version))
|
if (!PluginSpec::isValidVersion(version))
|
||||||
return reportError(msgInvalidFormat(PLUGIN_VERSION, version));
|
return reportError(msgInvalidFormat(PLUGIN_VERSION, version));
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(PLUGIN_COMPATVERSION));
|
if (auto r = assignOr(compatVersion, PLUGIN_COMPATVERSION, version); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isString())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotAString(PLUGIN_COMPATVERSION));
|
if (!PluginSpec::isValidVersion(compatVersion))
|
||||||
compatVersion = value.toString(version);
|
|
||||||
if (!value.isUndefined() && !PluginSpec::isValidVersion(compatVersion))
|
|
||||||
return reportError(msgInvalidFormat(PLUGIN_COMPATVERSION, compatVersion));
|
return reportError(msgInvalidFormat(PLUGIN_COMPATVERSION, compatVersion));
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(PLUGIN_REQUIRED));
|
if (auto r = assignOr(required, PLUGIN_REQUIRED, false); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isBool())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotABool(PLUGIN_REQUIRED));
|
|
||||||
required = value.toBool(false);
|
|
||||||
qCDebug(pluginLog) << "required =" << required;
|
qCDebug(pluginLog) << "required =" << required;
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(PLUGIN_EXPERIMENTAL));
|
if (auto r = assignOr(experimental, PLUGIN_EXPERIMENTAL, false); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isBool())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotABool(PLUGIN_EXPERIMENTAL));
|
|
||||||
experimental = value.toBool(false);
|
|
||||||
qCDebug(pluginLog) << "experimental =" << experimental;
|
qCDebug(pluginLog) << "experimental =" << experimental;
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(PLUGIN_DEPRECATED));
|
if (auto r = assignOr(deprecated, PLUGIN_DEPRECATED, false); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isBool())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotABool(PLUGIN_DEPRECATED));
|
|
||||||
deprecated = value.toBool(false);
|
|
||||||
qCDebug(pluginLog) << "deprecated =" << deprecated;
|
qCDebug(pluginLog) << "deprecated =" << deprecated;
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(PLUGIN_DISABLED_BY_DEFAULT));
|
if (auto r
|
||||||
if (!value.isUndefined() && !value.isBool())
|
= assignOr(Invert(enabledByDefault), PLUGIN_DISABLED_BY_DEFAULT, experimental || deprecated);
|
||||||
return reportError(msgValueIsNotABool(PLUGIN_DISABLED_BY_DEFAULT));
|
!r.has_value())
|
||||||
enabledByDefault = !value.toBool(experimental || deprecated);
|
return reportError(r.error());
|
||||||
qCDebug(pluginLog) << "enabledByDefault =" << enabledByDefault;
|
|
||||||
|
|
||||||
|
qCDebug(pluginLog) << "enabledByDefault =" << enabledByDefault;
|
||||||
enabledBySettings = enabledByDefault;
|
enabledBySettings = enabledByDefault;
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(PLUGIN_SOFTLOADABLE));
|
if (auto r = assignOr(softLoadable, PLUGIN_SOFTLOADABLE, false); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isBool())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotABool(PLUGIN_SOFTLOADABLE));
|
|
||||||
softLoadable = value.toBool(false);
|
|
||||||
qCDebug(pluginLog) << "softLoadable =" << softLoadable;
|
qCDebug(pluginLog) << "softLoadable =" << softLoadable;
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(VENDOR));
|
if (auto r = assign(vendorId, VENDOR_ID); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isString())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotAString(VENDOR));
|
|
||||||
vendor = value.toString();
|
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(COPYRIGHT));
|
if (auto r = assignOr(vendor, VENDOR, vendorId); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isString())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotAString(COPYRIGHT));
|
|
||||||
copyright = value.toString();
|
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(DESCRIPTION));
|
if (auto r = assignOr(copyright, COPYRIGHT, QString{}); !r.has_value())
|
||||||
if (!value.isUndefined() && !readMultiLineString(value, &description))
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotAString(DESCRIPTION));
|
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(LONGDESCRIPTION));
|
if (auto r = assignMultiLine(description, DESCRIPTION); !r.has_value())
|
||||||
if (!value.isUndefined() && !readMultiLineString(value, &longDescription))
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotAString(LONGDESCRIPTION));
|
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(URL));
|
if (auto r = assignMultiLine(longDescription, LONGDESCRIPTION); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isString())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotAString(URL));
|
|
||||||
url = value.toString();
|
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(DOCUMENTATIONURL));
|
if (auto r = assignOr(url, URL, QString{}); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isString())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotAString(DOCUMENTATIONURL));
|
|
||||||
documentationUrl = value.toString();
|
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(CATEGORY));
|
if (auto r = assignOr(documentationUrl, DOCUMENTATIONURL, QString{}); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isString())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotAString(CATEGORY));
|
|
||||||
category = value.toString();
|
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(LICENSE));
|
if (auto r = assignOr(category, CATEGORY, QString{}); !r.has_value())
|
||||||
if (!value.isUndefined() && !readMultiLineString(value, &license))
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotAMultilineString(LICENSE));
|
|
||||||
|
|
||||||
value = metaData.value("Revision");
|
if (auto r = assignMultiLine(license, LICENSE); !r.has_value())
|
||||||
if (!value.isUndefined() && !value.isString())
|
return reportError(r.error());
|
||||||
return reportError(msgValueIsNotAString("Revision"));
|
|
||||||
revision = value.toString();
|
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(PLATFORM));
|
if (auto r = assignOr(revision, "Revision", QString{}); !r.has_value())
|
||||||
|
return reportError(r.error());
|
||||||
|
|
||||||
|
QJsonValue value = metaData.value(QLatin1String(PLATFORM));
|
||||||
if (!value.isUndefined() && !value.isString())
|
if (!value.isUndefined() && !value.isString())
|
||||||
return reportError(msgValueIsNotAString(PLATFORM));
|
return reportError(msgValueIsNotAString(PLATFORM));
|
||||||
const QString platformSpec = value.toString().trimmed();
|
const QString platformSpec = value.toString().trimmed();
|
||||||
@@ -930,18 +1000,16 @@ Utils::expected_str<void> PluginSpecPrivate::readMetaData(const QJsonObject &dat
|
|||||||
return reportError(msgValueIsNotAObjectArray(DEPENDENCIES));
|
return reportError(msgValueIsNotAObjectArray(DEPENDENCIES));
|
||||||
QJsonObject dependencyObject = v.toObject();
|
QJsonObject dependencyObject = v.toObject();
|
||||||
PluginDependency dep;
|
PluginDependency dep;
|
||||||
value = dependencyObject.value(QLatin1String(DEPENDENCY_NAME));
|
value = dependencyObject.value(QLatin1String(DEPENDENCY_ID));
|
||||||
if (value.isUndefined()) {
|
if (value.isUndefined()) {
|
||||||
return reportError(
|
return reportError(
|
||||||
::ExtensionSystem::Tr::tr("Dependency: %1")
|
::ExtensionSystem::Tr::tr("Dependency: %1").arg(msgValueMissing(DEPENDENCY_ID)));
|
||||||
.arg(msgValueMissing(DEPENDENCY_NAME)));
|
|
||||||
}
|
}
|
||||||
if (!value.isString()) {
|
if (!value.isString()) {
|
||||||
return reportError(
|
return reportError(::ExtensionSystem::Tr::tr("Dependency: %1")
|
||||||
::ExtensionSystem::Tr::tr("Dependency: %1")
|
.arg(msgValueIsNotAString(DEPENDENCY_ID)));
|
||||||
.arg(msgValueIsNotAString(DEPENDENCY_NAME)));
|
|
||||||
}
|
}
|
||||||
dep.name = value.toString();
|
dep.id = value.toString();
|
||||||
value = dependencyObject.value(QLatin1String(DEPENDENCY_VERSION));
|
value = dependencyObject.value(QLatin1String(DEPENDENCY_VERSION));
|
||||||
if (!value.isUndefined() && !value.isString()) {
|
if (!value.isUndefined() && !value.isString()) {
|
||||||
return reportError(
|
return reportError(
|
||||||
@@ -1098,7 +1166,7 @@ bool PluginSpec::resolveDependencies(const PluginSpecs &specs)
|
|||||||
if (dependency.type == PluginDependency::Required) {
|
if (dependency.type == PluginDependency::Required) {
|
||||||
const QString error = ::ExtensionSystem::Tr::tr(
|
const QString error = ::ExtensionSystem::Tr::tr(
|
||||||
"Could not resolve dependency '%1(%2)'")
|
"Could not resolve dependency '%1(%2)'")
|
||||||
.arg(dependency.name, dependency.version);
|
.arg(dependency.id, dependency.version);
|
||||||
if (hasError())
|
if (hasError())
|
||||||
setError(errorString() + '\n' + error);
|
setError(errorString() + '\n' + error);
|
||||||
else
|
else
|
||||||
|
@@ -39,13 +39,13 @@ struct EXTENSIONSYSTEM_EXPORT PluginDependency
|
|||||||
enum Type { Required, Optional, Test };
|
enum Type { Required, Optional, Test };
|
||||||
|
|
||||||
PluginDependency() : type(Required) {}
|
PluginDependency() : type(Required) {}
|
||||||
PluginDependency(const QString &name, const QString &version, Type type = Required)
|
PluginDependency(const QString &id, const QString &version, Type type = Required)
|
||||||
: name(name)
|
: id(id)
|
||||||
, version(version)
|
, version(version)
|
||||||
, type(type)
|
, type(type)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
QString name;
|
QString id;
|
||||||
QString version;
|
QString version;
|
||||||
Type type;
|
Type type;
|
||||||
bool operator==(const PluginDependency &other) const;
|
bool operator==(const PluginDependency &other) const;
|
||||||
@@ -96,9 +96,11 @@ public:
|
|||||||
|
|
||||||
// information read from the plugin, valid after 'Read' state is reached
|
// information read from the plugin, valid after 'Read' state is reached
|
||||||
virtual QString name() const;
|
virtual QString name() const;
|
||||||
|
virtual QString id() const;
|
||||||
virtual QString version() const;
|
virtual QString version() const;
|
||||||
virtual QString compatVersion() const;
|
virtual QString compatVersion() const;
|
||||||
virtual QString vendor() const;
|
virtual QString vendor() const;
|
||||||
|
virtual QString vendorId() const;
|
||||||
virtual QString copyright() const;
|
virtual QString copyright() const;
|
||||||
virtual QString license() const;
|
virtual QString license() const;
|
||||||
virtual QString description() const;
|
virtual QString description() const;
|
||||||
@@ -109,6 +111,8 @@ public:
|
|||||||
virtual QString revision() const;
|
virtual QString revision() const;
|
||||||
virtual QRegularExpression platformSpecification() const;
|
virtual QRegularExpression platformSpecification() const;
|
||||||
|
|
||||||
|
virtual QString displayName() const;
|
||||||
|
|
||||||
virtual bool isAvailableForHostPlatform() const;
|
virtual bool isAvailableForHostPlatform() const;
|
||||||
virtual bool isRequired() const;
|
virtual bool isRequired() const;
|
||||||
virtual bool isExperimental() const;
|
virtual bool isExperimental() const;
|
||||||
|
@@ -96,24 +96,29 @@ public:
|
|||||||
QVariant data(int column, int role) const override
|
QVariant data(int column, int role) const override
|
||||||
{
|
{
|
||||||
switch (column) {
|
switch (column) {
|
||||||
case NameColumn:
|
case NameColumn: {
|
||||||
|
const QString displayName = m_spec->displayName();
|
||||||
if (role == Qt::DisplayRole) {
|
if (role == Qt::DisplayRole) {
|
||||||
if (m_spec->isDeprecated()) {
|
QStringList decoration;
|
||||||
//: %1 is a plugin name
|
if (m_spec->isDeprecated())
|
||||||
return Tr::tr("%1 (deprecated)").arg(m_spec->name());
|
decoration.append(Tr::tr("deprecated"));
|
||||||
}
|
if (m_spec->isExperimental())
|
||||||
//: %1 is a plugin name
|
decoration.append(Tr::tr("experimental"));
|
||||||
return m_spec->isExperimental() ? Tr::tr("%1 (experimental)").arg(m_spec->name())
|
|
||||||
: m_spec->name();
|
if (decoration.isEmpty())
|
||||||
|
return displayName;
|
||||||
|
return QString::fromLatin1("%1 (%2)")
|
||||||
|
.arg(displayName, decoration.join(QLatin1Char(',')));
|
||||||
}
|
}
|
||||||
if (role == SortRole)
|
if (role == SortRole)
|
||||||
return m_spec->name();
|
return displayName;
|
||||||
if (role == Qt::ToolTipRole) {
|
if (role == Qt::ToolTipRole) {
|
||||||
QString toolTip;
|
QString toolTip;
|
||||||
if (!m_spec->isAvailableForHostPlatform())
|
if (!m_spec->isAvailableForHostPlatform())
|
||||||
toolTip = Tr::tr("Path: %1\nPlugin is not available on this platform.");
|
toolTip = Tr::tr("Path: %1\nPlugin is not available on this platform.");
|
||||||
else if (m_spec->isEnabledIndirectly())
|
else if (m_spec->isEnabledIndirectly())
|
||||||
toolTip = Tr::tr("Path: %1\nPlugin is enabled as dependency of an enabled plugin.");
|
toolTip = Tr::tr(
|
||||||
|
"Path: %1\nPlugin is enabled as dependency of an enabled plugin.");
|
||||||
else if (m_spec->isForceEnabled())
|
else if (m_spec->isForceEnabled())
|
||||||
toolTip = Tr::tr("Path: %1\nPlugin is enabled by command line argument.");
|
toolTip = Tr::tr("Path: %1\nPlugin is enabled by command line argument.");
|
||||||
else if (m_spec->isForceDisabled())
|
else if (m_spec->isForceDisabled())
|
||||||
@@ -130,6 +135,7 @@ public:
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case LoadedColumn:
|
case LoadedColumn:
|
||||||
if (!m_spec->isAvailableForHostPlatform()) {
|
if (!m_spec->isAvailableForHostPlatform()) {
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "android",
|
||||||
"Name" : "Android",
|
"Name" : "Android",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "kdenecessitas",
|
||||||
"Vendor" : "KDE Necessitas",
|
"Vendor" : "KDE Necessitas",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "appstatisticsmonitor",
|
||||||
"Name" : "AppStatisticsMonitor",
|
"Name" : "AppStatisticsMonitor",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
"DisabledByDefault" : ${APPSTATISTICSMONITOR_DISABLEDBYDEFAULT},
|
"DisabledByDefault" : ${APPSTATISTICSMONITOR_DISABLEDBYDEFAULT},
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,23 +1,25 @@
|
|||||||
{
|
{
|
||||||
"Name" : "AutoTest",
|
"Id" : "autotest",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Name" : "AutoTest",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"VendorId" : "theqtcompany",
|
||||||
"License" : [ "Commercial Usage",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"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 The Qt Company.",
|
"License" : [ "Commercial Usage",
|
||||||
"",
|
"",
|
||||||
"GNU General Public License 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 The Qt Company.",
|
||||||
"",
|
"",
|
||||||
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"GNU General Public License Usage",
|
||||||
],
|
"",
|
||||||
"Description" : "Create code based tests and build system based tests.",
|
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
"LongDescription" : [
|
],
|
||||||
"Code based testing offers special handling for particular testing frameworks that strongly ties to the underlying code models or specialized parsers.",
|
"Description" : "Create code based tests and build system based tests.",
|
||||||
"Build system based testing is independent from any testing frameworks. It retrieves information directly from the underlying build system and uses it or even the build system as such to execute the respective tests."
|
"LongDescription" : [
|
||||||
],
|
"Code based testing offers special handling for particular testing frameworks that strongly ties to the underlying code models or specialized parsers.",
|
||||||
"Url" : "https://www.qt.io",
|
"Build system based testing is independent from any testing frameworks. It retrieves information directly from the underlying build system and uses it or even the build system as such to execute the respective tests."
|
||||||
"DocumentationUrl" : "https://doc.qt.io/qtcreator/creator-how-tos.html#test",
|
],
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
"Url" : "https://www.qt.io",
|
||||||
|
"DocumentationUrl" : "https://doc.qt.io/qtcreator/creator-how-tos.html#test",
|
||||||
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
}
|
}
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "autotoolsprojectmanager",
|
||||||
"Name" : "AutotoolsProjectManager",
|
"Name" : "AutotoolsProjectManager",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
|
"VendorId" : "openismusgmbh",
|
||||||
"Vendor" : "Openismus GmbH",
|
"Vendor" : "Openismus GmbH",
|
||||||
"Copyright" : "(C) 2016 Openismus GmbH, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2016 Openismus GmbH, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "axivion",
|
||||||
"Name" : "Axivion",
|
"Name" : "Axivion",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Revision" : "${QTC_PLUGIN_REVISION}",
|
"Revision" : "${QTC_PLUGIN_REVISION}",
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "baremetal",
|
||||||
"Name" : "BareMetal",
|
"Name" : "BareMetal",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
|
"VendorId" : "timsander",
|
||||||
"Vendor" : "Tim Sander",
|
"Vendor" : "Tim Sander",
|
||||||
"Copyright" : "(C) 2016 Tim Sander, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2016 Tim Sander, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "bazaar",
|
||||||
"Name" : "Bazaar",
|
"Name" : "Bazaar",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "huguesdelorme",
|
||||||
"Vendor" : "Hugues Delorme",
|
"Vendor" : "Hugues Delorme",
|
||||||
"Copyright" : "(C) 2016 Hugues Delorme, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2016 Hugues Delorme, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "beautifier",
|
||||||
"Name" : "Beautifier",
|
"Name" : "Beautifier",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
|
"VendorId" : "lorenzhaas",
|
||||||
"Vendor" : "Lorenz Haas",
|
"Vendor" : "Lorenz Haas",
|
||||||
"Copyright" : "(C) 2017 Lorenz Haas, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2017 Lorenz Haas, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "bineditor",
|
||||||
"Name" : "BinEditor",
|
"Name" : "BinEditor",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "boot2qt",
|
||||||
"Name" : "Boot2Qt",
|
"Name" : "Boot2Qt",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "clangcodemodel",
|
||||||
"Name" : "ClangCodeModel",
|
"Name" : "ClangCodeModel",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "clangformat",
|
||||||
"Name" : "ClangFormat",
|
"Name" : "ClangFormat",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "clangtools",
|
||||||
"Name" : "ClangTools",
|
"Name" : "ClangTools",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "classview",
|
||||||
"Name" : "ClassView",
|
"Name" : "ClassView",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) 2016 Denis Mingulov, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2016 Denis Mingulov, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "clearcase",
|
||||||
"Name" : "ClearCase",
|
"Name" : "ClearCase",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
"Platform" : "^(Linux|Windows)",
|
"Platform" : "^(Linux|Windows)",
|
||||||
|
"VendorId" : "audiocodes",
|
||||||
"Vendor" : "AudioCodes",
|
"Vendor" : "AudioCodes",
|
||||||
"Copyright" : "(C) 2016 AudioCodes Ltd., (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2016 AudioCodes Ltd., (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "cmakeprojectmanager",
|
||||||
"Name" : "CMakeProjectManager",
|
"Name" : "CMakeProjectManager",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "coco",
|
||||||
"Name" : "Coco",
|
"Name" : "Coco",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "compilationdatabaseprojectmanager",
|
||||||
"Name" : "CompilationDatabaseProjectManager",
|
"Name" : "CompilationDatabaseProjectManager",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "compilerexplorer",
|
||||||
"Name" : "CompilerExplorer",
|
"Name" : "CompilerExplorer",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
"SoftLoadable" : true,
|
"SoftLoadable" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "conan",
|
||||||
"Name" : "Conan",
|
"Name" : "Conan",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "jochenseemann",
|
||||||
"Vendor" : "Jochen Seemann",
|
"Vendor" : "Jochen Seemann",
|
||||||
"Copyright" : "(C) 2018 Jochen Seemann, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2018 Jochen Seemann, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "copilot",
|
||||||
"Name" : "Copilot",
|
"Name" : "Copilot",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "core",
|
||||||
"Name" : "Core",
|
"Name" : "Core",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Required" : true,
|
"Required" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -92,6 +92,7 @@ signals:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
LogCategoryRegistry() = default;
|
LogCategoryRegistry() = default;
|
||||||
|
~LogCategoryRegistry() { QLoggingCategory::installFilter(s_oldFilter); }
|
||||||
|
|
||||||
void onFilter(QLoggingCategory *category)
|
void onFilter(QLoggingCategory *category)
|
||||||
{
|
{
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "codepaster",
|
||||||
"Name" : "CodePaster",
|
"Name" : "CodePaster",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "cppcheck",
|
||||||
"Name" : "Cppcheck",
|
"Name" : "Cppcheck",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
|
"VendorId" : "sergeymorozov",
|
||||||
"Vendor" : "Sergey Morozov",
|
"Vendor" : "Sergey Morozov",
|
||||||
"Copyright" : "(C) 2018 Sergey Morozov, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2018 Sergey Morozov, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "cppeditor",
|
||||||
"Name" : "CppEditor",
|
"Name" : "CppEditor",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "ctfvisualizer",
|
||||||
"Name" : "CtfVisualizer",
|
"Name" : "CtfVisualizer",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Vendor" : "KDAB Group, www.kdab.com",
|
"Vendor" : "KDAB Group, www.kdab.com",
|
||||||
|
"VendorId" : "kdab",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
"",
|
"",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "cvs",
|
||||||
"Name" : "CVS",
|
"Name" : "CVS",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "debugger",
|
||||||
"Name" : "Debugger",
|
"Name" : "Debugger",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "designer",
|
||||||
"Name" : "Designer",
|
"Name" : "Designer",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "diffeditor",
|
||||||
"Name" : "DiffEditor",
|
"Name" : "DiffEditor",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "docker",
|
||||||
"Name" : "Docker",
|
"Name" : "Docker",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "effectcomposer",
|
||||||
"Name" : "EffectComposer",
|
"Name" : "EffectComposer",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
@@ -13,4 +15,3 @@
|
|||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "emacskeys",
|
||||||
"Name" : "EmacsKeys",
|
"Name" : "EmacsKeys",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
"SoftLoadable" : true,
|
"SoftLoadable" : true,
|
||||||
|
"VendorId" : "nsf",
|
||||||
"Vendor" : "nsf",
|
"Vendor" : "nsf",
|
||||||
"Copyright" : "(C) 2016 nsf <no.smile.face@gmail.com>, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2016 nsf <no.smile.face@gmail.com>, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "extensionmanager",
|
||||||
"Name" : "ExtensionManager",
|
"Name" : "ExtensionManager",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -226,7 +226,7 @@ public:
|
|||||||
|
|
||||||
const ItemType itemType = current.data(RoleItemType).value<ItemType>();
|
const ItemType itemType = current.data(RoleItemType).value<ItemType>();
|
||||||
const bool isPack = itemType == ItemTypePack;
|
const bool isPack = itemType == ItemTypePack;
|
||||||
const bool isRemotePlugin = !(isPack || pluginSpecForName(name));
|
const bool isRemotePlugin = !(isPack || pluginSpecForId(current.data(RoleId).toString()));
|
||||||
installButton->setVisible(isRemotePlugin && !pluginData.empty());
|
installButton->setVisible(isRemotePlugin && !pluginData.empty());
|
||||||
if (installButton->isVisible())
|
if (installButton->isVisible())
|
||||||
installButton->setToolTip(pluginData.constFirst().second);
|
installButton->setToolTip(pluginData.constFirst().second);
|
||||||
@@ -270,7 +270,7 @@ public:
|
|||||||
}.attachTo(this);
|
}.attachTo(this);
|
||||||
|
|
||||||
connect(m_switch, &QCheckBox::clicked, this, [this](bool checked) {
|
connect(m_switch, &QCheckBox::clicked, this, [this](bool checked) {
|
||||||
ExtensionSystem::PluginSpec *spec = pluginSpecForName(m_pluginName);
|
ExtensionSystem::PluginSpec *spec = pluginSpecForId(m_pluginId);
|
||||||
if (spec == nullptr)
|
if (spec == nullptr)
|
||||||
return;
|
return;
|
||||||
const bool doIt = m_pluginView.data().setPluginsEnabled({spec}, checked);
|
const bool doIt = m_pluginView.data().setPluginsEnabled({spec}, checked);
|
||||||
@@ -290,16 +290,16 @@ public:
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setPluginName(const QString &name)
|
void setPluginId(const QString &id)
|
||||||
{
|
{
|
||||||
m_pluginName = name;
|
m_pluginId = id;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void update()
|
void update()
|
||||||
{
|
{
|
||||||
const ExtensionSystem::PluginSpec *spec = pluginSpecForName(m_pluginName);
|
const ExtensionSystem::PluginSpec *spec = pluginSpecForId(m_pluginId);
|
||||||
setVisible(spec != nullptr);
|
setVisible(spec != nullptr);
|
||||||
if (spec == nullptr)
|
if (spec == nullptr)
|
||||||
return;
|
return;
|
||||||
@@ -322,7 +322,7 @@ private:
|
|||||||
InfoLabel *m_label;
|
InfoLabel *m_label;
|
||||||
Switch *m_switch;
|
Switch *m_switch;
|
||||||
QAbstractButton *m_restartButton;
|
QAbstractButton *m_restartButton;
|
||||||
QString m_pluginName;
|
QString m_pluginId;
|
||||||
ExtensionSystem::PluginView m_pluginView{this};
|
ExtensionSystem::PluginView m_pluginView{this};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -583,9 +583,9 @@ void ExtensionManagerWidget::updateView(const QModelIndex ¤t)
|
|||||||
if (!showContent)
|
if (!showContent)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_currentItemName = current.data().toString();
|
m_currentItemName = current.data(RoleName).toString();
|
||||||
const bool isPack = current.data(RoleItemType) == ItemTypePack;
|
const bool isPack = current.data(RoleItemType) == ItemTypePack;
|
||||||
m_pluginStatus->setPluginName(isPack ? QString() : m_currentItemName);
|
m_pluginStatus->setPluginId(isPack ? QString() : current.data(RoleId).toString());
|
||||||
m_currentItemPlugins = current.data(RolePlugins).value<PluginsData>();
|
m_currentItemPlugins = current.data(RolePlugins).value<PluginsData>();
|
||||||
|
|
||||||
auto toContentParagraph = [](const QString &text) {
|
auto toContentParagraph = [](const QString &text) {
|
||||||
|
@@ -220,7 +220,7 @@ public:
|
|||||||
x += iconBgSizeSmall.width() + ExPaddingGapL;
|
x += iconBgSizeSmall.width() + ExPaddingGapL;
|
||||||
y += ExPaddingGapL;
|
y += ExPaddingGapL;
|
||||||
const QRect itemNameR(x, y, middleColumnW, itemNameTF.lineHeight());
|
const QRect itemNameR(x, y, middleColumnW, itemNameTF.lineHeight());
|
||||||
const QString itemName = index.data().toString();
|
const QString itemName = index.data(RoleName).toString();
|
||||||
|
|
||||||
const QSize checkmarkS(12, 12);
|
const QSize checkmarkS(12, 12);
|
||||||
const QRect checkmarkR(x + middleColumnW - checkmarkS.width(), y,
|
const QRect checkmarkR(x + middleColumnW - checkmarkS.width(), y,
|
||||||
@@ -714,7 +714,7 @@ QPixmap itemIcon(const QModelIndex &index, Size size)
|
|||||||
pixmap.setDevicePixelRatio(dpr);
|
pixmap.setDevicePixelRatio(dpr);
|
||||||
const QRect iconBgR(QPoint(), pixmap.deviceIndependentSize().toSize());
|
const QRect iconBgR(QPoint(), pixmap.deviceIndependentSize().toSize());
|
||||||
|
|
||||||
const PluginSpec *ps = pluginSpecForName(index.data(RoleName).toString());
|
const PluginSpec *ps = pluginSpecForId(index.data(RoleId).toString());
|
||||||
const bool isEnabled = ps == nullptr || ps->isEffectivelyEnabled();
|
const bool isEnabled = ps == nullptr || ps->isEffectivelyEnabled();
|
||||||
const QGradientStops gradientStops = {
|
const QGradientStops gradientStops = {
|
||||||
{0, creatorColor(isEnabled ? Theme::Token_Gradient01_Start
|
{0, creatorColor(isEnabled ? Theme::Token_Gradient01_Start
|
||||||
|
@@ -21,6 +21,8 @@
|
|||||||
#include <QStandardItemModel>
|
#include <QStandardItemModel>
|
||||||
#include <QVersionNumber>
|
#include <QVersionNumber>
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
using namespace ExtensionSystem;
|
using namespace ExtensionSystem;
|
||||||
using namespace Core;
|
using namespace Core;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
@@ -31,7 +33,7 @@ Q_LOGGING_CATEGORY(modelLog, "qtc.extensionmanager.model", QtWarningMsg)
|
|||||||
|
|
||||||
struct Dependency
|
struct Dependency
|
||||||
{
|
{
|
||||||
QString name;
|
QString id;
|
||||||
QString version;
|
QString version;
|
||||||
};
|
};
|
||||||
using Dependencies = QList<Dependency>;
|
using Dependencies = QList<Dependency>;
|
||||||
@@ -41,6 +43,7 @@ struct Plugin
|
|||||||
QString copyright;
|
QString copyright;
|
||||||
Dependencies dependencies;
|
Dependencies dependencies;
|
||||||
bool isInternal = false;
|
bool isInternal = false;
|
||||||
|
QString id;
|
||||||
QString name;
|
QString name;
|
||||||
QString packageUrl;
|
QString packageUrl;
|
||||||
QString vendor;
|
QString vendor;
|
||||||
@@ -68,6 +71,7 @@ struct Extension {
|
|||||||
QStringList tags;
|
QStringList tags;
|
||||||
ItemType type = ItemTypePack;
|
ItemType type = ItemTypePack;
|
||||||
QString vendor;
|
QString vendor;
|
||||||
|
QString vendorId;
|
||||||
QString version;
|
QString version;
|
||||||
};
|
};
|
||||||
using Extensions = QList<Extension>;
|
using Extensions = QList<Extension>;
|
||||||
@@ -80,7 +84,7 @@ static const Dependencies dependenciesFromJson(const QJsonObject &obj)
|
|||||||
const QJsonObject dependencyObj = dependencyVal.toObject();
|
const QJsonObject dependencyObj = dependencyVal.toObject();
|
||||||
const QJsonObject metaDataObj = dependencyObj.value("meta_data").toObject();
|
const QJsonObject metaDataObj = dependencyObj.value("meta_data").toObject();
|
||||||
dependencies.append({
|
dependencies.append({
|
||||||
.name = metaDataObj.value("Name").toString(),
|
.id = metaDataObj.value("Id").toString(),
|
||||||
.version = metaDataObj.value("Version").toString(),
|
.version = metaDataObj.value("Version").toString(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -96,6 +100,7 @@ static Plugin pluginFromJson(const QJsonObject &obj)
|
|||||||
.copyright = metaDataObj.value("Copyright").toString(),
|
.copyright = metaDataObj.value("Copyright").toString(),
|
||||||
.dependencies = dependenciesFromJson(metaDataObj),
|
.dependencies = dependenciesFromJson(metaDataObj),
|
||||||
.isInternal = obj.value("is_internal").toBool(false),
|
.isInternal = obj.value("is_internal").toBool(false),
|
||||||
|
.id = metaDataObj.value("Id").toString(),
|
||||||
.name = metaDataObj.value("Name").toString(),
|
.name = metaDataObj.value("Name").toString(),
|
||||||
.packageUrl = obj.value("url").toString(),
|
.packageUrl = obj.value("url").toString(),
|
||||||
.vendor = metaDataObj.value("Vendor").toString(),
|
.vendor = metaDataObj.value("Vendor").toString(),
|
||||||
@@ -182,6 +187,7 @@ static Extension extensionFromJson(const QJsonObject &obj)
|
|||||||
.tags = tags,
|
.tags = tags,
|
||||||
.type = obj.value("is_pack").toBool(true) ? ItemTypePack : ItemTypeExtension,
|
.type = obj.value("is_pack").toBool(true) ? ItemTypePack : ItemTypeExtension,
|
||||||
.vendor = obj.value("vendor").toString(),
|
.vendor = obj.value("vendor").toString(),
|
||||||
|
.vendorId = obj.value("vendor_id").toString(),
|
||||||
.version = obj.value("version").toString(),
|
.version = obj.value("version").toString(),
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -204,16 +210,17 @@ static Extensions parseExtensionsRepoReply(const QByteArray &jsonData)
|
|||||||
|
|
||||||
static Extension extensionFromPluginSpec(const PluginSpec *pluginSpec)
|
static Extension extensionFromPluginSpec(const PluginSpec *pluginSpec)
|
||||||
{
|
{
|
||||||
const Dependencies dependencies = transform(pluginSpec->dependencies(),
|
const Dependencies dependencies
|
||||||
[](const PluginDependency &pd) -> Dependency {
|
= transform(pluginSpec->dependencies(), [](const PluginDependency &pd) -> Dependency {
|
||||||
return {
|
return {
|
||||||
.name = pd.name,
|
.id = pd.id,
|
||||||
.version = pd.version,
|
.version = pd.version,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
const Plugin plugin = {
|
const Plugin plugin = {
|
||||||
.copyright = pluginSpec->copyright(),
|
.copyright = pluginSpec->copyright(),
|
||||||
.dependencies = dependencies,
|
.dependencies = dependencies,
|
||||||
|
.id = pluginSpec->id(),
|
||||||
.name = pluginSpec->name(),
|
.name = pluginSpec->name(),
|
||||||
.packageUrl = {},
|
.packageUrl = {},
|
||||||
.vendor = pluginSpec->vendor(),
|
.vendor = pluginSpec->vendor(),
|
||||||
@@ -222,7 +229,7 @@ static Extension extensionFromPluginSpec(const PluginSpec *pluginSpec)
|
|||||||
|
|
||||||
const QStringList lines = pluginSpec->description().split('\n')
|
const QStringList lines = pluginSpec->description().split('\n')
|
||||||
+ pluginSpec->longDescription().split('\n');
|
+ pluginSpec->longDescription().split('\n');
|
||||||
const TextData text = {{ pluginSpec->name(), lines }};
|
const TextData text = {{pluginSpec->name(), lines}};
|
||||||
LinksData links;
|
LinksData links;
|
||||||
if (const QString url = pluginSpec->url(); !url.isEmpty())
|
if (const QString url = pluginSpec->url(); !url.isEmpty())
|
||||||
links.append({{}, url});
|
links.append({{}, url});
|
||||||
@@ -243,7 +250,7 @@ static Extension extensionFromPluginSpec(const PluginSpec *pluginSpec)
|
|||||||
.compatVersion = pluginSpec->compatVersion(),
|
.compatVersion = pluginSpec->compatVersion(),
|
||||||
.copyright = pluginSpec->copyright(),
|
.copyright = pluginSpec->copyright(),
|
||||||
.description = description,
|
.description = description,
|
||||||
.id = {},
|
.id = pluginSpec->id(),
|
||||||
.license = pluginSpec->license(),
|
.license = pluginSpec->license(),
|
||||||
.name = pluginSpec->name(),
|
.name = pluginSpec->name(),
|
||||||
.platforms = platforms,
|
.platforms = platforms,
|
||||||
@@ -251,6 +258,7 @@ static Extension extensionFromPluginSpec(const PluginSpec *pluginSpec)
|
|||||||
.tags = {},
|
.tags = {},
|
||||||
.type = ItemTypeExtension,
|
.type = ItemTypeExtension,
|
||||||
.vendor = pluginSpec->vendor(),
|
.vendor = pluginSpec->vendor(),
|
||||||
|
.vendorId = pluginSpec->vendorId(),
|
||||||
.version = pluginSpec->version(),
|
.version = pluginSpec->version(),
|
||||||
};
|
};
|
||||||
return extension;
|
return extension;
|
||||||
@@ -302,8 +310,8 @@ static QStringList dependenciesFromExtension(const Extension &extension)
|
|||||||
QStringList dependencies;
|
QStringList dependencies;
|
||||||
for (const Plugin &plugin : extension.plugins) {
|
for (const Plugin &plugin : extension.plugins) {
|
||||||
for (const Dependency &dependency : plugin.dependencies) {
|
for (const Dependency &dependency : plugin.dependencies) {
|
||||||
const QString withVersion = QString::fromLatin1("%1 (%2)").arg(dependency.name)
|
const QString withVersion
|
||||||
.arg(dependency.version);
|
= QString::fromLatin1("%1 (%2)").arg(dependency.id).arg(dependency.version);
|
||||||
dependencies.append(withVersion);
|
dependencies.append(withVersion);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -317,7 +325,10 @@ static QVariant dataFromExtension(const Extension &extension, int role)
|
|||||||
switch (role) {
|
switch (role) {
|
||||||
case Qt::DisplayRole:
|
case Qt::DisplayRole:
|
||||||
case RoleName:
|
case RoleName:
|
||||||
return extension.name;
|
return Utils::findOr(
|
||||||
|
QStringList{extension.name, extension.id},
|
||||||
|
"No name found",
|
||||||
|
std::not_fn(&QString::isEmpty));
|
||||||
case RoleCompatVersion:
|
case RoleCompatVersion:
|
||||||
return extension.compatVersion;
|
return extension.compatVersion;
|
||||||
case RoleCopyright:
|
case RoleCopyright:
|
||||||
@@ -345,7 +356,7 @@ static QVariant dataFromExtension(const Extension &extension, int role)
|
|||||||
case RolePlugins: {
|
case RolePlugins: {
|
||||||
PluginsData plugins;
|
PluginsData plugins;
|
||||||
for (const Plugin &plugin : extension.plugins)
|
for (const Plugin &plugin : extension.plugins)
|
||||||
plugins.append(qMakePair(plugin.name, plugin.packageUrl));
|
plugins.append(qMakePair(plugin.id, plugin.packageUrl));
|
||||||
return QVariant::fromValue(plugins);
|
return QVariant::fromValue(plugins);
|
||||||
}
|
}
|
||||||
case RoleSize:
|
case RoleSize:
|
||||||
@@ -356,6 +367,8 @@ static QVariant dataFromExtension(const Extension &extension, int role)
|
|||||||
return !extension.vendor.isEmpty() ? extension.vendor : QVariant();
|
return !extension.vendor.isEmpty() ? extension.vendor : QVariant();
|
||||||
case RoleVersion:
|
case RoleVersion:
|
||||||
return !extension.version.isEmpty() ? extension.version : QVariant();
|
return !extension.version.isEmpty() ? extension.version : QVariant();
|
||||||
|
case RoleVendorId:
|
||||||
|
return extension.vendorId;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -367,7 +380,7 @@ ExtensionState extensionState(const QModelIndex &index)
|
|||||||
if (index.data(RoleItemType) != ItemTypeExtension)
|
if (index.data(RoleItemType) != ItemTypeExtension)
|
||||||
return None;
|
return None;
|
||||||
|
|
||||||
const PluginSpec *ps = pluginSpecForName(index.data(RoleName).toString());
|
const PluginSpec *ps = pluginSpecForId(index.data(RoleId).toString());
|
||||||
if (!ps)
|
if (!ps)
|
||||||
return NotInstalled;
|
return NotInstalled;
|
||||||
|
|
||||||
@@ -398,9 +411,9 @@ QVariant ExtensionsModel::data(const QModelIndex &index, int role) const
|
|||||||
const QVariant extensionData = dataFromExtension(extension, role);
|
const QVariant extensionData = dataFromExtension(extension, role);
|
||||||
// If data is unavailable, retrieve it from the first contained plugin
|
// If data is unavailable, retrieve it from the first contained plugin
|
||||||
if (extensionData.isNull() && !extension.plugins.isEmpty()) {
|
if (extensionData.isNull() && !extension.plugins.isEmpty()) {
|
||||||
const QString firstPluginName = extension.plugins.constFirst().name;
|
const QString firstPluginId = extension.plugins.constFirst().id;
|
||||||
const Extension firstPluginExtension =
|
const Extension firstPluginExtension
|
||||||
findOrDefault(d->extensions, Utils::equal(&Extension::name, firstPluginName));
|
= findOrDefault(d->extensions, Utils::equal(&Extension::id, firstPluginId));
|
||||||
if (firstPluginExtension.name.isEmpty())
|
if (firstPluginExtension.name.isEmpty())
|
||||||
return {};
|
return {};
|
||||||
return dataFromExtension(firstPluginExtension, role);
|
return dataFromExtension(firstPluginExtension, role);
|
||||||
@@ -416,9 +429,9 @@ void ExtensionsModel::setExtensionsJson(const QByteArray &json)
|
|||||||
endResetModel();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
PluginSpec *pluginSpecForName(const QString &pluginName)
|
PluginSpec *pluginSpecForId(const QString &pluginId)
|
||||||
{
|
{
|
||||||
return findOrDefault(PluginManager::plugins(), equal(&PluginSpec::name, pluginName));
|
return findOrDefault(PluginManager::plugins(), equal(&PluginSpec::id, pluginId));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // ExtensionManager::Internal
|
} // ExtensionManager::Internal
|
||||||
|
@@ -50,6 +50,7 @@ enum Role {
|
|||||||
RoleSize,
|
RoleSize,
|
||||||
RoleTags,
|
RoleTags,
|
||||||
RoleVendor,
|
RoleVendor,
|
||||||
|
RoleVendorId,
|
||||||
RoleVersion,
|
RoleVersion,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -68,7 +69,7 @@ private:
|
|||||||
class ExtensionsModelPrivate *d = nullptr;
|
class ExtensionsModelPrivate *d = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
ExtensionSystem::PluginSpec *pluginSpecForName(const QString &pluginName);
|
ExtensionSystem::PluginSpec *pluginSpecForId(const QString &pluginId);
|
||||||
|
|
||||||
#ifdef WITH_TESTS
|
#ifdef WITH_TESTS
|
||||||
QObject *createExtensionsModelTest();
|
QObject *createExtensionsModelTest();
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "fakevim",
|
||||||
"Name" : "FakeVim",
|
"Name" : "FakeVim",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "fossil",
|
||||||
"Name" : "Fossil",
|
"Name" : "Fossil",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
|
"VendorId" : "arturshepilko",
|
||||||
"Vendor" : "Artur Shepilko",
|
"Vendor" : "Artur Shepilko",
|
||||||
"Copyright" : "(C) 2018 Artur Shepilko",
|
"Copyright" : "(C) 2018 Artur Shepilko",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "genericprojectmanager",
|
||||||
"Name" : "GenericProjectManager",
|
"Name" : "GenericProjectManager",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "git",
|
||||||
"Name" : "Git",
|
"Name" : "Git",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,24 +1,26 @@
|
|||||||
{
|
{
|
||||||
"Name" : "GitLab",
|
"Id" : "gitlab",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Name" : "GitLab",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"Experimental" : true,
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Experimental" : true,
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"VendorId" : "theqtcompany",
|
||||||
"License" : [ "Commercial Usage",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"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 The Qt Company.",
|
"License" : [ "Commercial Usage",
|
||||||
"",
|
"",
|
||||||
"GNU General Public License 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 The Qt Company.",
|
||||||
"",
|
"",
|
||||||
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"GNU General Public License Usage",
|
||||||
],
|
"",
|
||||||
"Description" : "Create connections to GitLab servers.",
|
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
"LongDescription" : [
|
],
|
||||||
"You also need:",
|
"Description" : "Create connections to GitLab servers.",
|
||||||
"- GitLab account"
|
"LongDescription" : [
|
||||||
],
|
"You also need:",
|
||||||
"Url" : "https://www.qt.io",
|
"- GitLab account"
|
||||||
"DocumentationUrl" : "https://doc.qt.io/qtcreator/creator-vcs-gitlab.html",
|
],
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
"Url" : "https://www.qt.io",
|
||||||
|
"DocumentationUrl" : "https://doc.qt.io/qtcreator/creator-vcs-gitlab.html",
|
||||||
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "glsleditor",
|
||||||
"Name" : "GLSLEditor",
|
"Name" : "GLSLEditor",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "haskell",
|
||||||
"Name" : "Haskell",
|
"Name" : "Haskell",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
|
"VendorId" : "eikeziller",
|
||||||
"Vendor" : "Eike Ziller",
|
"Vendor" : "Eike Ziller",
|
||||||
"Copyright" : "(C) Eike Ziller",
|
"Copyright" : "(C) Eike Ziller",
|
||||||
"License" : "MIT",
|
"License" : "MIT",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "helloworld",
|
||||||
"Name" : "HelloWorld",
|
"Name" : "HelloWorld",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "help",
|
||||||
"Name" : "Help",
|
"Name" : "Help",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "imageviewer",
|
||||||
"Name" : "ImageViewer",
|
"Name" : "ImageViewer",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "incredibuild",
|
||||||
"Name" : "IncrediBuild",
|
"Name" : "IncrediBuild",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Platform" : "^(Linux|Windows)",
|
"Platform" : "^(Linux|Windows)",
|
||||||
|
"VendorId" : "incredibuild",
|
||||||
"Vendor" : "IncrediBuild",
|
"Vendor" : "IncrediBuild",
|
||||||
"Copyright" : "(C) IncrediBuild",
|
"Copyright" : "(C) IncrediBuild",
|
||||||
"Category" : "Build Systems",
|
"Category" : "Build Systems",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "insight",
|
||||||
"Name" : "Insight",
|
"Name" : "Insight",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Revision" : "${QTC_PLUGIN_REVISION}",
|
"Revision" : "${QTC_PLUGIN_REVISION}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "ios",
|
||||||
"Name" : "Ios",
|
"Name" : "Ios",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Platform" : "OS X.*",
|
"Platform" : "OS X.*",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"Name" : "LanguageClient",
|
"Id" : "languageclient",
|
||||||
|
"Name" : "Language Client",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,10 +1,12 @@
|
|||||||
{
|
{
|
||||||
"Name" : "LuaLanguageClient",
|
"Id" : "lualanguageclient",
|
||||||
|
"Name" : "Lua Language Client",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"LuaCompatibleVersion" : "14.0.0",
|
"LuaCompatibleVersion" : "14.0.0",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
"SoftLoadable" : true,
|
"SoftLoadable" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,10 +1,12 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "lua",
|
||||||
"Name" : "Lua",
|
"Name" : "Lua",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"LuaCompatibleVersion" : "14.0.0",
|
"LuaCompatibleVersion" : "14.0.0",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
"SoftLoadable" : true,
|
"SoftLoadable" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -95,14 +95,14 @@ ExtensionSystem::IPlugin *LuaPluginSpec::plugin() const
|
|||||||
|
|
||||||
bool LuaPluginSpec::provides(PluginSpec *spec, const PluginDependency &dependency) const
|
bool LuaPluginSpec::provides(PluginSpec *spec, const PluginDependency &dependency) const
|
||||||
{
|
{
|
||||||
if (QString::compare(dependency.name, spec->name(), Qt::CaseInsensitive) != 0)
|
if (QString::compare(dependency.id, spec->id(), Qt::CaseInsensitive) != 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const QString luaCompatibleVersion = spec->metaData().value("LuaCompatibleVersion").toString();
|
const QString luaCompatibleVersion = spec->metaData().value("LuaCompatibleVersion").toString();
|
||||||
|
|
||||||
if (luaCompatibleVersion.isEmpty()) {
|
if (luaCompatibleVersion.isEmpty()) {
|
||||||
qCWarning(luaPluginSpecLog)
|
qCWarning(luaPluginSpecLog)
|
||||||
<< "The plugin" << spec->name()
|
<< "The plugin" << spec->id()
|
||||||
<< "does not specify a \"LuaCompatibleVersion\", but the lua plugin" << name()
|
<< "does not specify a \"LuaCompatibleVersion\", but the lua plugin" << name()
|
||||||
<< "requires it.";
|
<< "requires it.";
|
||||||
return false;
|
return false;
|
||||||
|
@@ -9,10 +9,12 @@ PluginSpec = {}
|
|||||||
Qtc = {}
|
Qtc = {}
|
||||||
|
|
||||||
---@class (exact) QtcPlugin
|
---@class (exact) QtcPlugin
|
||||||
---@field Name string The name of the plugin.
|
---@field Id string The id of the plugin.
|
||||||
|
---@field Name string? The name of the plugin. ( Default: `Id` )
|
||||||
---@field Version string The version of the plugin. (`major.minor.patch`)
|
---@field Version string The version of the plugin. (`major.minor.patch`)
|
||||||
---@field CompatVersion string The lowest previous version of the plugin that this one is compatible to. (`major.minor.patch`)
|
---@field CompatVersion string The lowest previous version of the plugin that this one is compatible to. (`major.minor.patch`)
|
||||||
---@field Vendor string The vendor of the plugin.
|
---@field VendorId string
|
||||||
|
---@field Vendor string? The display name of the vendor of the plugin. ( Default: `VendorId` )
|
||||||
---@field Category string The category of the plugin.
|
---@field Category string The category of the plugin.
|
||||||
---@field Dependencies? QtcPluginDependency[] The dependencies of the plugin.
|
---@field Dependencies? QtcPluginDependency[] The dependencies of the plugin.
|
||||||
---@field Description? string A short one line description of the plugin.
|
---@field Description? string A short one line description of the plugin.
|
||||||
@@ -33,7 +35,7 @@ Qtc = {}
|
|||||||
QtcPlugin = {}
|
QtcPlugin = {}
|
||||||
|
|
||||||
---@class QtcPluginDependency
|
---@class QtcPluginDependency
|
||||||
---@field Name string The name of the dependency.
|
---@field Id string The name of the dependency.
|
||||||
---@field Version string The version of the dependency. (`major.minor.patch`)
|
---@field Version string The version of the dependency. (`major.minor.patch`)
|
||||||
---@field Required? "required"|"optional"|"test" Whether the dependency is required or not. (Default: "required")
|
---@field Required? "required"|"optional"|"test" Whether the dependency is required or not. (Default: "required")
|
||||||
QtcPluginDependency = {}
|
QtcPluginDependency = {}
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "macros",
|
||||||
"Name" : "Macros",
|
"Name" : "Macros",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,19 +1,21 @@
|
|||||||
{
|
{
|
||||||
"Name" : "Marketplace",
|
"Id" : "marketplace",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Name" : "Marketplace",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"VendorId" : "theqtcompany",
|
||||||
"License" : [ "Commercial Usage",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"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 The Qt Company.",
|
"License" : [ "Commercial Usage",
|
||||||
"",
|
"",
|
||||||
"GNU General Public License 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 The Qt Company.",
|
||||||
"",
|
"",
|
||||||
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"GNU General Public License Usage",
|
||||||
],
|
"",
|
||||||
"Description" : "Install applications from Qt Marketplace.",
|
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
"LongDescription" : [],
|
],
|
||||||
"Url" : "https://www.qt.io",
|
"Description" : "Install applications from Qt Marketplace.",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
"LongDescription" : [],
|
||||||
|
"Url" : "https://www.qt.io",
|
||||||
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
}
|
}
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "mcusupport",
|
||||||
"Name" : "McuSupport",
|
"Name" : "McuSupport",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "mercurial",
|
||||||
"Name" : "Mercurial",
|
"Name" : "Mercurial",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "brianmcgillion",
|
||||||
"Vendor" : "Brian McGillion",
|
"Vendor" : "Brian McGillion",
|
||||||
"Copyright" : "(C) 2016 Brian McGillion, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2016 Brian McGillion, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "mesonprojectmanager",
|
||||||
"Name" : "MesonProjectManager",
|
"Name" : "MesonProjectManager",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "laboratory of plasma physics",
|
||||||
"Vendor" : "Laboratory of Plasma Physics",
|
"Vendor" : "Laboratory of Plasma Physics",
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "modeleditor",
|
||||||
"Name" : "ModelEditor",
|
"Name" : "ModelEditor",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "jochenbecher",
|
||||||
"Vendor" : "Jochen Becher",
|
"Vendor" : "Jochen Becher",
|
||||||
"Copyright" : "(C) 2017 Jochen Becher, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2017 Jochen Becher, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "nim",
|
||||||
"Name" : "Nim",
|
"Name" : "Nim",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "filippocucchetto",
|
||||||
"Vendor" : "Filippo Cucchetto",
|
"Vendor" : "Filippo Cucchetto",
|
||||||
"Copyright" : "(C) 2017 Filippo Cucchetto, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2017 Filippo Cucchetto, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "perforce",
|
||||||
"Name" : "Perforce",
|
"Name" : "Perforce",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "perfprofiler",
|
||||||
"Name" : "PerfProfiler",
|
"Name" : "PerfProfiler",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"Name" : "ProjectExplorer",
|
"Id" : "projectexplorer",
|
||||||
|
"Name" : "Project Explorer",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "python",
|
||||||
"Name" : "Python",
|
"Name" : "Python",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qbsprojectmanager",
|
||||||
"Name" : "QbsProjectManager",
|
"Name" : "QbsProjectManager",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qmakeprojectmanager",
|
||||||
"Name" : "QmakeProjectManager",
|
"Name" : "QmakeProjectManager",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qmldesigner",
|
||||||
"Name" : "QmlDesigner",
|
"Name" : "QmlDesigner",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qmldesignerbase",
|
||||||
"Name" : "QmlDesignerBase",
|
"Name" : "QmlDesignerBase",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qmldesignerlite",
|
||||||
"Name" : "QmlDesignerLite",
|
"Name" : "QmlDesignerLite",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qmljseditor",
|
||||||
"Name" : "QmlJSEditor",
|
"Name" : "QmlJSEditor",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qmljstools",
|
||||||
"Name" : "QmlJSTools",
|
"Name" : "QmlJSTools",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qmlpreview",
|
||||||
"Name" : "QmlPreview",
|
"Name" : "QmlPreview",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qmlprofiler",
|
||||||
"Name" : "QmlProfiler",
|
"Name" : "QmlProfiler",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qmlprojectmanager",
|
||||||
"Name" : "QmlProjectManager",
|
"Name" : "QmlProjectManager",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qnx",
|
||||||
"Name" : "Qnx",
|
"Name" : "Qnx",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "blackberry",
|
||||||
"Vendor" : "BlackBerry",
|
"Vendor" : "BlackBerry",
|
||||||
"Copyright" : "(C) 2017 BlackBerry, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2017 BlackBerry, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qtapplicationmanagerintegration",
|
||||||
"Name" : "QtApplicationManagerIntegration",
|
"Name" : "QtApplicationManagerIntegration",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
"Revision" : "${QTC_PLUGIN_REVISION}",
|
"Revision" : "${QTC_PLUGIN_REVISION}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) 2020 Luxoft Sweden AB, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) 2020 Luxoft Sweden AB, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "qtsupport",
|
||||||
"Name" : "QtSupport",
|
"Name" : "QtSupport",
|
||||||
"Version" : "${IDE_VERSION}",
|
"Version" : "${IDE_VERSION}",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
|
"VendorId" : "theqtcompany",
|
||||||
"Vendor" : "The Qt Company Ltd",
|
"Vendor" : "The Qt Company Ltd",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
"License" : [ "Commercial Usage",
|
"License" : [ "Commercial Usage",
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user