1 /* 2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client 3 * Copyright (C) 2002-2015 the Claws Mail Team 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 #ifndef PLUGIN_H 20 #define PLUGIN_H 1 21 22 #include <glib.h> 23 24 typedef struct _Plugin Plugin; 25 26 typedef enum { 27 PLUGIN_NOTHING, 28 PLUGIN_MIMEVIEWER, 29 PLUGIN_MIMEPARSER, 30 PLUGIN_FOLDERCLASS, 31 PLUGIN_FILTERING, 32 PLUGIN_PRIVACY, 33 PLUGIN_NOTIFIER, 34 PLUGIN_UTILITY, 35 PLUGIN_OTHER 36 } PluginFeatureType; 37 38 struct PluginFeature { 39 PluginFeatureType type; 40 const gchar *subtype; 41 }; 42 43 /* Functions to implement by the plugin */ 44 gint plugin_init (gchar **error); 45 gboolean plugin_done (void); 46 const gchar *plugin_name (void); 47 const gchar *plugin_desc (void); 48 const gchar *plugin_version (void); 49 struct PluginFeature *plugin_provides (void); 50 const gchar *plugin_type (void); 51 const gchar *plugin_licence (void); 52 53 /* Functions by the Claws Mail plugin system */ 54 Plugin *plugin_load (const gchar *filename, 55 gchar **error); 56 void plugin_unload (Plugin *plugin); 57 void plugin_load_all (const gchar *type); 58 void plugin_unload_all (const gchar *type); 59 void plugin_save_list (void); 60 void plugin_load_standard_plugins (void); 61 62 GSList *plugin_get_list (void); 63 GSList *plugin_get_unloaded_list(void); 64 const gchar *plugin_get_name (Plugin *plugin); 65 const gchar *plugin_get_desc (Plugin *plugin); 66 const gchar *plugin_get_version (Plugin *plugin); 67 const gchar *plugin_get_error (Plugin *plugin); 68 Plugin *plugin_get_loaded_by_name(const gchar *name); 69 gint check_plugin_version (guint32 minimum_claws_version, 70 guint32 compiled_claws_version, 71 const gchar *plugin_name, 72 gchar **error); 73 #endif 74