Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Extensions #1848

Open
wants to merge 23 commits into
base: dev/vcpkg
Choose a base branch
from
Open

WIP: Extensions #1848

wants to merge 23 commits into from

Conversation

Holt59
Copy link
Member

@Holt59 Holt59 commented Jul 22, 2023

New extensions sytem, WIP.

Add a new extensions systems to MO2:

  • extensions can add translations, themes or plugins to MO2,
  • extensions are fully isolated, no more stuff in common folder (translations, stylesheets, plugins/data),

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 the vs15-dark-themes and skyrim-theme archives.
  • translations - Provide one or more main translations for MO2, see base-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 a plugins extension for now).

Each extension is a folder in the extensions folder, with a mo2-metadata.json file describing the extension. The goal is to use that file to create the marketplace.


Changes

  • PluginContainer is replaced by PluginManager - The main reason was to start from scratch to avoid issue, but it's very similar to PluginContainer.
  • IPluginProxy is replaced with IPluginLoader, that is NOT a IPlugin. There is a standard loader embedded in MO2 (ProxyQtLoader), and the python proxy is now at plugins/proxies.
    • Note: Having proxies as IPlugin was a PITA for not much since no one is going to write a proxy without us helping him, etc.

TODO (probably incomplete)

  • Implement the 4 extension types in MO2.
  • Remove hard-coded stuff for the proxies.
  • Remove old stuff from the plugin interfaces (description, authors, etc.).
    • Note: name(), localizedName(), settings() should be the only remaining IPlugin methods.
  • Re-implement the settings for the extensions.
  • Implement the marketplace stuff.
  • Update 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant