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 {
|
||||||
|
Id = "lualanguageserver",
|
||||||
Name = "Lua Language Server",
|
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 {
|
||||||
|
Id = "luatests",
|
||||||
Name = "Lua Tests",
|
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 {
|
||||||
|
Id = "rustlanguageserver",
|
||||||
Name = "Rust Language Server",
|
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> {
|
||||||
|
QJsonValue value = data.value(QLatin1String(fieldName));
|
||||||
if (value.isUndefined())
|
if (value.isUndefined())
|
||||||
return reportError(msgValueMissing(PLUGIN_NAME));
|
return make_unexpected(msgValueMissing(fieldName));
|
||||||
if (!value.isString())
|
if (!value.isString())
|
||||||
return reportError(msgValueIsNotAString(PLUGIN_NAME));
|
return make_unexpected(msgValueIsNotAString(fieldName));
|
||||||
name = value.toString();
|
member = value.toString();
|
||||||
|
return {};
|
||||||
|
};
|
||||||
|
|
||||||
value = metaData.value(QLatin1String(PLUGIN_VERSION));
|
auto assignOr =
|
||||||
|
[&data](auto &&member, const char *fieldName, auto &&defaultValue) -> expected_str<void> {
|
||||||
|
QJsonValue value = data.value(QLatin1String(fieldName));
|
||||||
if (value.isUndefined())
|
if (value.isUndefined())
|
||||||
return reportError(msgValueMissing(PLUGIN_VERSION));
|
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())
|
if (!value.isString())
|
||||||
return reportError(msgValueIsNotAString(PLUGIN_VERSION));
|
return make_unexpected(msgValueIsNotAString(fieldName));
|
||||||
version = value.toString();
|
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());
|
||||||
|
|
||||||
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,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "autotest",
|
||||||
"Name" : "AutoTest",
|
"Name" : "AutoTest",
|
||||||
"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" : "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(),
|
||||||
@@ -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,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "gitlab",
|
||||||
"Name" : "GitLab",
|
"Name" : "GitLab",
|
||||||
"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,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 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "languageclient",
|
||||||
"Name" : "Language Client",
|
"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 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "lualanguageclient",
|
||||||
"Name" : "Lua Language Client",
|
"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,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "marketplace",
|
||||||
"Name" : "Marketplace",
|
"Name" : "Marketplace",
|
||||||
"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" : "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 @@
|
|||||||
{
|
{
|
||||||
|
"Id" : "projectexplorer",
|
||||||
"Name" : "Project Explorer",
|
"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