]> git.street.me.uk Git - andy/viking.git/blobdiff - src/vikutils.c
Enable Cache conversion in the Python tool viking-cache.py
[andy/viking.git] / src / vikutils.c
index bbe365831531a2c781433d2a58321f62a5a8be2c..364adfce0e69cbb2ad409a554dde0dc4775db6eb 100644 (file)
@@ -36,6 +36,7 @@
 #include "vikmapslayer.h"
 #include "settings.h"
 #include "util.h"
+#include "ui_util.h"
 #include "dir.h"
 #include "misc/kdtree.h"
 
@@ -207,6 +208,35 @@ gchar* vu_trackpoint_formatted_message ( gchar *format_code, VikTrackpoint *trkp
 
                case 'X': values[i] = g_strdup_printf ( _("%sNo. of Sats %d"), separator, trkpt->nsats ); break;
 
+               case 'F': {
+                       if ( trk ) {
+                               // Distance to the end 'Finish' (along the track)
+                               gdouble distd = vik_track_get_length_to_trackpoint (trk, trkpt);
+                               gdouble diste = vik_track_get_length_including_gaps ( trk );
+                               gdouble dist = diste - distd;
+                               gchar *dist_units_str = NULL;
+                               vik_units_distance_t dist_units = a_vik_get_units_distance ();
+                               switch (dist_units) {
+                               case VIK_UNITS_DISTANCE_MILES:
+                                       dist_units_str = g_strdup ( _("miles") );
+                                       dist = VIK_METERS_TO_MILES(dist);
+                                       break;
+                               case VIK_UNITS_DISTANCE_NAUTICAL_MILES:
+                                       dist_units_str = g_strdup ( _("NM") );
+                                       dist = VIK_METERS_TO_NAUTICAL_MILES(dist);
+                                       break;
+                               default:
+                                       // VIK_UNITS_DISTANCE_KILOMETRES:
+                                       dist_units_str = g_strdup ( _("km") );
+                                       dist = dist / 1000.0;
+                                       break;
+                               }
+                               values[i] = g_strdup_printf ( _("%sTo End %.2f%s"), separator, dist, dist_units_str );
+                               g_free ( dist_units_str );
+                       }
+                       break;
+               }
+
                case 'D': {
                        if ( trk ) {
                                // Distance from start (along the track)
@@ -407,6 +437,8 @@ void vu_check_latest_version ( GtkWindow *window )
 void vu_set_auto_features_on_first_run ( void )
 {
        gboolean auto_features = FALSE;
+       gboolean set_defaults = FALSE;
+
        if ( a_vik_very_first_run () ) {
 
                GtkWidget *win = gtk_window_new ( GTK_WINDOW_TOPLEVEL );
@@ -414,12 +446,17 @@ void vu_set_auto_features_on_first_run ( void )
                if ( a_dialog_yes_or_no ( GTK_WINDOW(win),
                                          _("This appears to be Viking's very first run.\n\nDo you wish to enable automatic internet features?\n\nIndividual settings can be controlled in the Preferences."), NULL ) )
                        auto_features = TRUE;
+
+               // Default to more standard cache layout for new users (well new installs at least)
+               maps_layer_set_cache_default ( VIK_MAPS_CACHE_LAYOUT_OSM );
+               set_defaults = TRUE;
        }
 
        if ( auto_features ) {
                // Set Maps to autodownload
                // Ensure the default is true
                maps_layer_set_autodownload_default ( TRUE );
+               set_defaults = TRUE;
 
                // Simplistic repeat of preference settings
                //  Only the name & type are important for setting a preference via this 'external' way
@@ -447,6 +484,10 @@ void vu_set_auto_features_on_first_run ( void )
                // Ensure settings are saved for next time
                a_preferences_save_to_file ();
        }
+
+       // Ensure defaults are saved if changed
+       if ( set_defaults )
+               a_layer_defaults_save ();
 }
 
 /**