diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2009-08-29 08:21:54 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2009-08-30 05:23:20 +0800 |
commit | 32f545cdf031ebe3718791f18e8fb6b6141fd081 (patch) | |
tree | 980723161c32da855ca91b135318d7fa67dc18c7 /modules/addressbook | |
parent | e8382099228d46ebef684c5384bab6ec710283ce (diff) | |
download | gsoc2013-evolution-32f545cdf031ebe3718791f18e8fb6b6141fd081.tar.gz gsoc2013-evolution-32f545cdf031ebe3718791f18e8fb6b6141fd081.tar.zst gsoc2013-evolution-32f545cdf031ebe3718791f18e8fb6b6141fd081.zip |
Simplify EPlugin loading at startup.
- 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.
Diffstat (limited to 'modules/addressbook')
-rw-r--r-- | modules/addressbook/Makefile.am | 2 | ||||
-rw-r--r-- | modules/addressbook/e-book-config-hook.c | 67 | ||||
-rw-r--r-- | modules/addressbook/e-book-config-hook.h | 33 | ||||
-rw-r--r-- | modules/addressbook/e-book-shell-backend.c | 3 | ||||
-rw-r--r-- | modules/addressbook/evolution-module-addressbook.c | 4 |
5 files changed, 106 insertions, 3 deletions
diff --git a/modules/addressbook/Makefile.am b/modules/addressbook/Makefile.am index 5ba744dee6..05b169841e 100644 --- a/modules/addressbook/Makefile.am +++ b/modules/addressbook/Makefile.am @@ -34,6 +34,8 @@ libevolution_module_addressbook_la_SOURCES = \ autocompletion-config.h \ eab-composer-util.c \ eab-composer-util.h \ + e-book-config-hook.c \ + e-book-config-hook.h \ e-book-shell-backend.c \ e-book-shell-backend.h \ e-book-shell-content.c \ diff --git a/modules/addressbook/e-book-config-hook.c b/modules/addressbook/e-book-config-hook.c new file mode 100644 index 0000000000..d8c03a5329 --- /dev/null +++ b/modules/addressbook/e-book-config-hook.c @@ -0,0 +1,67 @@ +/* + * e-book-config-hook.c + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the program; if not, see <http://www.gnu.org/licenses/> + * + * + * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) + * + */ + +#include "e-book-config-hook.h" + +#include "e-util/e-config.h" +#include "addressbook/gui/widgets/eab-config.h" + +static const EConfigHookTargetMask no_masks[] = { + { NULL } +}; + +static const EConfigHookTargetMap targets[] = { + { "source", EAB_CONFIG_TARGET_SOURCE, no_masks }, + { NULL } +}; + +static void +book_config_hook_class_init (EPluginHookClass *class) +{ + gint ii; + + class->id = "org.gnome.evolution.addressbook.config:1.0"; + + for (ii = 0; targets[ii].type != NULL; ii++) + e_config_hook_class_add_target_map ( + (EConfigHookClass *) class, &targets[ii]); +} + +void +e_book_config_hook_register_type (GTypeModule *type_module) +{ + const GTypeInfo type_info = { + sizeof (EConfigHookClass), + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) book_config_hook_class_init, + (GClassFinalizeFunc) NULL, + NULL, /* class_data */ + sizeof (EConfigHook), + 0, /* n_preallocs */ + (GInstanceInitFunc) NULL, + NULL /* value_table */ + }; + + g_type_module_register_type ( + type_module, e_config_hook_get_type (), + "EBookConfigHook", &type_info, 0); +} diff --git a/modules/addressbook/e-book-config-hook.h b/modules/addressbook/e-book-config-hook.h new file mode 100644 index 0000000000..a5d9e06457 --- /dev/null +++ b/modules/addressbook/e-book-config-hook.h @@ -0,0 +1,33 @@ +/* + * e-book-config-hook.h + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the program; if not, see <http://www.gnu.org/licenses/> + * + * + * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) + * + */ + +#ifndef E_BOOK_CONFIG_HOOK_H +#define E_BOOK_CONFIG_HOOK_H + +#include <glib-object.h> + +G_BEGIN_DECLS + +void e_book_config_hook_register_type (GTypeModule *type_module); + +G_END_DECLS + +#endif /* E_BOOK_CONFIG_HOOK_H */ diff --git a/modules/addressbook/e-book-shell-backend.c b/modules/addressbook/e-book-shell-backend.c index 87ac638822..f96cb0dd22 100644 --- a/modules/addressbook/e-book-shell-backend.c +++ b/modules/addressbook/e-book-shell-backend.c @@ -39,7 +39,6 @@ #include "addressbook/gui/contact-list-editor/e-contact-list-editor.h" #include "addressbook/importers/evolution-addressbook-importers.h" -#include "eab-config.h" #include "addressbook-config.h" #include "autocompletion-config.h" @@ -498,8 +497,6 @@ book_shell_backend_constructed (GObject *object) book_shell_backend_init_importers (); book_shell_backend_ensure_sources (shell_backend); - e_plugin_hook_register_type (eab_config_get_type ()); - g_signal_connect_swapped ( shell, "handle-uri", G_CALLBACK (book_shell_backend_handle_uri_cb), diff --git a/modules/addressbook/evolution-module-addressbook.c b/modules/addressbook/evolution-module-addressbook.c index 3089133e43..73b3634b91 100644 --- a/modules/addressbook/evolution-module-addressbook.c +++ b/modules/addressbook/evolution-module-addressbook.c @@ -19,6 +19,8 @@ * */ +#include "e-book-config-hook.h" + #include "e-book-shell-backend.h" #include "e-book-shell-content.h" #include "e-book-shell-sidebar.h" @@ -33,6 +35,8 @@ e_module_load (GTypeModule *type_module) { /* Register dynamically loaded types. */ + e_book_config_hook_register_type (type_module); + e_book_shell_backend_register_type (type_module); e_book_shell_content_register_type (type_module); e_book_shell_sidebar_register_type (type_module); |