]> git.street.me.uk Git - andy/viking.git/commitdiff
Allow passing just a track into a_babel_convert_to() for uploading to a GPS Device
authorRob Norris <rw_norris@hotmail.com>
Mon, 24 Sep 2012 22:38:18 +0000 (23:38 +0100)
committerRob Norris <rw_norris@hotmail.com>
Fri, 19 Oct 2012 21:39:47 +0000 (22:39 +0100)
src/babel.c
src/babel.h
src/file.c
src/vikgpslayer.c

index e362ef2ca8f39a24c02829967023f9ce0c897014..b0dc302dbd61186ff07ae2c5c1dc5de04730562c 100644 (file)
@@ -329,9 +329,9 @@ gboolean a_babel_convert_from_url ( VikTrwLayer *vt, const char *url, const char
   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;
   }
@@ -339,7 +339,22 @@ static gboolean babel_general_convert_to( VikTrwLayer *vt, BabelStatusFunc cb, g
   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;
@@ -369,7 +384,7 @@ gboolean a_babel_convert_to( VikTrwLayer *vt, const char *babelargs, const char
       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
index b19a31270e3d9ee44f48fbe38d6ce44981f6c2b0..931ad1669efc76d78aac9abee270403ff6c451f6 100644 (file)
@@ -96,7 +96,7 @@ gboolean a_babel_convert( VikTrwLayer *vt, const char *babelargs, BabelStatusFun
 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 ();
index f185a4671b387593bc91765ec82abd32d6f0f91a..b5121eaef55b4eca62dfb3a3aeaa4249f43de3f7 100644 (file)
@@ -756,14 +756,14 @@ gboolean a_file_export ( VikTrwLayer *vtl, const gchar *filename, VikFileType_t
          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;
index 725b381b0efd3c7da39ed0fb4d98e25d46a23b61..12a65ea4d71567feb75b529c0dd700fe8d3d523a 100644 (file)
@@ -1074,7 +1074,7 @@ static void gps_comm_thread(GpsSession *sess)
     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);
   }