X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/2c512739651df74b9a3e575e3f401afa59db63b1..c7b4a328044063c6dc8406768ac8c4fc8d770a7a:/src/babel.h diff --git a/src/babel.h b/src/babel.h index 931ad166..d32f453d 100644 --- a/src/babel.h +++ b/src/babel.h @@ -3,6 +3,7 @@ * * Copyright (C) 2003-2005, Evan Battaglia * Copyright (C) 2005, Alex Foobarian + * Copyright (C) 2015, Rob Norris * * 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 @@ -26,6 +27,9 @@ #include #include "viktrwlayer.h" +#include "download.h" + +G_BEGIN_DECLS /** * BabelProgressCode: @@ -47,6 +51,22 @@ typedef enum { */ typedef void (*BabelStatusFunc)(BabelProgressCode, gpointer, gpointer); +/** + * ProcessOptions: + * + * All values are defaulted to NULL + * + * Need to specify at least one of babelargs, URL or shell_command + */ +typedef struct { + gchar* babelargs; // The standard initial arguments to gpsbabel (if gpsbabel is to be used) - normally should include the input file type (-i) option. + gchar* filename; // Input filename (or device port e.g. /dev/ttyS0) + gchar* input_file_type; // If NULL then uses internal file format handler (GPX only ATM), otherwise specify gpsbabel input type like "kml","tcx", etc... + gchar* url; // URL input rather than a filename + gchar* babel_filters; // Optional filter arguments to gpsbabel + gchar* shell_command; // Optional shell command to run instead of gpsbabel - but will be (Unix) platform specific +} ProcessOptions; + /** * BabelMode: * @@ -76,7 +96,7 @@ typedef struct { /** * BabelFile: - * @name: gpsbabel's identifier of the device + * @name: gpsbabel's identifier of the format * @ext: file's extension for this format * @label: human readable label * @@ -92,13 +112,20 @@ typedef struct { GList *a_babel_file_list; GList *a_babel_device_list; -gboolean a_babel_convert( VikTrwLayer *vt, const char *babelargs, BabelStatusFunc cb, gpointer user_data ); -gboolean a_babel_convert_from( VikTrwLayer *vt, const char *babelargs, const char *file, BabelStatusFunc cb, gpointer user_data ); -gboolean a_babel_convert_from_shellcommand ( VikTrwLayer *vt, const char *input_cmd, const char *input_file_type, BabelStatusFunc cb, gpointer user_data ); -gboolean a_babel_convert_from_url ( VikTrwLayer *vt, const char *url, const char *input_type, BabelStatusFunc cb, gpointer user_data ); +void a_babel_foreach_file_with_mode (BabelMode mode, GFunc func, gpointer user_data); +void a_babel_foreach_file_read_any (GFunc func, gpointer user_data); + +// NB needs to match typedef VikDataSourceProcessFunc in acquire.h +gboolean a_babel_convert_from ( VikTrwLayer *vt, ProcessOptions *process_options, BabelStatusFunc cb, gpointer user_data, gpointer download_options ); + gboolean a_babel_convert_to( VikTrwLayer *vt, VikTrack *track, const char *babelargs, const char *file, BabelStatusFunc cb, gpointer user_data ); void a_babel_init (); +void a_babel_post_init (); void a_babel_uninit (); +gboolean a_babel_available (); + +G_END_DECLS + #endif