Commit Graph

115 Commits

Author SHA1 Message Date
Marcus Tillmanns
20a6a5cd78 Extensionsystem: Allow pluginspecs to customize how they want to check dependencies
Change-Id: I84f3a56160588e4842301f4577f7bfdad96463ca
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2024-06-13 12:52:08 +00:00
Alessandro Portale
6663f7c9bd ExtensionSystem: Introduce alias PluginSpecs
Change-Id: Ic7b87246cf91328c4291bbce5760a45dfa0b14e5
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2024-05-13 13:46:53 +00:00
Marcus Tillmanns
657ce51467 ExtensionSystem: FilePath'ify
Change IPlugin::fileName() and IPlugin::location to use
FilePath instead of QString.

Change-Id: If473ab1e258951735f93221cbd62c505f0727eb2
Reviewed-by: hjk <hjk@qt.io>
2024-05-08 10:29:59 +00:00
Marcus Tillmanns
ef8455f270 ExtensionSystem: Rename PluginSpecImpl to CppPluginSpec
Since we now have multiple classes inheriting from PluginSpec it makes sense
to rename PluginSpecImpl to the more accurate CppPluginSpec as it deals with
compiled plugins only.

Amends b39b192518

Change-Id: Icae9daed2be5a258a9918731a881c72cbe4f0fa4
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2024-04-19 11:26:03 +00:00
Marcus Tillmanns
7cf2e4352c ExtensionSystem: Fix compile without WITH_TESTS
PluginSpecImpl::read is used outside of tests, but PluginSpecImpl itself
is only exported when WITH_TESTS is on. So compilation without
WITH_TESTS would fail. To circumvent this the ::read functions are moved
outside of the PluginSpecImpl and friend'd to it.

Amends b39b192518

Change-Id: I4bd8ce087267ab4e059cff2470ff882c7db6fd78
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2024-04-19 10:39:17 +00:00
Marcus Tillmanns
b39b192518 ExtensionSystem: Refactor PluginSpec
Splits the functionality between plugin type specific and general.

Allows Plugins to be loaded after the first pass, e.g. for Lua scripted
plugins.

Change-Id: If2712817a672c49d554fdc308250cb06ca7eb3f8
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2024-02-14 14:33:16 +00:00
Alessandro Portale
f96feadad0 Fix missing overrides and redundant virtual
Change-Id: Id2a247b6032602c2295d928067c2462d3f9b5221
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
2023-11-14 14:27:45 +00:00
Jarek Kobus
9680b8434e Tests: Simplify return statements
Change-Id: I9609609f0f880654b73e8930cd05818ddf9b7152
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2023-08-02 11:30:20 +00:00
Tor Arne Vestbø
27b630c3ab Replace Q_OS_OSX with Q_OS_MACOS
Change-Id: Ibee0c259d7df86a8df58b1ad12549b145f715397
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2023-06-07 07:54:04 +00:00
Jarek Kobus
10a97e1f0e Various Tests: Use typed connections in QSignalSpy
Change-Id: I0965916f5ce302e9bdcb47ae7126262327f63613
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-02-27 14:07:13 +00:00
hjk
4b9aaf6ca1 ExtensionSystem: Remove the IPlugin back pointer to pluginspec
The price of having to loop in two places seems small compared
to cleaner relations between the classes.

There's a new hack in the helpmanager to make sure we aren't
looping to often. The hack wouldn't be needed if the (odd(?))
check there weren't there.

Change-Id: Ifed50213b2de8feedfb45c185808d163c00c19ca
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2023-02-10 10:23:33 +00:00
Kai Köhne
56baf8c058 Remove GPL-3.0+ from license identifiers
Since we also license under GPL-3.0 WITH Qt-GPL-exception-1.0,
this applies only to a hypothetical newer version of GPL, that doesn't
exist yet. If such a version emerges, we can still decide to relicense...

While at it, replace (deprecated) GPL-3.0 with more explicit GPL-3.0-only

Change was done by running

  find . -type f -exec perl -pi -e "s/LicenseRef-Qt-Commercial OR GPL-3.0\+ OR GPL-3.0 WITH Qt-GPL-exception-1.0/LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0/g" {} \;

