]> git.street.me.uk Git - andy/viking.git/blobdiff - src/viktrwlayer_geotag.c
[QA] minor doc improvment
[andy/viking.git] / src / viktrwlayer_geotag.c
index 5be6178c7fddc60424501a2344ac3ec096f0e07b..f867be33f8cd9fc262dc9534941dd73939038a6c 100644 (file)
@@ -145,22 +145,57 @@ typedef struct {
        gboolean redraw;
 } geotag_options_t;
 
-static option_values_t default_values = {
-       TRUE,
-       TRUE,
-       TRUE,
-       FALSE,
-       TRUE,
-       TRUE,
-       0,
-       0,
-       0,
-};
+#define VIK_SETTINGS_GEOTAG_CREATE_WAYPOINT      "geotag_create_waypoints"
+#define VIK_SETTINGS_GEOTAG_OVERWRITE_WAYPOINTS  "geotag_overwrite_waypoints"
+#define VIK_SETTINGS_GEOTAG_WRITE_EXIF           "geotag_write_exif"
+#define VIK_SETTINGS_GEOTAG_OVERWRITE_GPS_EXIF   "geotag_overwrite_gps"
+#define VIK_SETTINGS_GEOTAG_NO_CHANGE_MTIME      "geotag_no_change_mtime"
+#define VIK_SETTINGS_GEOTAG_INTERPOLATE_SEGMENTS "geotag_interpolate_segments"
+#define VIK_SETTINGS_GEOTAG_TIME_OFFSET          "geotag_time_offset"
+#define VIK_SETTINGS_GEOTAG_TIME_OFFSET_HOURS    "geotag_time_offset_hours"
+#define VIK_SETTINGS_GEOTAG_TIME_OFFSET_MINS     "geotag_time_offset_mins"
+
+static void save_default_values ( option_values_t default_values )
+{
+       a_settings_set_boolean ( VIK_SETTINGS_GEOTAG_CREATE_WAYPOINT, default_values.create_waypoints );
+       a_settings_set_boolean ( VIK_SETTINGS_GEOTAG_OVERWRITE_WAYPOINTS, default_values.overwrite_waypoints );
+       a_settings_set_boolean ( VIK_SETTINGS_GEOTAG_WRITE_EXIF, default_values.write_exif );
+       a_settings_set_boolean ( VIK_SETTINGS_GEOTAG_OVERWRITE_GPS_EXIF, default_values.overwrite_gps_exif );
+       a_settings_set_boolean ( VIK_SETTINGS_GEOTAG_NO_CHANGE_MTIME, default_values.no_change_mtime );
+       a_settings_set_boolean ( VIK_SETTINGS_GEOTAG_INTERPOLATE_SEGMENTS, default_values.interpolate_segments );
+       a_settings_set_integer ( VIK_SETTINGS_GEOTAG_TIME_OFFSET, default_values.time_offset );
+       a_settings_set_integer ( VIK_SETTINGS_GEOTAG_TIME_OFFSET_HOURS, default_values.TimeZoneHours );
+       a_settings_set_integer ( VIK_SETTINGS_GEOTAG_TIME_OFFSET_MINS, default_values.TimeZoneMins );
+}
+
+static option_values_t get_default_values ( )
+{
+       option_values_t default_values;
+       if ( ! a_settings_get_boolean ( VIK_SETTINGS_GEOTAG_CREATE_WAYPOINT, &default_values.create_waypoints ) )
+               default_values.create_waypoints = TRUE;
+       if ( ! a_settings_get_boolean ( VIK_SETTINGS_GEOTAG_OVERWRITE_WAYPOINTS, &default_values.overwrite_waypoints ) )
+               default_values.overwrite_waypoints = TRUE;
+       if ( ! a_settings_get_boolean ( VIK_SETTINGS_GEOTAG_WRITE_EXIF, &default_values.write_exif ) )
+               default_values.write_exif = TRUE;
+       if ( ! a_settings_get_boolean ( VIK_SETTINGS_GEOTAG_OVERWRITE_GPS_EXIF, &default_values.overwrite_gps_exif ) )
+               default_values.overwrite_gps_exif = FALSE;
+       if ( ! a_settings_get_boolean ( VIK_SETTINGS_GEOTAG_NO_CHANGE_MTIME, &default_values.no_change_mtime ) )
+               default_values.no_change_mtime = TRUE;
+       if ( ! a_settings_get_boolean ( VIK_SETTINGS_GEOTAG_INTERPOLATE_SEGMENTS, &default_values.interpolate_segments ) )
+               default_values.interpolate_segments = TRUE;
+       if ( ! a_settings_get_integer ( VIK_SETTINGS_GEOTAG_TIME_OFFSET, &default_values.time_offset ) )
+               default_values.time_offset = 0;
+       if ( ! a_settings_get_integer ( VIK_SETTINGS_GEOTAG_TIME_OFFSET_HOURS, &default_values.TimeZoneHours ) )
+               default_values.TimeZoneHours = 0;
+       if ( ! a_settings_get_integer ( VIK_SETTINGS_GEOTAG_TIME_OFFSET_MINS, &default_values.TimeZoneMins ) )
+               default_values.TimeZoneMins = 0;
+       return default_values;
+}
 
 /**
  * Correlate the image against the specified track
  */
