X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=src%2Fgis-plugin.h;h=9913e545f7450668a46e0f8b1a648ba9b18b51d0;hb=f3b5111c3bfb35c470d9db6ff9ea7f3ef3ceb521;hp=26c0519ce40874d70ec3431f8785d6ec0fd7f86e;hpb=6191cb37c36331a119189699d519d84f359d2c9b;p=grits diff --git a/src/gis-plugin.h b/src/gis-plugin.h index 26c0519..9913e54 100644 --- a/src/gis-plugin.h +++ b/src/gis-plugin.h @@ -21,6 +21,9 @@ #include #include +/******************** + * Plugin interface * + ********************/ #define GIS_TYPE_PLUGIN (gis_plugin_get_type()) #define GIS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIS_TYPE_PLUGIN, GisPlugin)) #define GIS_IS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIS_TYPE_PLUGIN)) @@ -28,7 +31,6 @@ typedef struct _GisPlugin GisPlugin; typedef struct _GisPluginInterface GisPluginInterface; -typedef struct _GisPlugins GisPlugins; struct _GisPluginInterface { @@ -39,30 +41,44 @@ struct _GisPluginInterface const gchar *description; /* Virtual functions */ - GtkWidget *(*get_config)(GisPlugin *self); + GtkWidget *(*get_config)(GisPlugin *plugin); }; GType gis_plugin_get_type(); /* Methods */ -const gchar *gis_plugin_get_name(GisPlugin *self); +const gchar *gis_plugin_get_name(GisPlugin *plugin); -const gchar *gis_plugin_get_description(GisPlugin *self); +const gchar *gis_plugin_get_description(GisPlugin *plugin); -GtkWidget *gis_plugin_get_config(GisPlugin *self); +GtkWidget *gis_plugin_get_config(GisPlugin *plugin); + +/*************** + * Plugins API * + ***************/ +typedef struct _GisPlugins GisPlugins; -/* Plugins API */ #include "gis-viewer.h" #include "gis-prefs.h" +/** + * GisPluginConstructor: + * @viewer: the viewer the plugin is associated with + * @prefs: preferences the plugin can use for storing informtion + * + * Create a new instance of a plugin. Each plugin should supply a constructor named + * gis_plugin_NAME_new in it's shared object. + * + * Returns: the new plugin + */ +typedef GisPlugin *(*GisPluginConstructor)(GisViewer *viewer, GisPrefs *prefs); + struct _GisPlugins { gchar *dir; GList *plugins; GisPrefs *prefs; }; -typedef GisPlugin *(*GisPluginConstructor)(GisViewer *viewer, GisPrefs *prefs); - GisPlugins *gis_plugins_new(const gchar *dir, GisPrefs *prefs); void gis_plugins_free(); @@ -72,13 +88,13 @@ GList *gis_plugins_available(GisPlugins *plugins); GisPlugin *gis_plugins_load(GisPlugins *plugins, const char *name, GisViewer *viewer, GisPrefs *prefs); -GisPlugin *gis_plugins_enable(GisPlugins *self, const char *name, +GisPlugin *gis_plugins_enable(GisPlugins *plugins, const char *name, GisViewer *viewer, GisPrefs *prefs); -GList *gis_plugins_load_enabled(GisPlugins *self, +GList *gis_plugins_load_enabled(GisPlugins *plugins, GisViewer *viewer, GisPrefs *prefs); -gboolean gis_plugins_disable(GisPlugins *self, const char *name); +gboolean gis_plugins_disable(GisPlugins *plugins, const char *name); gboolean gis_plugins_unload(GisPlugins *plugins, const char *name);