From bf30024dd7973006bf99d0ae509a7f0022368a41 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 7 Dec 2012 16:30:18 -0500 Subject: Teach EMailExtensionRegistry to find extensions. Now we have the following extension points in the GType hierarchy: E_TYPE_MAIL_FORMATTER_EXTENSION E_TYPE_MAIL_FORMATTER_PRINT_EXTENSION E_TYPE_MAIL_FORMATTER_QUOTE_EXTENSION E_TYPE_MAIL_PARSER_EXTENSION A registry just needs to be given one of these extension points, and it can use g_type_children() to find and load all registered extensions. This eliminates e-mail-format-extensions.[ch] as well as the dynamic loaders I added a few commits back. Dynamically loaded extensions are now easier to register, at the cost of internal extensions being a tad more cumbersome to register. Fair tradeoff, imo. This also makes e_mail_extension_registry_add_extension() a private function used only by e_mail_formatter_extension_registry_load() and e_mail_parser_extension_registry_load(). --- .../audio-inline/e-mail-formatter-audio-inline.c | 41 ---------------------- modules/audio-inline/e-mail-parser-audio-inline.c | 41 ---------------------- 2 files changed, 82 deletions(-) (limited to 'modules/audio-inline') diff --git a/modules/audio-inline/e-mail-formatter-audio-inline.c b/modules/audio-inline/e-mail-formatter-audio-inline.c index 4520e377b6..cf31f1596d 100644 --- a/modules/audio-inline/e-mail-formatter-audio-inline.c +++ b/modules/audio-inline/e-mail-formatter-audio-inline.c @@ -45,18 +45,12 @@ typedef EExtension EMailFormatterAudioInlineLoader; typedef EExtensionClass EMailFormatterAudioInlineLoaderClass; GType e_mail_formatter_audio_inline_get_type (void); -GType e_mail_formatter_audio_inline_loader_get_type (void); G_DEFINE_DYNAMIC_TYPE ( EMailFormatterAudioInline, e_mail_formatter_audio_inline, E_TYPE_MAIL_FORMATTER_EXTENSION) -G_DEFINE_DYNAMIC_TYPE ( - EMailFormatterAudioInlineLoader, - e_mail_formatter_audio_inline_loader, - E_TYPE_EXTENSION) - static const gchar *formatter_mime_types[] = { "application/vnd.evolution.widget.audio-inline", "audio/ac3", @@ -331,44 +325,9 @@ e_mail_formatter_audio_inline_init (EMailFormatterExtension *extension) { } -static void -mail_formatter_audio_inline_loader_constructed (GObject *object) -{ - EExtensible *extensible; - - extensible = e_extension_get_extensible (E_EXTENSION (object)); - - e_mail_extension_registry_add_extension ( - E_MAIL_EXTENSION_REGISTRY (extensible), - formatter_mime_types, - e_mail_formatter_audio_inline_get_type ()); -} - -static void -e_mail_formatter_audio_inline_loader_class_init (EExtensionClass *class) -{ - GObjectClass *object_class; - - object_class = G_OBJECT_CLASS (class); - object_class->constructed = mail_formatter_audio_inline_loader_constructed; - - class->extensible_type = E_TYPE_MAIL_FORMATTER_EXTENSION_REGISTRY; -} - -static void -e_mail_formatter_audio_inline_loader_class_finalize (EExtensionClass *class) -{ -} - -static void -e_mail_formatter_audio_inline_loader_init (EExtension *extension) -{ -} - void e_mail_formatter_audio_inline_type_register (GTypeModule *type_module) { e_mail_formatter_audio_inline_register_type (type_module); - e_mail_formatter_audio_inline_loader_register_type (type_module); } diff --git a/modules/audio-inline/e-mail-parser-audio-inline.c b/modules/audio-inline/e-mail-parser-audio-inline.c index a4ef834e1e..1ebbf905ba 100644 --- a/modules/audio-inline/e-mail-parser-audio-inline.c +++ b/modules/audio-inline/e-mail-parser-audio-inline.c @@ -45,18 +45,12 @@ typedef EExtension EMailParserAudioInlineLoader; typedef EExtensionClass EMailParserAudioInlineLoaderClass; GType e_mail_parser_audio_inline_get_type (void); -GType e_mail_parser_audio_inline_loader_get_type (void); G_DEFINE_DYNAMIC_TYPE ( EMailParserAudioInline, e_mail_parser_audio_inline, E_TYPE_MAIL_PARSER_EXTENSION) -G_DEFINE_DYNAMIC_TYPE ( - EMailParserAudioInlineLoader, - e_mail_parser_audio_inline_loader, - E_TYPE_EXTENSION) - static const gchar *parser_mime_types[] = { "audio/ac3", "audio/x-ac3", @@ -164,44 +158,9 @@ e_mail_parser_audio_inline_init (EMailParserExtension *extension) { } -static void -mail_parser_audio_inline_loader_constructed (GObject *object) -{ - EExtensible *extensible; - - extensible = e_extension_get_extensible (E_EXTENSION (object)); - - e_mail_extension_registry_add_extension ( - E_MAIL_EXTENSION_REGISTRY (extensible), - parser_mime_types, - e_mail_parser_audio_inline_get_type ()); -} - -static void -e_mail_parser_audio_inline_loader_class_init (EExtensionClass *class) -{ - GObjectClass *object_class; - - object_class = G_OBJECT_CLASS (class); - object_class->constructed = mail_parser_audio_inline_loader_constructed; - - class->extensible_type = E_TYPE_MAIL_PARSER_EXTENSION_REGISTRY; -} - -static void -e_mail_parser_audio_inline_loader_class_finalize (EExtensionClass *class) -{ -} - -static void -e_mail_parser_audio_inline_loader_init (EExtension *extension) -{ -} - void e_mail_parser_audio_inline_type_register (GTypeModule *type_module) { e_mail_parser_audio_inline_register_type (type_module); - e_mail_parser_audio_inline_loader_register_type (type_module); } -- cgit v1.2.3