-static void trw_layer_geotag_track ( const gchar *name, VikTrack *track, geotag_options_t *options )
+static void trw_layer_geotag_track ( const gpointer id, VikTrack *track, geotag_options_t *options )
 {
        // If already found match then don't need to check this track
        if ( options->found_match )
@@ -169,8 +204,8 @@ static void trw_layer_geotag_track ( const gchar *name, VikTrack *track, geotag_
        VikTrackpoint *trkpt;
        VikTrackpoint *trkpt_next;
 
-       GList *mytrkpt = track->trackpoints;
-       for ( mytrkpt = mytrkpt; mytrkpt; mytrkpt = mytrkpt->next ) {
+       GList *mytrkpt;
+       for ( mytrkpt = track->trackpoints; mytrkpt; mytrkpt = mytrkpt->next ) {
 
                // Do something for this trackpoint...
 
@@ -298,7 +333,7 @@ static void trw_layer_geotag_process ( geotag_options_t *options )
 
                if ( options->track ) {
                        // Single specified track
-                       // NB Doesn't care about track name
+                       // NB Doesn't care about track id
                        trw_layer_geotag_track ( NULL, options->track, options );
                }
                else {
@@ -389,7 +424,7 @@ static int trw_layer_geotag_thread ( geotag_options_t *options, gpointer threadd
                        // Ensure any new images get shown
                        trw_layer_verify_thumbnails ( options->vtl, NULL ); // NB second parameter not used ATM
                        // Force redraw as verify only redraws if there are new thumbnails (they may already exist)
-                       vik_layer_emit_update ( VIK_LAYER(options->vtl), TRUE ); // Update from background
+                       vik_layer_emit_update ( VIK_LAYER(options->vtl) ); // NB Update from background
                }
        }
 
@@ -438,7 +473,7 @@ static void trw_layer_geotag_response_cb ( GtkDialog *dialog, gint resp, GeoTagW
                options->redraw = FALSE;
 
                // Save settings for reuse
-               default_values = options->ov;
+               save_default_values ( options->ov );
 
                options->files = g_list_copy ( vik_file_list_get_files ( widgets->files ) );
 
@@ -531,7 +566,9 @@ void trw_layer_geotag_dialog ( GtkWindow *parent, VikTrwLayer *vtl, VikTrack *tr
        gtk_entry_set_width_chars ( widgets->time_zone_b, 7);
        gtk_entry_set_width_chars ( widgets->time_offset_b, 7);
 
-       // Defaults - TODO restore previous values / save settings somewhere??
+       // Defaults
+       option_values_t default_values = get_default_values ();
+
        gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON(widgets->create_waypoints_b), default_values.create_waypoints );
        gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON(widgets->overwrite_waypoints_b), default_values.overwrite_waypoints );
        gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON(widgets->write_exif_b), default_values.write_exif );
@@ -591,18 +628,18 @@ void trw_layer_geotag_dialog ( GtkWindow *parent, VikTrwLayer *vtl, VikTrack *tr
        else
                track_string = g_strdup_printf ( _("Using all tracks in: %s"), VIK_LAYER(widgets->vtl)->name );
 
-       gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(widgets->dialog)->vbox), gtk_label_new ( track_string ), FALSE, FALSE, 5 );
+       gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(widgets->dialog))), gtk_label_new ( track_string ), FALSE, FALSE, 5 );
 
-       gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(widgets->dialog)->vbox), GTK_WIDGET(widgets->files), TRUE, TRUE, 0 );
+       gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(widgets->dialog))), GTK_WIDGET(widgets->files), TRUE, TRUE, 0 );
 
-       gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(widgets->dialog)->vbox), cw_hbox,  FALSE, FALSE, 0);
-       gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(widgets->dialog)->vbox), ow_hbox,  FALSE, FALSE, 0);
-       gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(widgets->dialog)->vbox), we_hbox,  FALSE, FALSE, 0);
-       gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(widgets->dialog)->vbox), og_hbox,  FALSE, FALSE, 0);
-       gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(widgets->dialog)->vbox), fm_hbox,  FALSE, FALSE, 0);
-       gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(widgets->dialog)->vbox), is_hbox,  FALSE, FALSE, 0);
-       gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(widgets->dialog)->vbox), to_hbox,  FALSE, FALSE, 0);
-       gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(widgets->dialog)->vbox), tz_hbox,  FALSE, FALSE, 0);
+       gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(widgets->dialog))), cw_hbox,  FALSE, FALSE, 0);
+       gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(widgets->dialog))), ow_hbox,  FALSE, FALSE, 0);
+       gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(widgets->dialog))), we_hbox,  FALSE, FALSE, 0);
+       gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(widgets->dialog))), og_hbox,  FALSE, FALSE, 0);
+       gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(widgets->dialog))), fm_hbox,  FALSE, FALSE, 0);
+       gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(widgets->dialog))), is_hbox,  FALSE, FALSE, 0);
+       gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(widgets->dialog))), to_hbox,  FALSE, FALSE, 0);
+       gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(widgets->dialog))), tz_hbox,  FALSE, FALSE, 0);
 
        g_signal_connect ( widgets->dialog, "response", G_CALLBACK(trw_layer_geotag_response_cb), widgets );