This module provides the core functionality of the plugin system for Editra. Its design is influenced by the system used in the web based project management software Trac (trac.edgewall.org). To create a plugin plugin class must derive from Plugin and in the class definintion it must state which Interface it Implements. Interfaces are defined throughout various locations in the core Editra code. The interface defines the contract that the plugin needs to conform to.
Plugins consist of python egg files that can be created with the use of the setuptools package.
There are some issues I dont like with how this is currently working that I hope to find a work around for in later revisions. Namely I dont like the fact that the plugins are loaded and kept in memory even when they are not activated. Although the footprint of the non activated plugin class members being held in memory is not likely to be very large.
Summary: Plugin interface and mananger implementation
Implements | Used by :class:`~tools.Editra.src.plugin.Plugin`s to declare the interface that they |
ExtensionPoint | Declares what Interface a plugin is extending |
Interface | Base class for defining interfaces. Interface classes are |
Plugin | Base class for all plugin type objects |
PluginConfigObject | Plugin configuration object. Plugins that wish to provide a |
PluginData | A storage class for representing data about a Plugin |
PluginManager | The PluginManger keeps track of the active plugins. It |
PluginMeta | Acts as the registration point for plugin entrypoint objects. |