7
#include <glib/gstdio.h>
15
#include "interface.h"
17
#include "converter.h"
18
#include "map_management.h"
24
make_file_label(const char *file, char *full_file);
28
tracks_open_tracks_dialog()
36
GtkWidget *label, *vbox, *eventbox;
39
dir = g_dir_open(global_track_dir, 0, &err);
43
fprintf (stderr, "Problem opening directory: %s\n", err->message);
50
window12 = create_window12();
51
gtk_widget_show(window12);
53
vbox = lookup_widget(window12, "vbox39");
57
file = g_dir_read_name(dir);
61
isfile = g_file_test(g_strconcat(global_track_dir,file,NULL), G_FILE_TEST_IS_REGULAR);
64
list = g_list_insert_sorted( list, g_strdup(file), (GCompareFunc) g_strcmp0 );
66
file = g_dir_read_name(dir);
69
for(; list!=NULL; list=list->next)
71
char *file = list->data;
74
printf("%s \n", file);
75
eventbox = gtk_event_box_new ();
76
gtk_widget_set_events (eventbox, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK);
77
gtk_widget_show (eventbox);
80
gtk_box_pack_start (GTK_BOX (vbox), eventbox, FALSE, FALSE, 0);
82
label = make_file_label(file, g_strconcat(global_track_dir,file,NULL));
83
gtk_widget_show(label);
84
gtk_misc_set_alignment (GTK_MISC (label), 0, 0);
85
gtk_misc_set_padding (GTK_MISC (label), 3, 2);
87
gtk_container_add (GTK_CONTAINER (eventbox), label);
89
g_signal_connect ((gpointer) eventbox, "button_release_event",
90
G_CALLBACK (tracks_on_file_button_release_event),
91
g_strconcat(global_track_dir,file,NULL));
100
make_file_label(const char *file, char *full_file)
104
label = gtk_label_new (g_strdup(file));
110
tracks_on_file_button_release_event ( GtkWidget *widget,
111
GdkEventButton *event,
114
GtkWidget *drawingarea, *range;
119
float lat=0, lon=0, max_lat=-90, max_lon=-180, min_lat=90, min_lon=180, lat_tmp, lon_tmp;
120
gboolean first_point = TRUE;
121
int track_zoom, width, height;
123
drawingarea = lookup_widget(window1, "drawingarea1");
124
width = drawingarea->allocation.width;
125
height = drawingarea->allocation.height;
127
file = (char *) user_data;
129
g_slist_free(loaded_track);
132
gtk_widget_destroy(window12);
134
printf("+++++++++++++++++++++++++++++++++++++++++++ %s \n", file);
135
fd = fopen(file, "r");
136
while(fgets(line,120, fd))
139
trackpoint_t *tp = g_new0(trackpoint_t,1);
141
arr = g_strsplit(line, ",", 2);
144
if (arr[0] == NULL || arr[1] == NULL) continue;
148
lat_tmp = atof(arr[0]);
149
lon_tmp = atof(arr[1]);
151
tp->lat = deg2rad(lat_tmp);
152
tp->lon = deg2rad(lon_tmp);
161
max_lat = (lat_tmp>max_lat) ? lat_tmp : max_lat;
162
min_lat = (lat_tmp<min_lat) ? lat_tmp : min_lat;
163
max_lon = (lon_tmp>max_lon) ? lon_tmp : max_lon;
164
min_lon = (lon_tmp<min_lon) ? lon_tmp : min_lon;
167
loaded_track = g_slist_append(loaded_track, tp);
170
gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(window1,"notebook1")), 0);
176
track_zoom = get_zoom_covering(width, height, max_lat, min_lon, min_lat, max_lon);
177
track_zoom = (track_zoom > 15) ? 15 : track_zoom;
180
set_mapcenter((max_lat+min_lat)/2, (max_lon+min_lon)/2, track_zoom);
182
printf("%.0f - %.0f ## %.0f - %.0f\n",max_lat,max_lon,min_lat,min_lon);
184
range = lookup_widget(window1, "vscale1");
185
gtk_range_set_value(GTK_RANGE(range), (double) global_zoom);
187
paint_loaded_track();
199
int pixel_x, pixel_y, x,y, last_x = 0, last_y = 0;
203
gboolean is_line = FALSE;
205
gc = gdk_gc_new(pixmap);
209
gdk_gc_set_rgb_fg_color(gc, &color);
210
gdk_gc_set_line_attributes(gc,
211
5, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND);
215
printf("*** %s(): \n",__PRETTY_FUNCTION__);
217
for(list = loaded_track; list != NULL; list = list->next)
219
trackpoint_t *tp = list->data;
227
pixel_x = lon2pixel(global_zoom, lon);
228
pixel_y = lat2pixel(global_zoom, lat);
230
x = pixel_x - global_x;
231
y = pixel_y - global_y;
236
gdk_draw_line (pixmap, gc, x, y, last_x, last_y);
237
gtk_widget_queue_draw_area (