--- maemo-mapper-2.3/src/input.c.orig 2007-11-28 20:15:46.000000000 -0200 +++ maemo-mapper-2.3/src/input.c 2008-01-19 19:18:08.000000000 -0200 @@ -492,12 +492,27 @@ map_cb_motion_notify(GtkWidget *widget, GdkEventMotion *event) { gint x, y; + double lat, lon; + GdkModifierType state; printf("%s()\n", __PRETTY_FUNCTION__); + if(_is_calibrating){ + MACRO_BANNER_SHOW_INFO(_window, _("Calibrating Map")); + printf("Calibrated "); + _is_calibrating = FALSE; + screen2unit((gint)(event->x), (gint)(event->y ), + x, y); + unit2latlon(x, y, lat, lon ); + LATCALIB = _gps.lat - lat + LATCALIB; + LONCALIB = _gps.lon - lon + LONCALIB; + _center_mode = CENTER_LEAD; + return TRUE; + } + if(!_mouse_is_down) return FALSE; - + if(event->is_hint) gdk_window_get_pointer(event->window, &x, &y, &state); else @@ -550,6 +565,7 @@ gboolean map_cb_button_release(GtkWidget *widget, GdkEventButton *event) { + printf("%s()\n", __PRETTY_FUNCTION__); if(!_mouse_is_down) --- maemo-mapper-2.3/src/data.c.orig 2008-01-12 20:46:01.000000000 -0200 +++ maemo-mapper-2.3/src/data.c 2008-01-19 19:17:54.000000000 -0200 @@ -104,7 +104,7 @@ gboolean _satdetails_on = FALSE; gboolean _is_first_time = FALSE; - +gboolean _is_calibrating = FALSE; /** VARIABLES FOR MAINTAINING STATE OF THE CURRENT VIEW. */ --- maemo-mapper-2.3/src/data.h.orig 2008-01-12 20:46:01.000000000 -0200 +++ maemo-mapper-2.3/src/data.h 2008-01-19 19:17:47.000000000 -0200 @@ -81,7 +81,8 @@ extern GpsData _gps; extern GpsSatelliteData _gps_sat[12]; extern gboolean _satdetails_on; - +double LATCALIB,LONCALIB; +extern gboolean _is_calibrating; extern gboolean _is_first_time; --- maemo-mapper-2.3/src/gps.c.orig 2007-11-28 20:15:46.000000000 -0200 +++ maemo-mapper-2.3/src/gps.c 2008-01-19 19:17:59.000000000 -0200 @@ -145,7 +145,7 @@ MACRO_PARSE_FLOAT(tmpd, dpoint - 2); dpoint[-2] = '\0'; MACRO_PARSE_INT(tmpi, token); - _gps.lat = tmpi + (tmpd * (1.0 / 60.0)); + _gps.lat = tmpi + (tmpd * (1.0 / 60.0)) + LATCALIB; } /* Parse N or S. */ @@ -163,7 +163,7 @@ MACRO_PARSE_FLOAT(tmpd, dpoint - 2); dpoint[-2] = '\0'; MACRO_PARSE_INT(tmpi, token); - _gps.lon = tmpi + (tmpd * (1.0 / 60.0)); + _gps.lon = tmpi + (tmpd * (1.0 / 60.0)) + LONCALIB; } /* Parse E or W. */ @@ -900,7 +900,9 @@ gps_init() { printf("%s()\n", __PRETTY_FUNCTION__); - + LATCALIB = 0.00000000; + LONCALIB = 0.00000000; + _is_calibrating = FALSE; _gps_init_mutex = g_mutex_new(); /* Fix a stupid PATH bug in libgps. */ --- maemo-mapper-2.3/src/menu.c.orig 2007-11-28 20:15:46.000000000 -0200 +++ maemo-mapper-2.3/src/menu.c 2008-01-19 19:18:13.000000000 -0200 @@ -75,6 +75,9 @@ static GtkWidget *_menu_poi_categories_item = NULL; static GtkWidget *_menu_maps_submenu = NULL; static GtkWidget *_menu_maps_mapman_item = NULL; +static GtkWidget *_menu_maps_mapcalib_item = NULL; +static GtkWidget *_menu_maps_mapcalibreset_item = NULL; + static GtkWidget *_menu_maps_repoman_item = NULL; static GtkWidget *_menu_view_zoom_in_item = NULL; static GtkWidget *_menu_view_zoom_out_item = NULL; @@ -518,7 +521,24 @@ vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__); return TRUE; } +static gboolean +menu_cb_maps_mapcalib(GtkMenuItem *item) +{ + _is_calibrating = TRUE; + + MACRO_BANNER_SHOW_INFO(_window, _("Calibrating Map")); + return TRUE; +} +static gboolean +menu_cb_maps_mapcalibreset(GtkMenuItem *item) +{ + _is_calibrating = FALSE; + MACRO_BANNER_SHOW_INFO(_window, _("Calibration Disabled")); + LONCALIB = 0.000; + LATCALIB = 0.000; + return TRUE; +} static gboolean menu_cb_maps_auto_download(GtkMenuItem *item) { @@ -1474,8 +1494,17 @@ gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), _menu_maps_submenu = gtk_menu_new()); gtk_menu_append(_menu_maps_submenu, gtk_separator_menu_item_new()); + + gtk_menu_append(_menu_maps_submenu, _menu_maps_mapcalib_item + = gtk_menu_item_new_with_label(_("Calibrate Map..."))); + gtk_menu_append(_menu_maps_submenu, _menu_maps_mapcalibreset_item + = gtk_menu_item_new_with_label(_("Calibrate Reset..."))); + gtk_menu_append(_menu_maps_submenu, gtk_separator_menu_item_new()); + + gtk_menu_append(_menu_maps_submenu, _menu_maps_mapman_item = gtk_menu_item_new_with_label(_("Manage Maps..."))); + gtk_menu_append(_menu_maps_submenu, _menu_maps_repoman_item = gtk_menu_item_new_with_label(_("Manage Repositories..."))); gtk_menu_append(_menu_maps_submenu, _menu_maps_auto_download_item @@ -1714,6 +1743,10 @@ G_CALLBACK(menu_cb_maps_repoman), NULL); g_signal_connect(G_OBJECT(_menu_maps_mapman_item), "activate", G_CALLBACK(menu_cb_maps_mapman), NULL); + g_signal_connect(G_OBJECT(_menu_maps_mapcalib_item), "activate", + G_CALLBACK(menu_cb_maps_mapcalib), NULL); + g_signal_connect(G_OBJECT(_menu_maps_mapcalibreset_item), "activate", + G_CALLBACK(menu_cb_maps_mapcalibreset), NULL); g_signal_connect(G_OBJECT(_menu_maps_auto_download_item), "toggled", G_CALLBACK(menu_cb_maps_auto_download), NULL);