]> git.street.me.uk Git - andy/viking.git/blobdiff - src/dialog.c
Adding implicit DMS->dec conversion in dialogs
[andy/viking.git] / src / dialog.c
index 333f0811c48fa6a09cb8253631ea10faa15b0d62..2e07fc75d54c3ccbcee33b03bf5546af34f49609 100644 (file)
@@ -22,6 +22,7 @@
 #include "viking.h"
 #include "thumbnails.h"
 #include "garminsymbols.h"
+#include "degrees_converters.h"
 
 #include <stdlib.h>
 #include <string.h>
@@ -72,8 +73,8 @@ gboolean a_dialog_goto_latlon ( GtkWindow *parent, struct LatLon *ll, const stru
 
   if ( gtk_dialog_run ( GTK_DIALOG(dialog) ) == GTK_RESPONSE_ACCEPT )
   {
-    ll->lat = atof ( gtk_entry_get_text ( GTK_ENTRY(lat) ) );
-    ll->lon = atof ( gtk_entry_get_text ( GTK_ENTRY(lon) ) );
+    ll->lat = convert_dms_to_dec ( gtk_entry_get_text ( GTK_ENTRY(lat) ) );
+    ll->lon = convert_dms_to_dec ( gtk_entry_get_text ( GTK_ENTRY(lon) ) );
     gtk_widget_destroy ( dialog );
     return TRUE;
   }
@@ -219,30 +220,34 @@ gboolean a_dialog_new_waypoint ( GtkWindow *parent, gchar **dest, VikWaypoint *w
     symbollabel = gtk_label_new ("Symbol:");
     GtkTreeIter iter;
 
-    store = gtk_list_store_new(2, G_TYPE_STRING, GDK_TYPE_PIXBUF);
+    store = gtk_list_store_new(3, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_STRING);
     symbolentry = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
-    gtk_combo_box_set_wrap_width(symbolentry, 3);
+    gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(symbolentry), 3);
     gtk_list_store_append (store, &iter);
-    gtk_list_store_set (store, &iter, 0, "(none)", 1, NULL, -1);
+    gtk_list_store_set (store, &iter, 0, NULL, 1, NULL, 2, "(none)", -1);
     a_populate_sym_list(store);
 
     r = gtk_cell_renderer_pixbuf_new ();
     gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (symbolentry), r, FALSE);
     gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (symbolentry), r, "pixbuf", 1, NULL);
 
+    r = gtk_cell_renderer_text_new ();
+    gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (symbolentry), r, FALSE);
+    gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (symbolentry), r, "text", 2, NULL);
+
     if ( dest == NULL && wp->symbol ) {
       gboolean ok;
       gchar *sym;
       for (ok = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL(store), &iter ); ok; ok = gtk_tree_model_iter_next ( GTK_TREE_MODEL(store), &iter)) {
        gtk_tree_model_get ( GTK_TREE_MODEL(store), &iter, 0, (void *)&sym, -1 );
-       if (!strcmp(sym, wp->symbol)) {
+       if (sym && !strcmp(sym, wp->symbol)) {
          g_free(sym);
          break;
        } else {
          g_free(sym);
        }
       }
-      gtk_combo_box_set_active_iter(symbolentry, &iter);
+      gtk_combo_box_set_active_iter(GTK_COMBO_BOX(symbolentry), &iter);
     }
   }
 
@@ -288,8 +293,8 @@ gboolean a_dialog_new_waypoint ( GtkWindow *parent, gchar **dest, VikWaypoint *w
         {
           /* Do It */
           *dest = name;
-          ll.lat = atof ( gtk_entry_get_text ( GTK_ENTRY(latentry) ) );
-          ll.lon = atof ( gtk_entry_get_text ( GTK_ENTRY(lonentry) ) );
+          ll.lat = convert_dms_to_dec ( gtk_entry_get_text ( GTK_ENTRY(latentry) ) );
+          ll.lon = convert_dms_to_dec ( gtk_entry_get_text ( GTK_ENTRY(lonentry) ) );
           vik_coord_load_from_latlon ( &(wp->coord), coord_mode, &ll );
           wp->altitude = atof ( gtk_entry_get_text ( GTK_ENTRY(altentry) ) );
           vik_waypoint_set_comment ( wp, gtk_entry_get_text ( GTK_ENTRY(commententry) ) );
@@ -300,7 +305,7 @@ gboolean a_dialog_new_waypoint ( GtkWindow *parent, gchar **dest, VikWaypoint *w
          {
            GtkTreeIter iter, first;
            gtk_tree_model_get_iter_first ( GTK_TREE_MODEL(store), &first );
-           if ( !gtk_combo_box_get_active_iter ( symbolentry, &iter ) || !memcmp(&iter, &first, sizeof(GtkTreeIter)) ) {
+           if ( !gtk_combo_box_get_active_iter ( GTK_COMBO_BOX(symbolentry), &iter ) || !memcmp(&iter, &first, sizeof(GtkTreeIter)) ) {
              vik_waypoint_set_symbol ( wp, NULL );
            } else {
              gchar *sym;
@@ -317,8 +322,8 @@ gboolean a_dialog_new_waypoint ( GtkWindow *parent, gchar **dest, VikWaypoint *w
     }
     else
     {
-      ll.lat = atof ( gtk_entry_get_text ( GTK_ENTRY(latentry) ) );
-      ll.lon = atof ( gtk_entry_get_text ( GTK_ENTRY(lonentry) ) );
+      ll.lat = convert_dms_to_dec ( gtk_entry_get_text ( GTK_ENTRY(latentry) ) );
+      ll.lon = convert_dms_to_dec ( gtk_entry_get_text ( GTK_ENTRY(lonentry) ) );
       vik_coord_load_from_latlon ( &(wp->coord), coord_mode, &ll );
       wp->altitude = atof ( gtk_entry_get_text ( GTK_ENTRY(altentry) ) );
       if ( (! wp->comment) || strcmp ( wp->comment, gtk_entry_get_text ( GTK_ENTRY(commententry) ) ) != 0 )
@@ -333,7 +338,7 @@ gboolean a_dialog_new_waypoint ( GtkWindow *parent, gchar **dest, VikWaypoint *w
       {
        GtkTreeIter iter, first;
        gtk_tree_model_get_iter_first ( GTK_TREE_MODEL(store), &first );
-       if ( !gtk_combo_box_get_active_iter ( symbolentry, &iter ) || !memcmp(&iter, &first, sizeof(GtkTreeIter)) ) {
+       if ( !gtk_combo_box_get_active_iter ( GTK_COMBO_BOX(symbolentry), &iter ) || !memcmp(&iter, &first, sizeof(GtkTreeIter)) ) {
          vik_waypoint_set_symbol ( wp, NULL );
        } else {
          gchar *sym;