The EPlugin base class
is an abstract class which provides the basic services for plugin
implementations. The main services are:
- Resolve plugin type and instantiate an EPlugin
object to represent and manage it.
- Load the base structure of the XML plugin
definition files.
- Resolve plugin hook types and instantiate a
EPluginHook to represent and manage it.
- Provide a simple, language-independent api for
invoking plugin callbacks
- Provide I18N context for plugins.
- Some simple static helper methods to simplify each
implementing class.
See the Chapter 8,
EPlugin
for
these details.
1.1. Definition of a Plugin
The base plugin XML definition. Subclasses of EPlugin extend this
basic structure with additional parameters or elements as they
require.
Note that there may be any number of e-plugin
elements in a given plugin file, this may be used to simplify
distribution of plugin packages.
<?xml version="1.0">
<e-plugin-list>
<e-plugin
id="unique id"
type="loader type"
domain="translation domain" ?
name="plugin name"
...>
<description>long description</description> ?
<hook
class="hook class"
...>
...
</hook> +
</e-plugin> +
</e-plugin-list>- id
-
A unique string identifying this plugin. By convention this
will follow the java-like class namespace system.
e.g. com.ximian.evolution.test-plugin
- type
-
The type name of the plugin loader. Currently shlib and mono are the only
supported values. If no known handler is registered for this
type, the plugin definition is silently ignored.
- domain
-
The translation domain for this plugin, as passed to the
dcgettext call of the gettext package.
If not supplied then the default application domain is used
(i.e. "evolution"). This is used to translate
translatable strings for display.
- name
-
A short name for the plugin. "Bob's Wonder
Extender" might be suitable. This value will be
translated.
- description
-
A longer description of the plugin's purpose. This value will be
translated.
- hook
This is a list of all of the hooks that this plugin wishes to
hook into. See the Plugin
Hooks section for the details of the basic hook
types defined.
The hook class is resolved using the
registered hook types, and if none can be found, or a version
mismatch occurs, then the hook is silently ignored.