return ret;
}
-static gboolean babel_general_convert_to( VikTrwLayer *vt, BabelStatusFunc cb, gchar **args, const gchar *name_src, gpointer user_data )
+static gboolean babel_general_convert_to( VikTrwLayer *vt, VikTrack *trk, BabelStatusFunc cb, gchar **args, const gchar *name_src, gpointer user_data )
{
- if (!a_file_export(vt, name_src, FILE_TYPE_GPX, NULL)) {
+ if (!a_file_export(vt, name_src, FILE_TYPE_GPX, trk)) {
g_critical("Error exporting to %s", name_src);
return FALSE;
}
return babel_general_convert (cb, args, user_data);
}
-gboolean a_babel_convert_to( VikTrwLayer *vt, const char *babelargs, const char *to, BabelStatusFunc cb, gpointer user_data )
+/**
+ * a_babel_convert_to:
+ * @vt The TRW layer from which data is taken.
+ * @track Operate on the individual track if specified. Use NULL when operating on a TRW layer
+ * @babelargs A string containing gpsbabel command line options. In addition to any filters, this string
+ * must include the input file type (-i) option.
+ * @to Filename or device the data is written to.
+ * @cb Optional callback function. Same usage as in a_babel_convert.
+ *
+ * Exports data using gpsbabel. This routine is synchronous;
+ * that is, it will block the calling program until the conversion is done. To avoid blocking, call
+ * this routine from a worker thread.
+ *
+ * Returns: %TRUE on successful invocation of GPSBabel command
+ */
+gboolean a_babel_convert_to( VikTrwLayer *vt, VikTrack *track, const char *babelargs, const char *to, BabelStatusFunc cb, gpointer user_data )
{
int i,j;
int fd_src;
args[i++] = (char *)to;
args[i] = NULL;
- ret = babel_general_convert_to ( vt, cb, args, name_src, user_data );
+ ret = babel_general_convert_to ( vt, track, cb, args, name_src, user_data );
g_strfreev(sub_args);
} else
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 );
-gboolean a_babel_convert_to( VikTrwLayer *vt, const char *babelargs, const char *file, BabelStatusFunc cb, gpointer user_data );
+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_uninit ();
f = NULL;
switch ( a_vik_get_kml_export_units () ) {
case VIK_KML_EXPORT_UNITS_STATUTE:
- return a_babel_convert_to ( vtl, "-o kml", filename, NULL, NULL );
+ return a_babel_convert_to ( vtl, NULL, "-o kml", filename, NULL, NULL );
break;
case VIK_KML_EXPORT_UNITS_NAUTICAL:
- return a_babel_convert_to ( vtl, "-o kml,units=n", filename, NULL, NULL );
+ return a_babel_convert_to ( vtl, NULL, "-o kml,units=n", filename, NULL, NULL );
break;
default:
// VIK_KML_EXPORT_UNITS_METRIC:
- return a_babel_convert_to ( vtl, "-o kml,units=m", filename, NULL, NULL );
+ return a_babel_convert_to ( vtl, NULL, "-o kml,units=m", filename, NULL, NULL );
break;
}
break;
result = a_babel_convert_from (sess->vtl, sess->cmd_args, sess->port,
(BabelStatusFunc) gps_download_progress_func, sess);
else {
- result = a_babel_convert_to (sess->vtl, sess->cmd_args, sess->port,
+ result = a_babel_convert_to (sess->vtl, NULL, sess->cmd_args, sess->port,
(BabelStatusFunc) gps_upload_progress_func, sess);
}