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-themes
andskyrim-theme
archives.translations
- Provide one or more main translations for MO2, seebase-translations
which 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 aplugins
extension for now).Each extension is a folder in the
extensions
folder, with amo2-metadata.json
file describing the extension. The goal is to use that file to create the marketplace.Changes
PluginContainer
is replaced byPluginManager
- The main reason was to start from scratch to avoid issue, but it's very similar toPluginContainer
.IPluginProxy
is 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 remainingIPlugin
methods.mob
and 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