Commit Graph

19 Commits

Author SHA1 Message Date
ce3d24ef62 Add a priority field for mail formatter and parser extensions.
Add a priority field to EMailFormatterExtension and EMailParserExtension
class structs.  Extension classes can then explicitly specify a priority
with respect to other extension classes with the same MIME type, so that
the order of extension registration doesn't matter.

Priority field defaults to G_PRIORITY_DEFAULT.  Built-in formatters and
extensions will use G_PRIORITY_LOW.  We can get more sophisticated with
priority values if we need to, but this should suffice for now.
2013-02-01 09:36:45 -05:00
9a0b1266b5 Teach EMailExtensionRegistry to find extensions.
Restore this commit with a proper bug fix to follow.
2013-02-01 08:44:50 -05:00
57adde4be6 Revert "Teach EMailExtensionRegistry to find extensions."
This reverts commit bf30024dd7, because
it breaks EMailFormatter/Parser extensions, like the prefer-plain.
The thing is that the internal formatters/parsers (also extensions)
should be always added first, and only after then can be added extended
extensions, which are used before those internal. This constraint was not
satisfied with the reverted commit, the order of extension registration
was unpredictable, depended on GType.
2013-01-29 16:31:58 +01:00
b1ed35f70d Coding style and whitespace cleanup. 2013-01-10 11:20:32 -05:00
d09d8de870 Consolidate base utility libraries into libeutil.
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.
2012-12-12 14:33:43 -05:00
8a1eb1f24e Use the same certificate-viewer as the trust-prompt from eds
This way it'll be possible to copy whole files if change in one
of them will be done. A real code reuse, rather than copy, would be
ideal, but the trust-prompt is just a module for evolution-user-prompter.
2012-12-11 19:48:07 +01:00
bf30024dd7 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().
2012-12-07 17:40:28 -05:00
d9699159f0 EMailFormatterExtension: Convert get_description() to a string field.
Of the formatter extensions that provide a description, they all use a
static string.  So we don't need an instance of the extension to obtain
its description.  Just make it a string field in the class structure.
2012-12-07 14:01:05 -05:00
7885426c2b EMailFormatterExtension: Convert get_display_name() to a string field.
Of the formatter extensions that provide a display name, they all use a
static string.  So we don't need an instance of the extension to obtain
its display name.  Just make it a string field in the class structure.
2012-12-07 14:01:05 -05:00
00b211b0f5 Convert EMailFormatterExtension to an abstract class.
With the previous changes, all formatter extensions derive from
GObjectClass and implement the EMailFormatterExtensionInterface.

Simplify things further by making EMailFormatterExtension an abstract
base class so formatter extensions are now just direct subclasses and
need not bother with implementing GObject interfaces.
2012-12-07 14:01:05 -05:00
54455ca1ad Remove EMailExtension.
EMailExtension is now too trivial to keep as a standalone interface.
Add a 'mime_types' string array to the EMailFormatterExtension and
EMailFormatterParser interface structs.

Alter e_mail_extension_registry_add_extension() to take a 'mime_types'
string array and the GType of an extension to instantiate, rather than
the extension instance directly.

e_mail_extension_registry_remove_extension() is no longer needed.
2012-12-07 14:01:05 -05:00
9d34f72ec1 EMailExtension: Replace mime_types() method with a string array.
In all implementations for EMailExtension, the MIME type list is a
static string array -- with the single exception of the text-highlight
module, where the MIME type list is dynamically assembled once.

Replace the mime_types() method with a "mime_types" string array in the
EMailExtensionInterface struct.  Then the list of MIME types supported
by the class implementing the EMailExtensionInterface can be obtained
without requiring an instance of the class.
2012-12-07 14:01:04 -05:00
abdefcaa26 Bug #687670 - Signing with both pgp and S/MIME shows only one signature 2012-11-21 17:57:07 +01:00
2c4ae5e768 Coding style and whitespace cleanup. 2012-11-10 15:54:43 -05:00
d655d5889c Bug #683663 - Attachment bar missing when showing 'All Message Headers' 2012-09-11 16:19:00 +02:00
c85109fc32 Coding style and whitespace cleanup. 2012-08-19 14:17:55 -04:00
cc8bf823ec Coding style and whitespace cleanup. 2012-06-24 20:31:43 -04:00
f960fd2dff Reduce usage of g_type_class_peek_parent().
G_DEFINE_TYPE macros define a static "parent_class" variable.
2012-06-24 20:31:42 -04:00
5b8340563c Mail formatter rewrite
All mail-parsing and formatting code has been moved to em-format.
Parsing is handeled by EMailParser class, formatting by EMailFormatter.
Both classes have registry which hold extensions - simple classes
that do actual parsing and formatting. Each supported mime-type
has it's own parser and formatter extension class.
2012-06-06 15:27:19 +02:00