00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _HERAIA_PLUGIN_H_
00026 #define _HERAIA_PLUGIN_H_
00027
00028
00029
00030
00031
00032
00033 #define HERAIA_PLUGIN_API_VERSION 1
00034
00038 typedef enum
00039 {
00040 HERAIA_PLUGIN_UNKNOWN = -1,
00041 HERAIA_PLUGIN_FILTER = 0,
00042 HERAIA_PLUGIN_ACTION = 1,
00043
00044 } PluginType;
00045
00049 typedef enum
00050 {
00051 PLUGIN_STATE_RUNNING,
00052 PLUGIN_STATE_INITIALIZING,
00053 PLUGIN_STATE_LOADED,
00054 PLUGIN_STATE_NEW,
00055 PLUGIN_STATE_EXITING,
00056 PLUGIN_STATE_NONE,
00057 } PluginState;
00058
00059
00060 typedef void (* InitProc) (heraia_window_t *);
00061 typedef void (* QuitProc) (void);
00062 typedef void (* RunProc) (GtkWidget *, gpointer);
00063 typedef void (* RefreshProc) (heraia_window_t *, void *);
00064
00065
00066
00070 typedef int PluginPriority;
00071 #define HERAIA_PRIORITY_DEFAULT 0
00072 #define HERAIA_PRIORITY_HIGHEST 9999
00073 #define HERAIA_PRIORITY_LOWEST -9999
00074
00075
00080
00081 typedef gboolean (* ImportFunction) (const gchar *filename, void *user_data);
00082
00083
00084 typedef gboolean (* ExportFunction) (const gchar *filename, void *user_data);
00085
00086
00087
00088
00089
00090
00091 typedef struct
00092 {
00093 char *extensions;
00094
00095 ImportFunction import;
00096 ExportFunction export;
00097 } plugin_filter_t;
00098
00099
00103 typedef struct
00104 {
00105 unsigned int api_version;
00106 PluginType type;
00107 PluginPriority priority;
00108 unsigned int id;
00109
00110 char *name;
00111 char *version;
00112 char *summary;
00113 char *description;
00114 char *author;
00115 char *homepage;
00116
00117 } plugin_info_t;
00118
00122 typedef struct
00123 {
00124 PluginState state;
00125 GModule *handle;
00126 char *path;
00127 char *filename;
00128 plugin_info_t *info;
00129 plugin_filter_t *filter;
00130 char *error;
00131 void *extra;
00132
00133
00134 InitProc init_proc;
00135
00136 QuitProc quit_proc;
00137
00138 RunProc run_proc;
00139
00140 RefreshProc refresh_proc;
00141
00142 GtkCheckMenuItem *cmi_entry;
00143 GladeXML *xml;
00144 window_prop_t *win_prop;
00145
00146 } heraia_plugin_t;
00147
00148
00149
00150
00151
00152
00153 extern gboolean plugin_capable(void);
00154 extern heraia_plugin_t *new_plugin(void);
00155 extern void free_plugin(heraia_plugin_t *plugin);
00156 extern void load_plugins(heraia_window_t *main_window);
00157 extern void add_entry_to_plugins_menu(heraia_window_t *main_window, heraia_plugin_t *plugin);
00158 extern heraia_plugin_t *find_plugin_by_name(GList *plugins_list, gchar *name);
00159 extern gboolean load_plugin_glade_xml(heraia_window_t *main_window, heraia_plugin_t *plugin);
00160 extern void show_hide_widget(GtkWidget *widget, gboolean show, window_prop_t *win_prop);
00161 extern void refresh_all_plugins(heraia_window_t *main_window);
00162
00163 #endif