]> git.street.me.uk Git - andy/viking.git/blobdiff - src/geonamessearch.c
Fix incorrectly updating files during geotagging that are read only.
[andy/viking.git] / src / geonamessearch.c
index 9d0ddc84c1e667447fd9d33cc843953540005e07..0fd9380210bb24ef6f7cdcec349bd1c092bd6833 100644 (file)
@@ -121,7 +121,7 @@ static void none_found(VikWindow *vw)
   gtk_window_set_title(GTK_WINDOW(dialog), _("Search"));
 
   GtkWidget *search_label = gtk_label_new(_("No entries found!"));
-  gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(dialog)->vbox), search_label, FALSE, FALSE, 5 );
+  gtk_box_pack_start ( GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), search_label, FALSE, FALSE, 5 );
   gtk_dialog_set_default_response ( GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT );
   gtk_widget_show_all(dialog);
 
@@ -197,8 +197,8 @@ static GList *a_select_geoname_from_list(GtkWindow *parent, GList *geonames, gbo
   gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC );
   gtk_container_add ( GTK_CONTAINER(scrolledwindow), view );
 
-  gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), label, FALSE, FALSE, 0);
-  gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), scrolledwindow, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), label, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), scrolledwindow, TRUE, TRUE, 0);
 
   // Ensure a reasonable number of items are shown, but let the width be automatically sized
   gtk_widget_set_size_request ( dialog, -1, 400) ;
@@ -230,6 +230,7 @@ static GList *a_select_geoname_from_list(GtkWindow *parent, GList *geonames, gbo
             }
             geoname_runner = g_list_next(geoname_runner);
           }
+         g_free ( name );
         }
       }
       while ( gtk_tree_model_iter_next ( GTK_TREE_MODEL(store), &iter ) );
@@ -267,6 +268,7 @@ static GList *get_entries_from_file(gchar *file_name)
 
   if ((mf = g_mapped_file_new(file_name, FALSE, NULL)) == NULL) {
     g_critical(_("couldn't map temp file"));
+    return NULL;
   }
   len = g_mapped_file_get_length(mf);
   text = g_mapped_file_get_contents(mf);
@@ -452,6 +454,21 @@ void a_geonames_wikipedia_box ( VikWindow *vw, VikTrwLayer *vtl, struct LatLon m
     wiki_wp->altitude = wiki_geoname->elevation;
     vik_waypoint_set_comment(wiki_wp, wiki_geoname->cmt);
     vik_waypoint_set_description(wiki_wp, wiki_geoname->desc);
+    // Use the featue type to generate a suitable waypoint icon
+    //  http://www.geonames.org/wikipedia/wikipedia_features.html
+    // Only a few values supported as only a few symbols make sense
+    if ( wiki_geoname->feature ) {
+      if ( !strcmp (wiki_geoname->feature, "city") )
+        vik_waypoint_set_symbol(wiki_wp, "city (medium)");
+      if ( !strcmp (wiki_geoname->feature, "edu") )
+        vik_waypoint_set_symbol(wiki_wp, "school");
+      if ( !strcmp (wiki_geoname->feature, "airport") )
+        vik_waypoint_set_symbol(wiki_wp, "airport");
+      if ( !strcmp (wiki_geoname->feature, "mountain") )
+        vik_waypoint_set_symbol(wiki_wp, "summit");
+      if ( !strcmp (wiki_geoname->feature, "forest") )
+        vik_waypoint_set_symbol(wiki_wp, "forest");
+    }
     vik_trw_layer_filein_add_waypoint ( vtl, wiki_geoname->name, wiki_wp );
     wp_runner = g_list_next(wp_runner);
   }