Change-Id: I5097e6ce8d10233993ee30d7e25120e2659eb10b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2023-01-06 11:15:13 +00:00
Artem Sokolovskii
a5bee6e3ae tests: Remove foreach usage
Task-number: QTCREATORBUG-27464
Change-Id: I0e42da9b04793be959ad050fdecc0c78c98d9fcd
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2023-01-03 10:53:15 +00:00
Eike Ziller
34aa8e9e19 PluginSpec: Add a "LongDescription" to plugin meta data
The EmacsKeys plugin had a long description with details on what it
does, which in principle is a good thing, but shouldn't be shown with
e.g. the -version command line argument.

Split the description in a short "Description" (name unchanged for
compatibility), and a possibly longer "LongDescription", using only the
first one for -version, and showing both in the plugin details.

Adapt the EmacsKeys plugin meta data.

Fixes: QTCREATORBUG-17312
Change-Id: I4a4abf51e5e19b71ee73edb14c6a897fbceaf916
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
2022-12-16 08:29:57 +00:00
Lucie Gérard
a7956df3ca Use SPDX license identifiers
Replace the current license disclaimer in files by
a SPDX-License-Identifier.

Task-number: QTBUG-67283
Change-Id: I708fd1f9f2b73d60f57cc3568646929117825813
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2022-08-26 12:27:18 +00:00
Eike Ziller
caed14b22d Fix pluginspec test for Windows release builds
Used a wrong name for the plugin library

Change-Id: Ic1cff07387b660a641c2f43bfb913bd8b8668c5c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2022-07-01 11:34:56 +00:00
Eike Ziller
737877984d Use QTEST_GUILESS_MAIN where applicable
instead of QTEST_MAIN. Reduces the initialization that is done by the Qt
test applications, and can also reduce interference with normal OS
operations like the current window loosing focus.

Change-Id: If88f289281aa1c8703ac7d4dbe0799d067c16588
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-06-13 06:06:44 +00:00
Cristian Adam
88781a003f CMake: Qt Creator Static build support
This adds the build system feature that allows Qt Creator's libraries
and plugins to be compiled statically.

Fixes some symbol clashes when all plugins are linked into the same
executable.

Support for actually loading static plugins will be added in a separate
commit.

The feature is controlled by QTC_STATIC_BUILD which by default is OFF.

Change-Id: I1fab7953c43e42dc75619e35660029ee067106df
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-04-29 07:16:53 +00:00
Christian Stenger
d8bd4e8e05 Tests: Fix pluginspec test on Windows
Change-Id: Ie72131f2e85b999ef8aaefd773407b2c5ce23019
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2022-02-08 13:41:06 +00:00
Eike Ziller
9d8a419d10 Remove qmake build files
Removes qmake as a build system for building Qt Creator itself.
Keep them for some tests that are not completely moved to CMake yet.

Change-Id: I846c6ef65626b6dfae6375fdc85d00677aa8c2fb
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2022-01-20 12:18:15 +00:00
Christian Stenger
ec9a72808f Tests: Fix pluginspecs test for cmake
Change-Id: I700bd9cbcdabfa08863ffb727a084a9339e660d5
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2021-02-10 05:24:38 +00:00
David Schulz
93dd966ce2 CMake: add missing Utils dependency to extensionsystem test
Change-Id: I95a518e3ecb098bd39a06f921bfbeb1b6fb0126f
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-12-14 12:35:22 +00:00
Alessandro Portale
996ad4c8cb PluginManager test: Fix linkage for Qbs build system
Dependency on Utils is not exported by ExtensionSystem, therefore not
transitive.

Amends 41b73594ad

Change-Id: Iaa95ae16854cf760fdd32bc542297746b6351527
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-07 07:14:33 +00:00
Eike Ziller
41b73594ad Add API for saving settings with default value
We should never actually write default values into the settings, because

- if the default value changes in a later Qt Creator version, the new
  default should automatically take effect if the user didn't change the
  value
- it senselessly grows the settings file

Add a QtcSettings class that extends QSettings by a
"setValueWithDefault" method, which does not write default values to the
settings, and actually removes the settingskey if the user switches back
to the default.

