#include <config.h>
+#include <gtk/gtk.h>
+
#include "utils.h"
#include "map.h"
#include "route.h"
#include "mapper-types.h"
-
#include "track.h"
#include "path.h"
+#include "settings.h"
+#include "latlon.h"
void
path_resize(Path *path, guint size)
path->wcap = path->whead + wsize;
}
}
+
+GtkListStore *
+path_generate_store(Path *path)
+{
+WayPoint *wcurr;
+GtkTreeIter iter;
+GtkListStore *store;
+gchar buffer1[80];
+gchar buffer2[32];
+gdouble lat1, lon1, lat2, lon2;
+gdouble sum=0.0;
+
+if (path->whead==path->wtail)
+ return NULL;
+
+wcurr=path->whead;
+
+if (!wcurr)
+ return NULL;
+
+if (!wcurr->point)
+ return NULL;
+
+unit2latlon(wcurr->point->unitx, wcurr->point->unity, lat1, lon1);
+
+store = gtk_list_store_new(ROUTE_NUM_COLUMNS,G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
+
+while (wcurr!=path->wtail) {
+ if (!wcurr)
+ break;
+
+ if (!wcurr->point)
+ break;
+
+ unit2latlon(wcurr->point->unitx, wcurr->point->unity, lat2, lon2);
+ g_snprintf(buffer1, sizeof(buffer1), "%.05f,%.05f", lat2, lon2);
+ sum += calculate_distance(lat1, lon1, lat2, lon2);
+ g_snprintf(buffer2, sizeof(buffer2), "%.02f %s", sum * UNITS_CONVERT[_units], UNITS_TEXT[_units]);
+
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ ROUTE_LATLON, buffer1,
+ ROUTE_DISTANCE, buffer2,
+ ROUTE_WAYPOINT, wcurr->desc,
+ ROUTE_LAT, lat2,
+ ROUTE_LON, lon2,
+ -1);
+
+ lat1=lat2;
+ lon1=lon2;
+
+ wcurr++;
+}
+
+return store;
+}