Currently, integrations are a mess - it's immensely difficult to get a solid mental model of them.
In order to address this, some major refactoring should be done:
[ ] Have the one Integration base class which all integrations inherit from
[ ] Simplify the interface such that integrations are the same for PluginIntegration, WindowIntegration and CoreIntegration
[ ] Move CoreIntegration's shouldBeActive classmethod to be part of the base class definition, and should probably be called isEnabled or something
[ ] Simplify the extension manager system to allow for integrations to be registered alongside their activity criteria (ie use a decorator that allows users to specify the conditions for its activity)
Currently, integrations are a mess - it's immensely difficult to get a solid mental model of them.
In order to address this, some major refactoring should be done:
Integration
base class which all integrations inherit fromPluginIntegration
,WindowIntegration
andCoreIntegration
CoreIntegration
'sshouldBeActive
classmethod to be part of the base class definition, and should probably be calledisEnabled
or something