Use it at the places where we already do this manually.

Task-number: QTCREATORBUG-24762
Change-Id: Ia76414cb21e8521f3aeed1e37b43ae4fb3393ea3
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2020-12-04 08:25:17 +00:00
Alessandro Portale
81f3452e1c Aggregation/Utils/ExtensionSystem: Make member functions const/static
readability-make-member-function-const finds lots of member functions
that could be made const. This change just picks getter functions that
really should be const.

readability-convert-member-functions-to-static finds non-static member
functions which do not access this. This change turns most of them
into static ones, but leaves some non static to keep the class API
consistent.

readability-static-accessed-through-instance fixes the places where
the originally non-static, now static functions were called through
instance.

Change-Id: I8cf16c01f7988a7c9d073b5f8ede6a9706b94fb0
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-11-27 09:16:08 +00:00
Cristian Adam
a2aa02acba CMake Build: Make sure testplugin target exists before setting property
When doing a minimal build, the testplugin might not be created.

Change-Id: Ia4f1cbd14cbdad6e81cb7090a7f52aad692175fa
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-10-20 14:12:38 +00:00
Christian Stenger
a826267cd4 Tests: Fix nullptr access
Change-Id: I4e2bf36dfa6e16dfd9924c865bd9a997750243a2
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-07-30 13:24:48 +00:00
Christian Kandeler
8e1169f4bf qbs build: Take differences between clang and "apple clang" into account
In particular, clang with version number 10 is not really clang 10 on
macOS.

Change-Id: I8be489fa9cffd63c1ea8f13d181686ab1a575ec6
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-05-12 07:31:39 +00:00
Christian Kandeler
27ea67728f qbs build: Suppress more warnings
Amends d08e5c33ff.

Change-Id: Ic842dda51b21427e1989190b44508d54aa1e7120
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-05-07 15:25:31 +00:00
hjk
d3d294cd81 ExtensionSystem: Some modernization
Mostly 'foreach'.

Change-Id: I5390d03bb5cc37c3674b61cea6f5d22bae554ed2
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-02-14 09:50:07 +00:00
hjk
a44bfdd779 Provide an empty default IPlugin::extensionsInitialized()
And remove all empy re-implementations.

Change-Id: I19f0b4e55c042c96693ecb89766f97f0a97b54ae
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-02-07 10:21:34 +00:00
Igor Sidorov
a9e40ad14c Add final specifies to classes
Warning -Wfinal-dtor-non-final-class in clang trunk

Change-Id: I2bf17064bf8898eab10b82b69583a283157766d0
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-02-05 09:33:55 +00:00
Tobias Hunger
1e9ee0ce1d CMakeLists: Allow for internal plugin registration
add_qtc_plugin now takes a flag "INTERNAL_ONLY". These internal plugins
will not show up in the project configuration nor in the feature summary.

This flag is used by the tests that build plugins.

Change-Id: I1912dd62221b2624ed7326df381fbbceccefbdac
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-08-09 09:05:54 +00:00
Cristian Adam
8ae9cfe39d CMake build: Add "Devel" package
The "Devel" package will contain headers, libraries, documentation
needed by the 3rd parties to build Qt Creator plugins.

Fixes: QTCREATORBUG-22514
Change-Id: If54929f823982b921b98a63ff6085d53618a3a49
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-07-25 14:06:46 +00:00
Cristian Adam
0439eea6bc CMake build: Skip installation of test plugins / executables
Our tests run from the build folder. We do not need to install them.

Change-Id: Iaeb27e466fe0d43bc15fa3eee3bf6d2659b87083
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-06-05 08:28:49 +00:00
Eike Ziller
e0b0a08e50 ExtensionSystem: Move away from QList
Qt 6 API will move away from it.
Use QVector for API and some std container for internal things.

Change-Id: Iff14d48a47d5ac52ade875d9c8c84ad8a4f577d8
Reviewed-by: hjk <hjk@qt.io>
2019-05-27 14:21:00 +00:00
Cristian Adam
d855b84c5d Qt Creator CMake port
Based on Tobias Hunger's work from a few months ago.

