void show_poi_detail() { GtkWidget *window, *widget; GtkWidget *label; GSList *list; gchar *buffer = NULL, *buffer2 = NULL; gboolean poi_found = FALSE; float lat, lon; float distance=0; waypoint_t *wp = g_new0(waypoint_t, 1); poi_t *p, *this_poi = NULL; GladeXML *gladexml = glade_xml_new (gladefile, "window5", GETTEXT_PACKAGE); glade_xml_signal_autoconnect (gladexml); window = glade_xml_get_widget (gladexml, "window5"); g_signal_connect_swapped (window, "destroy", G_CALLBACK (g_object_unref), gladexml); lat = pixel2lat(global_zoom, global_y+mouse_y); lon = pixel2lon(global_zoom, global_x+mouse_x); if(gpsdata !=NULL && !global_myposition.lat && !global_myposition.lon) { distance = 6371.0 * acos(sin(deg2rad(gpsdata->fix.latitude)) * sin(lat) + cos(deg2rad(gpsdata->fix.latitude)) * cos(lat) * cos(lon - deg2rad(gpsdata->fix.longitude)) ); } else if(global_myposition.lat && global_myposition.lon) { distance = 6371.0 * acos(sin(deg2rad(global_myposition.lat)) * sin(lat) + cos(deg2rad(global_myposition.lat)) * cos(lat) * cos(lon - deg2rad(global_myposition.lon)) ); } label = lookup_widget(window,"label110"); for(list = poi_list; list != NULL; list = list->next) { p = list->data; if(abs(p->screen_x - mouse_x) < 12 && abs(p->screen_y - mouse_y) < 12 ) { buffer = g_strdup_printf( "<b>%s</b> ", my_strescape_back(p->keywords,NULL)); buffer2 = g_strdup_printf (_("%s\n\nDistance: %.3fkm"), my_strescape_back(p->desc,NULL), distance); poi_found = TRUE; wp->lat = deg2rad(p->lat_deg); wp->lon = deg2rad(p->lon_deg); this_poi = list->data; } } if(!poi_found) buffer = g_strdup (_("<b>No POI found</b>\n")); gtk_label_set_label(GTK_LABEL(label),buffer); label = lookup_widget(window,"label111"); gtk_label_set_label(GTK_LABEL(label), buffer2); widget = lookup_widget(window, "button27"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button27_clicked), (gpointer) wp); if (this_poi != NULL) { this_poi->widget = window; widget = lookup_widget(window, "button33"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button33_clicked), (gpointer) this_poi); widget = lookup_widget(window, "button34"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button34_clicked), (gpointer) this_poi); } gtk_widget_show(window); }
void show_poi_detail() { GtkWidget *window, *widget; GtkWidget *label; GSList *list; gchar *buffer = NULL, *buffer2 = NULL; gboolean poi_found = FALSE; float lat, lon,lat_deg,lon_deg; float distance=0; waypoint_t *wp = g_new0(waypoint_t, 1); poi_t *p, *this_poi = NULL; window = create_window5(); printf("screen x,y: %d %d \n",mouse_x, mouse_y); lat = pixel2lat(global_zoom, global_y+mouse_y); lon = pixel2lon(global_zoom, global_x+mouse_x); lat_deg = rad2deg(lat); lon_deg = rad2deg(lon); printf ("##### Lonitude: %f %f - %f %f \n", lat, lon, lat_deg, lon_deg); if(gpsdata !=NULL && !global_myposition.lat && !global_myposition.lon) { distance = 6371.0 * acos(sin(deg2rad(gpsdata->fix.latitude)) * sin(lat) + cos(deg2rad(gpsdata->fix.latitude)) * cos(lat) * cos(lon - deg2rad(gpsdata->fix.longitude)) ); } else if(global_myposition.lat && global_myposition.lon) { distance = 6371.0 * acos(sin(deg2rad(global_myposition.lat)) * sin(lat) + cos(deg2rad(global_myposition.lat)) * cos(lat) * cos(lon - deg2rad(global_myposition.lon)) ); } printf("*** %s(): \n",__PRETTY_FUNCTION__); label = lookup_widget(window,"label110"); for(list = poi_list; list != NULL; list = list->next) { p = list->data; printf("\n\nPIXEL POI: %d %d \n\n",p->screen_x,p->screen_y); if(abs(p->screen_x - mouse_x) < 12 && abs(p->screen_y - mouse_y) < 12 ) { printf("FOUND POI X: %d %d %s\n",p->screen_x, mouse_x, my_strescape_back(p->keywords,NULL)); buffer = g_strdup_printf( "<b>%s</b> ", my_strescape_back(p->keywords,NULL)); buffer2 = g_strdup_printf("%s \n\nDistance: %.3fkm ", my_strescape_back(p->desc,NULL), distance); printf("%s %s \n",buffer, buffer2); poi_found = TRUE; wp->lat = deg2rad(p->lat_deg); wp->lon = deg2rad(p->lon_deg); this_poi = list->data; } } if(!poi_found) g_sprintf(buffer, "<b>No POI found</b>\n"); gtk_label_set_label(GTK_LABEL(label),buffer); label = lookup_widget(window,"label111"); gtk_label_set_label(GTK_LABEL(label), buffer2); widget = lookup_widget(window, "button27"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button27_clicked), (gpointer) wp); if (this_poi != NULL) { this_poi->widget = window; widget = lookup_widget(window, "button33"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button33_clicked), (gpointer) this_poi); widget = lookup_widget(window, "button34"); g_signal_connect ( (gpointer) widget, "clicked", G_CALLBACK (on_button34_clicked), (gpointer) this_poi); } gtk_widget_show(window); }