Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New extensions sytem, WIP.
Add a new extensions systems to MO2:
The main goal is to add more flexibility to the current plugin system, by including themes and translations, and to allow users to install extensions for a "Marketplace", similar to the one existing for Python. Hopefully, this will let us update extensions faster than MO2 to release fixes and new features.
There are 4 type of extensions:
theme- Provide one or more main themes for MO2, such as VS15 Dark or Skyrim, see thevs15-dark-themesandskyrim-themearchives.translations- Provide one or more main translations for MO2, seebase-translationswhich contain translations for MO2 and Qt.plugins- Provide one or more plugins (old-style plugins), alongside translations and themes (for existing themes).game- Provide support for one or more game (basically apluginsextension for now).Each extension is a folder in the
extensionsfolder, with amo2-metadata.jsonfile describing the extension. The goal is to use that file to create the marketplace.Changes
PluginContaineris replaced byPluginManager- The main reason was to start from scratch to avoid issue, but it's very similar toPluginContainer.IPluginProxyis replaced withIPluginLoader, that is NOT aIPlugin. There is a standard loader embedded in MO2 (ProxyQtLoader), and the python proxy is now atplugins/proxies.TODO (probably incomplete)
name(),localizedName(),settings()should be the only remainingIPluginmethods.moband CMake stuff to put files in the right place.Examples of extension:
base-translations.zip
game-tes-fallout.zip
installer-manual.zip
skyrim-theme.zip
vs15-dark-themes.zip