X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/a8d46e0bcb88cd8d62a974d0a7f393c4dcf0326f..a45242c2ec95f1d69d9943a438b46c8d27dd5028:/src/datasource_gc.c?ds=sidebyside diff --git a/src/datasource_gc.c b/src/datasource_gc.c index 59da496f..7035f0a8 100644 --- a/src/datasource_gc.c +++ b/src/datasource_gc.c @@ -18,6 +18,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ +#include "config.h" +#ifdef VIK_CONFIG_GEOCACHES #include #include "viking.h" @@ -31,9 +33,10 @@ typedef struct { } datasource_gc_widgets_t; -static gpointer datasource_gc_add_widgets ( GtkWidget *dialog, VikViewport *vvp ); +static gpointer datasource_gc_init ( ); +static void datasource_gc_add_setup_widgets ( GtkWidget *dialog, VikViewport *vvp, gpointer user_data ); static void datasource_gc_get_cmd_string ( datasource_gc_widgets_t *widgets, gchar **cmd, gchar **input_type ); -static void datasource_gc_first_cleanup ( gpointer data ); +static void datasource_gc_cleanup ( gpointer data ); static gchar *datasource_gc_check_existence (); VikDataSourceInterface vik_datasource_gc_interface = { @@ -41,15 +44,21 @@ VikDataSourceInterface vik_datasource_gc_interface = { "Geocaching.com Caches", VIK_DATASOURCE_SHELL_CMD, VIK_DATASOURCE_ADDTOLAYER, + (VikDataSourceInitFunc) datasource_gc_init, (VikDataSourceCheckExistenceFunc) datasource_gc_check_existence, - (VikDataSourceAddWidgetsFunc) datasource_gc_add_widgets, + (VikDataSourceAddSetupWidgetsFunc) datasource_gc_add_setup_widgets, (VikDataSourceGetCmdStringFunc) datasource_gc_get_cmd_string, - (VikDataSourceFirstCleanupFunc) datasource_gc_first_cleanup, (VikDataSourceProgressFunc) NULL, (VikDataSourceAddProgressWidgetsFunc) NULL, - (VikDataSourceCleanupFunc) NULL + (VikDataSourceCleanupFunc) datasource_gc_cleanup }; +static gpointer datasource_gc_init ( ) +{ + datasource_gc_widgets_t *widgets = g_malloc(sizeof(*widgets)); + return widgets; +} + static gchar *datasource_gc_check_existence () { gchar *gcget_location = g_find_program_in_path("gcget"); @@ -60,9 +69,9 @@ static gchar *datasource_gc_check_existence () return g_strdup("Can't find gcget in path! Check that you have installed gcget correctly."); } -static gpointer datasource_gc_add_widgets ( GtkWidget *dialog, VikViewport *vvp ) +static void datasource_gc_add_setup_widgets ( GtkWidget *dialog, VikViewport *vvp, gpointer user_data ) { - datasource_gc_widgets_t *widgets = g_malloc(sizeof(*widgets)); + datasource_gc_widgets_t *widgets = (datasource_gc_widgets_t *)user_data; GtkWidget *num_label, *center_label; struct LatLon ll; gchar *s_ll; @@ -82,7 +91,6 @@ static gpointer datasource_gc_add_widgets ( GtkWidget *dialog, VikViewport *vvp gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(dialog)->vbox), center_label, FALSE, FALSE, 5 ); gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(dialog)->vbox), widgets->center_entry, FALSE, FALSE, 5 ); gtk_widget_show_all(dialog); - return widgets; } static void datasource_gc_get_cmd_string ( datasource_gc_widgets_t *widgets, gchar **cmd, gchar **input_type ) @@ -94,7 +102,8 @@ static void datasource_gc_get_cmd_string ( datasource_gc_widgets_t *widgets, gch g_free ( safe_string ); } -static void datasource_gc_first_cleanup ( gpointer data ) +static void datasource_gc_cleanup ( gpointer data ) { g_free ( data ); } +#endif /* VIK_CONFIG_GEOCACHES */