The CMake configuration needs libclang and Qt paths specified as
CMAKE_PREFIX_PATH.

Auto tests are run with "ctest". At the moment the pass rate is 87%.

Change-Id: Iba98e39bf22077d52706dce6c85986be67a6eab0
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-05-17 13:33:28 +00:00
Orgad Shaneh
bdc2b4b59f Remove hard-coded disabling of debug logs
Instead, set the default level of all logs to QtWarningMsg.

The call to setFilterRules overrides the user preferences in qtlogging.ini.

Change-Id: Id5f6cd550d14ff7f45ae04c5d3110e0bafb0f072
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2018-10-13 16:36:58 +00:00
hjk
99bcc00199 ExtensionSystem: Remove PluginManager::getObjectByClassName
Not used anymore inside Qt Creator.

If 3rd party code really relies on this function, it can use the
function locally, or, likely switch to the still supported
getObjectByName or getObject.

Change-Id: I041877b3e0630e6b257055dec5e10baf68c83546
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2018-04-11 06:47:18 +00:00
Andre Hartmann
fa9dcf67d6 Test: Fix compile after removing getObjects() from ExtensionSystem
The test for getObjects is therefore no longer needed.

Amends 72585ef3f1

Change-Id: I09f0e4a3a044263f971e3054c136fe82695a83a4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-03-05 05:45:45 +00:00
hjk
31a55b0247 ExtensionSystem: Remove per-plugin object pools
Remove now-unused IPlugin::addAutoReleasedObject and IPlugin::
{add,remove}Object convenience functions that were only forwarding
to the global pool.

Adjust all related tests.

All previous users of these convenience functions are gone, and we do
not want to encourage the use of object pool anymore.

Plugins that wish to share objects to implement weak dependencies
can use the global object pool via  ExtensionSystem::PluginManager::
{add,remove}Object directly.

Change-Id: Ic668ad5504af76963f6d4c69ae160438efc70db5
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2018-02-23 08:57:49 +00:00
David Schulz
01b2ed7904 Auto Tests: Fix extensionsystem tests
Change-Id: Iaed08ddf5f4f93cae395bfdec1e8bff87fd8e618
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-19 06:39:37 +00:00
Eike Ziller
5fcf0c438f PluginManager: Code clean up
Mostly refactor some explicit loops, and nicer reverse looping.

Change-Id: I102b86da597b37cd496762bd776af73ec407d838
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-06-24 12:30:05 +00:00
Eike Ziller
667518ad23 Convert some c-style casts
Change-Id: I0d7566d14941a17c3f171b32c9902c22558005bd
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-06-24 12:29:46 +00:00
Christian Kandeler
a0f956f050 qbs build: Introduce new module "qtc".
The qtc module gathers properties that used to live in the top-level
project file. This is the first step towards making it possible to build
plugins against an installed Qt Creator ("out of source build").

Change-Id: Ia1514cc9c888e80be01b308e908de48980fcbdb8
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-06-08 08:46:00 +00:00
David Schulz
8da31c87ee Add version number to lib dependencies on windows.
Change-Id: Ied3707f18cf2753679eeaa2bcff0edfba3c7517e
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
2016-05-18 05:02:40 +00:00
hjk
39a38d5679 Wholesale conversion to #pragma once
Kudos to cgmb and https://github.com/cgmb/guardonce

Change-Id: Ifa8970734b8d43fd08c9260c645bdb0228633791
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-03-30 15:20:19 +00:00
hjk
d9660c8479 Use C++11 unconditionally for qbs build of auto tests
... and valgrind fake tool.

Change-Id: I36d4e696ab0f37067eca639cb79613879d0fc990
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2016-02-24 16:17:49 +00:00
Tobias Hunger
954569387c Update License according to agreement with Free Qt Foundation
* Update license information in tests directory

Change-Id: I311441dd37d053ca3175e44b284258e232ee93e0
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-01-19 16:01:06 +00:00
Christian Kandeler
153bfbba0e qbs project files: Do not use "base" inside groups.
Change-Id: Ifd3df06840b9bcf06ca8c21b62e67a9decd88bee
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-07-07 14:53:38 +00:00