X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fgis-plugin.h;h=fc85f444dc481781d955957198be2ad692f1f41b;hp=7fd75a7b134bbce4abc1fab8d4e3334c01efb2cb;hb=b87064909e6d20e1ee2995adae0c1ce5cb692d7e;hpb=ac7156bd84aef88b712f117f7e2f3d847d371719 diff --git a/src/gis-plugin.h b/src/gis-plugin.h index 7fd75a7..fc85f44 100644 --- a/src/gis-plugin.h +++ b/src/gis-plugin.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Andy Spencer + * Copyright (C) 2009-2010 Andy Spencer * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,42 +28,61 @@ typedef struct _GisPlugin GisPlugin; typedef struct _GisPluginInterface GisPluginInterface; -typedef struct _GisPlugins GisPlugins; struct _GisPluginInterface { GTypeInterface parent_iface; + /* Virtual data */ + const gchar *name; + const gchar *description; + /* Virtual functions */ - void (*expose )(GisPlugin *self); - GtkWidget *(*get_config)(GisPlugin *self); + GtkWidget *(*get_config)(GisPlugin *plugin); }; GType gis_plugin_get_type(); /* Methods */ -void gis_plugin_expose(GisPlugin *self); -GtkWidget *gis_plugin_get_config(GisPlugin *self); +const gchar *gis_plugin_get_name(GisPlugin *plugin); + +const gchar *gis_plugin_get_description(GisPlugin *plugin); + +GtkWidget *gis_plugin_get_config(GisPlugin *plugin); /* Plugins API */ -#include "gis-world.h" -#include "gis-view.h" -#include "gis-opengl.h" +typedef struct _GisPlugins GisPlugins; + +#include "gis-viewer.h" #include "gis-prefs.h" +typedef GisPlugin *(*GisPluginConstructor)(GisViewer *viewer, GisPrefs *prefs); + struct _GisPlugins { - gchar *dir; - GPtrArray *plugins; + gchar *dir; + GList *plugins; + GisPrefs *prefs; }; -typedef GisPlugin *(*GisPluginConstructor)(GisWorld *world, GisView *view, GisOpenGL *opengl, GisPrefs *prefs); +GisPlugins *gis_plugins_new(const gchar *dir, GisPrefs *prefs); + +void gis_plugins_free(); + +GList *gis_plugins_available(GisPlugins *plugins); + +GisPlugin *gis_plugins_load(GisPlugins *plugins, const char *name, + GisViewer *viewer, GisPrefs *prefs); + +GisPlugin *gis_plugins_enable(GisPlugins *plugins, const char *name, + GisViewer *viewer, GisPrefs *prefs); + +GList *gis_plugins_load_enabled(GisPlugins *plugins, + GisViewer *viewer, GisPrefs *prefs); + +gboolean gis_plugins_disable(GisPlugins *plugins, const char *name); + +gboolean gis_plugins_unload(GisPlugins *plugins, const char *name); -GisPlugins *gis_plugins_new(gchar *dir); -void gis_plugins_free(); -GList *gis_plugins_available(GisPlugins *plugins); -GisPlugin *gis_plugins_load(GisPlugins *plugins, const char *name, - GisWorld *world, GisView *view, GisOpenGL *opengl, GisPrefs *prefs); -gboolean gis_plugins_unload(GisPlugins *plugins, const char *name); -void gis_plugins_foreach(GisPlugins *plugins, GCallback callback, gpointer user_data); +void gis_plugins_foreach(GisPlugins *plugins, GCallback callback, gpointer user_data); #endif