Evolution consists of entirely too many small utility libraries, which
increases linking and loading time, places a burden on higher layers of
the application (e.g. modules) which has to remember to link to all the
small in-tree utility libraries, and makes it difficult to generate API
documentation for these utility libraries in one Gtk-Doc module.
Merge the following utility libraries under the umbrella of libeutil,
and enforce a single-include policy on libeutil so we can reorganize
the files as desired without disrupting its pseudo-public API.
libemail-utils/libemail-utils.la
libevolution-utils/libevolution-utils.la
filter/libfilter.la
widgets/e-timezone-dialog/libetimezonedialog.la
widgets/menus/libmenus.la
widgets/misc/libemiscwidgets.la
widgets/table/libetable.la
widgets/text/libetext.la
This also merges libedataserverui from the Evolution-Data-Server module,
since Evolution is its only consumer nowadays, and I'd like to make some
improvements to those APIs without concern for backward-compatibility.
And finally, start a Gtk-Doc module for libeutil. It's going to be a
project just getting all the symbols _listed_ much less _documented_.
But the skeletal structure is in place and I'm off to a good start.
This was a hidden feature to load EPlugins from a custom location by
setting the EVOLUTION_PLUGIN_PATH environment variable. It defaulted
to $HOME/.eplugins, which is in violation of the XDG Base Directory
Specification.
Since I've never ever heard of anyone using this and wasn't even aware
of it myself, rather than migrating the folder to a standard-compliant
location I'm just going to drop support for EVOLUTION_PLUGIN_PATH and
put my money on no one noticing. The EPlugin framework is gradually
being decommissioned anyway in favor of the simpler and more flexible
EExtension framework in Evolution-Data-Server.
- Require all EPlugin and EPluginHook subtypes be registered before
loading plugins. This drastically simplifies the EPlugin/EPluginHook
negotiation.
- Turn most EPluginHook subtypes into GTypeModules and register their
types from an e_module_load() function (does not include shell hooks).
- Convert EPluginLib and the Mono and Python bindings to GTypeModules
and register their types from an e_module_load() function, and kill
EPluginTypeHook.
2009-01-12 Philip Van hoof <philip@codeminded.be>
* e-util/e-plugin.c
* e-util/e-plugin.h
* shell/main.c: EPlugins must be loaded after Bonobo init, else variables
like `session` are not available for plugin's initialization functions.
(Fixes Bug #565681)
svn path=/trunk/; revision=37052
2008-06-06 Matthew Barnes <mbarnes@redhat.com>
** Allow evolution to build with G_DISABLE_SINGLE_INCLUDES and
GTK_DISABLE_SINGLE_INCLUDES defined. (#536637)
svn path=/trunk/; revision=35606
2008-05-22 Matthew Barnes <mbarnes@redhat.com>
* e-util/e-plugin.c:
* e-util/e-plugin.h:
Code cleanup. Also add an "enabled" property to EPlugin.
svn path=/trunk/; revision=35528
2008-05-08 Matthew Barnes <mbarnes@redhat.com>
** Fixes bug #525241 (EPluginUI)
* e-util/Makefile.am:
Add e-plugin-ui.[ch].
* e-util/e-plugin.h (EPluginClass):
Add a "get_symbol" method for extracting arbitrary symbols
from an EPlugin. Implementation of the method is optional.
* e-util/e-plugin.c (e_plugin_get_symbol):
New function invokes the new "get_symbol" EPlugin method.
* e-util/e-plugin.c (epl_get_symbol):
New function implements the new "get_symbol" EPlugin method.
It extracts the given symbol name from the GModule.
* e-util/e-plugin-ui.[ch]:
New EPluginHook subclass that allows plugins to extend menus,
toolbars, and popups that are managed by GtkUIManager instead
of BonoboUI. Should eventually replace EMenu/EPopup.
* shell/main.c (main): Register the EPluginUIHook type.
* composer/e-msg-composer.c (msg_composer_destroy),
(msg_composer_init): Rip out the EMenu logic.
* composer/e-msg-composer.c (msg_composer_init):
Register the GtkUIManager with EPluginUI.
* plugins/face/Makefile.am:
* plugins/face/org-gnome-face-ui.xml:
Remove org-gnome-face-ui.xml (obsolete).
* plugins/face/face.c (e_plugin_ui_init):
Initialization callback for EPluginUI. Adds a "face" action to
the EMsgComposer instance's "composer" action group.
* plugins/face/org-gnome-face.eplug.xml:
Replace the "bonobomenu" hook definition with a new one for
EPluginUI. Include the UI definition inline.
svn path=/trunk/; revision=35485
2008-03-19 Sankar P <psankar@novell.com>
** Fix for bug #496839
* e-plugin.c: (ep_load), (e_plugin_load_plugins),
(e_plugin_get_configure_widget):
* e-plugin.h:
- Implement Plugin Load Levels. You can decide
on which load-level you want your plugin to be loaded.
- Load Levels are mandatory if you need other language loaders
like Mono-Loader or Python-Loader.
- Introduce FLAGS as part of EPlugin. Futuristic.
svn path=/trunk/; revision=35216
2007-12-04 Milan Crha <mcrha@redhat.com>
** Fix for bug #500210
* plugins/plugin-manager/plugin-manager.c: Changed coding-style to be more accurate to other
sources, but the main change was to show configuration options of the
plugin into extra tab, instead of new popup under 'Configure' button.
* e-util/e-plugin.h:
* e-util/e-plugin.c: (e_plugin_configure), (e_plugin_is_configurable),
(epl_configure), (e_plugin_get_configure_widget),
(epl_get_configure_widget): Removed old configure functions,
replaced by get_configure_widget functions, to be able show
plugin configuration in a tab of plugin manager.
svn path=/trunk/; revision=34639
2007-10-26 Sankar P <psankar@novell.com>
** Fix for bug #461272
* plugin-manager.c: (eppm_selection_changed),
(org_gnome_plugin_manager_manage):
Configure button should not be enabled for all.
configure button needs a hot-key.
svn path=/trunk/; revision=34432
2005-05-25 Not Zed <NotZed@Ximian.com>
* e-plugin-mono.[ch]: Removed, these are now implemented as a
plugin.
* e-plugin.c (ep_load_plugin): separate out plugin xml loading
code from the loading loop. If a plugin type doesn't exist, then
save it in a list for later checking.
(ep_load): call above to do the work.
(e_plugin_register_type): check the pending doc list, if any
plugins now have a type, load them.
(e_plugin_type_hook_get_type): a plugin hook for registering new
plugin types ('loaders') at runtime.
svn path=/trunk/; revision=29412
2004-11-03 Not Zed <NotZed@Ximian.com>
* e-plugin.c (e_plugin_list_plugins): added helper api to list all
plugins.
(ep_construct): load authors into new list for them.
(e_plugin_register_type): setup disabled list.
(ep_construct): dont load the hooks if we're not enabled.
(e_plugin_enable): make this a virutal method.
(e_plugin_invoke): if we're disabled, noop.
svn path=/trunk/; revision=27809
2004-10-07 Not Zed <NotZed@Ximian.com>
* e-plugin.c (epl_invoke): noop if we're disabled, and do some
lifecycle stuff now, call e_plugin_lib_enable on the module if it
exists.
svn path=/trunk/; revision=27494
2004-10-07 Not Zed <NotZed@Ximian.com>
* e-config.c (ec_rebuild): show the toplevel notebook if we
had to create one, always.
* e-menu.c (e_menu_add_items): initialise node->menu properly.
* e-plugin.c (ep_load): read/initialise a unique id for all
plugins and track them in a hashtable.
(ep_construct): refactor so we have more control over what
happens. if the hook handling class isn't registered yet, just
note it and keep going.
(e_plugin_hook_new): remove this, its handled internally by above.
svn path=/trunk/; revision=27490