From 32f545cdf031ebe3718791f18e8fb6b6141fd081 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 28 Aug 2009 20:21:54 -0400 Subject: 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. --- modules/plugin-mono/Evolution.cs | 158 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 modules/plugin-mono/Evolution.cs (limited to 'modules/plugin-mono/Evolution.cs') diff --git a/modules/plugin-mono/Evolution.cs b/modules/plugin-mono/Evolution.cs new file mode 100644 index 0000000000..0db54405b3 --- /dev/null +++ b/modules/plugin-mono/Evolution.cs @@ -0,0 +1,158 @@ +using System; +using System.Runtime.InteropServices; +using System.Reflection; + +using Camel; + +namespace Evolution { + [StructLayout (LayoutKind.Sequential)] + public class PopupTarget { + public IntPtr popup; + public IntPtr widget; + public int type; + public int mask; + }; + + [StructLayout (LayoutKind.Sequential)] + public class MenuTarget { + public IntPtr menu; + public IntPtr widget; + public int type; + public int mask; + }; + + [StructLayout (LayoutKind.Sequential)] + public class EventTarget { + public IntPtr aevent; + public int type; + public int mask; + }; +}; + +namespace Evolution { + public class Error { + // can we marshal varags from c#? + [DllImport("eutil")] static extern int e_error_run(IntPtr parent, string tag, IntPtr end); + [DllImport("eutil")] static extern int e_error_run(IntPtr parent, string tag, string arg0, IntPtr end); + [DllImport("eutil")] static extern int e_error_run(IntPtr parent, string tag, string arg0, string arg1, IntPtr end); + [DllImport("eutil")] static extern int e_error_run(IntPtr parent, string tag, string arg0, string arg1, string arg2, IntPtr end); + + public static int run(IntPtr parent, string tag) { + return e_error_run(parent, tag, (IntPtr)0); + } + public static int run(IntPtr parent, string tag, string arg0) { + return e_error_run(parent, tag, arg0, (IntPtr)0); + } + public static int run(IntPtr parent, string tag, string arg0, string arg1) { + return e_error_run(parent, tag, arg0, arg1, (IntPtr)0); + } + public static int run(IntPtr parent, string tag, string arg0, string arg1, string arg2) { + return e_error_run(parent, tag, arg0, arg1, arg2, (IntPtr)0); + } + } +} + +namespace Evolution.Mail { + /* ********************************************************************** */ + [StructLayout (LayoutKind.Sequential)] + public class PopupTargetSelect : PopupTarget { + public IntPtr _folder; + public string uri; + public IntPtr _uids; + + public static PopupTargetSelect get(IntPtr o) { + return (PopupTargetSelect)Marshal.PtrToStructure(o, typeof(PopupTargetSelect)); + } + + public Camel.Folder folder { + get { return (Camel.Folder)Camel.Object.fromCamel(_folder); } + } + + public string [] uids { + get { return Camel.Util.getUIDArray(_uids); } + } + } + + [StructLayout (LayoutKind.Sequential)] + public class PopupTargetURI : Evolution.PopupTarget { + public string uri; + + public static PopupTargetURI get(IntPtr o) { + return (PopupTargetURI)Marshal.PtrToStructure(o, typeof(PopupTargetURI)); + } + } + + [StructLayout (LayoutKind.Sequential)] + public class PopupTargetPart : PopupTarget { + public string mimeType; + public IntPtr _part; + + public static PopupTargetPart get(IntPtr o) { + return (PopupTargetPart)Marshal.PtrToStructure(o, typeof(PopupTargetPart)); + } + + public Camel.Object part { + get { return (Camel.Object)Camel.Object.fromCamel(_part); } + } + } + + [StructLayout (LayoutKind.Sequential)] + public struct PopupTargetFolder { + public Evolution.PopupTarget target; + public string uri; + + public static PopupTargetFolder get(IntPtr o) { + return (PopupTargetFolder)Marshal.PtrToStructure(o, typeof(PopupTargetFolder)); + } + } + + /* ********************************************************************** */ + [StructLayout (LayoutKind.Sequential)] + public class MenuTargetSelect : MenuTarget { + public IntPtr _folder; + public string uri; + public IntPtr _uids; + + public static MenuTargetSelect get(IntPtr o) { + return (MenuTargetSelect)Marshal.PtrToStructure(o, typeof(MenuTargetSelect)); + } + + public Camel.Folder folder { + get { return (Camel.Folder)Camel.Object.fromCamel(_folder); } + } + + public string [] uids { + get { return Camel.Util.getUIDArray(_uids); } + } + } + + /* ********************************************************************** */ + [StructLayout (LayoutKind.Sequential)] + public class EventTargetFolder : EventTarget { + public string uri; + + public static EventTargetFolder get(IntPtr o) { + return (EventTargetFolder)Marshal.PtrToStructure(o, typeof(EventTargetFolder)); + } + } + + [StructLayout (LayoutKind.Sequential)] + public class EventTargetMessage : EventTarget { + public IntPtr _folder; + public string uid; + public IntPtr _message; + + public static EventTargetMessage get(IntPtr o) { + return (EventTargetMessage)Marshal.PtrToStructure(o, typeof(EventTargetMessage)); + } + + public Camel.Folder folder { + get { return (Camel.Folder)Camel.Object.fromCamel(_folder); } + } + + public Camel.MimeMessage message { + get { return (Camel.MimeMessage)Camel.Object.fromCamel(_message); } + } + + } +}; -- cgit