#include <glib/gi18n.h>
#include "gtkgps.h"
+#include "gtkcompass.h"
#include "hildon-mapper.h"
#include "gps.h"
#include "map.h"
#include "mapper-types.h"
-#include "bt.h"
#include "ui-common.h"
#include "db.h"
-
+#include "gps-panels.h"
+#include "gps-conn.h"
#include "settings-gui.h"
/* Callbacks */
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='file'>"
-" <menuitem action='file_settings'/>"
+" <menu action='file_settings'>"
+" <menuitem action='file_settings_gps'/>"
+" <menuitem action='file_settings_generic'/>"
+" <menuitem action='file_settings_colors'/>"
+#ifdef WITH_DEVICE_770
+" <menuitem action='file_settings_keys'/>"
+#endif
+" <separator/>"
+" <menuitem action='file_settings_osm'/>"
+" </menu>"
" <separator/>"
" <menuitem action='file_quit'/>"
" </menu>"
" <menuitem action='autocenter_none'/>"
" </menu>"
" </menu>"
+" <menu action='search'>"
+" <menuitem action='poi_search'/>"
+" <menuitem action='search_address'/>"
+" </menu>"
" <menu action='track'>"
" <menuitem action='track_open'/>"
" <menuitem action='track_save'/>"
" <menuitem action='route_clear'/>"
" </menu>"
" <menu action='poi'>"
-" <menuitem action='poi_search'/>"
" <menuitem action='poi_categories'/>"
+#if 0
" <separator/>"
" <menuitem action='poi_import'/>"
" <menuitem action='poi_export'/>"
-" <separator/>"
-" <menuitem action='poi_settings'/>"
+#endif
" </menu>"
" <menu action='view'>"
" <menuitem action='view_zoom_in'/>"
" <menuitem action='goto_destination'/>"
" <menuitem action='goto_gps'/>"
" <separator/>"
-" <menuitem action='search_address'/>"
" <menuitem action='goto_latlon'/>"
" <menuitem action='goto_nearpoi'/>"
" <menuitem action='goto_nextway'/>"
" <menu action='gps'>"
" <menuitem action='gps_enabled'/>"
" <menuitem action='gps_information'/>"
-" <separator/>"
-" <menuitem action='gps_details'/>"
-" <separator/>"
-" <menuitem action='gps_settings'/>"
" </menu>"
" <menu action='help'>"
+#if defined (WITH_OSSO_HELP) || defined(WITH_HILDON_HELP)
" <menuitem action='help_help'/>"
+#endif
" <menuitem action='help_about'/>"
" </menu>"
" </menubar>"
static GtkActionEntry ui_entries[] = {
{"file", NULL, N_("_File"), NULL, NULL, NULL },
- {"file_settings", GTK_STOCK_PREFERENCES, N_("_Settings..."), NULL, NULL, G_CALLBACK(menu_cb_settings) },
+ {"file_settings", GTK_STOCK_PREFERENCES, N_("_Settings..."), NULL, NULL, NULL },
+ {"file_settings_generic", NULL, N_("Generic..."), NULL, NULL, G_CALLBACK(menu_cb_settings) },
+ {"file_settings_colors", NULL, N_("_Colors..."), NULL, NULL, G_CALLBACK(menu_cb_settings_colors) },
+ {"file_settings_gps", NULL, N_("_Gps..."), NULL, NULL, G_CALLBACK(menu_cb_settings_gps) },
+ {"file_settings_osm", NULL, N_("_Map info..."), NULL, NULL, G_CALLBACK(menu_cb_settings_osm) },
{"file_quit", GTK_STOCK_QUIT, N_("_Quit"), "<control>Q", NULL, G_CALLBACK(gtk_main_quit) },
{"help", NULL, N_("_Help"), NULL, NULL, NULL },
{"poi_settings", GTK_STOCK_PREFERENCES, N_("_Settings..."), NULL, NULL, NULL },
{"poi_add", GTK_STOCK_ADD, N_("_Add"), "<control>A", NULL, G_CALLBACK(cb_poi_add) },
{"poi_quick_add", GTK_STOCK_ABOUT, N_("_Quick Add"), "<control>E", NULL, G_CALLBACK(cb_poi_add) },
- {"poi_search", GTK_STOCK_FIND, N_("_Search..."), NULL, NULL, G_CALLBACK(cb_poi_search) },
{"poi_import", GTK_STOCK_OPEN, N_("_Import..."), NULL, NULL, NULL },
{"poi_export", GTK_STOCK_SAVE, N_("_Export..."), NULL, NULL, NULL },
+ {"search", NULL, N_("_Search"), NULL, NULL, NULL },
+ {"poi_search", GTK_STOCK_FIND, N_("_Search..."), "<control>P", NULL, G_CALLBACK(cb_poi_search) },
+ {"search_address", GTK_STOCK_FIND, N_("Address..."), "<control>F", NULL, G_CALLBACK(menu_cb_search_address) },
+
{"map", NULL, N_("_Map"), NULL, NULL, NULL },
{"map_maps", NULL, N_("_Maps"), NULL, NULL, NULL },
{"map_manager", NULL, N_("Manager..."), NULL, NULL, G_CALLBACK(menu_cb_mapman) },
{"goto_home", GTK_STOCK_HOME, N_("_Home"), "<control>H", NULL, G_CALLBACK(menu_cb_goto_home) },
{"goto_destination", GTK_STOCK_JUMP_TO, N_("_Destination"), "<control>J", NULL, G_CALLBACK(menu_cb_goto_destination) },
{"goto_gps", NULL, N_("_GPS"), "<control>G", NULL, G_CALLBACK(menu_cb_goto_gps) },
- {"search_address", GTK_STOCK_FIND, N_("Address..."), NULL, NULL, G_CALLBACK(menu_cb_search_address) },
{"goto_latlon", NULL, N_("Lat/Lon"), NULL, NULL, G_CALLBACK(menu_cb_goto_latlon) },
{"goto_nextway", NULL, N_("Next Waypoint"), NULL, NULL, G_CALLBACK(menu_cb_goto_nextway) },
{"goto_nearpoi", NULL, N_("Near POI"), NULL, NULL, G_CALLBACK(menu_cb_goto_nearpoi) },
{"gps", NULL, N_("Gp_s"), NULL, NULL, NULL },
- {"gps_details", GTK_STOCK_INFO, N_("_Details..."), NULL, NULL, G_CALLBACK(menu_cb_gps_details) },
{"gps_settings", NULL, N_("_Settings..."), NULL, NULL, NULL },
};
static guint n_ui_entries = G_N_ELEMENTS (ui_entries);
static guint n_ui_toggle_entries = G_N_ELEMENTS (ui_toggle_entries);
static GtkRadioActionEntry ui_autocenter_entries[] = {
- { "autocenter_latlon", NULL, "Lat/Lon", "<control>1", NULL, CENTER_LATLON },
- { "autocenter_lead", NULL, "Lead", "<control>2", NULL, CENTER_LEAD },
- { "autocenter_none", NULL, "None", "<control>3", NULL, CENTER_MANUAL },
+ { "autocenter_latlon", NULL, "Lat/Lon", "<control>L", NULL, CENTER_LATLON },
+ { "autocenter_lead", NULL, "Lead", "<control>E", NULL, CENTER_LEAD },
+ { "autocenter_none", NULL, "None", "<control>N", NULL, CENTER_MANUAL },
};
static guint n_ui_autocenter_entries = G_N_ELEMENTS (ui_autocenter_entries);
if (!been_here++) {
/* Set connection state first, to avoid going into this if twice. */
- if (!_rcvr_mac && _enable_gps) {
+ if (!_gps->io.address && _enable_gps) {
GtkWidget *confirm;
gtk_window_present(GTK_WINDOW(_window));
gtk_main_quit();
}
}
- /* Connect to receiver. */
- if (_enable_gps && _rcvr_mac)
- rcvr_connect_now();
done_here++; /* Don't ask... */
}
/* Re-enable any banners that might have been up. */
{
- ConnState old_state = _conn_state;
- gps_conn_set_state(RCVR_OFF);
- gps_conn_set_state(old_state);
+ GpsConnState old_state = _gps->io.conn;
+ gps_conn_set_state(_gps, RCVR_OFF);
+ gps_conn_set_state(_gps, old_state);
}
}
#endif
}
-void
-variables_init(void)
-{
-UNITS_TEXT[UNITS_KM] = _("km");
-UNITS_TEXT[UNITS_MI] = _("mi.");
-UNITS_TEXT[UNITS_NM] = _("n.m.");
-
-INFO_FONT_TEXT[INFO_FONT_XXSMALL] = "xx-small";
-INFO_FONT_TEXT[INFO_FONT_XSMALL] = "x-small";
-INFO_FONT_TEXT[INFO_FONT_SMALL] = "small";
-INFO_FONT_TEXT[INFO_FONT_MEDIUM] = "medium";
-INFO_FONT_TEXT[INFO_FONT_LARGE] = "large";
-INFO_FONT_TEXT[INFO_FONT_XLARGE] = "x-large";
-INFO_FONT_TEXT[INFO_FONT_XXLARGE] = "xx-large";
-
-CUSTOM_KEY_GCONF[CUSTOM_KEY_UP] = GCONF_KEY_PREFIX "/key_up";
-CUSTOM_KEY_GCONF[CUSTOM_KEY_DOWN] = GCONF_KEY_PREFIX "/key_down";
-CUSTOM_KEY_GCONF[CUSTOM_KEY_LEFT] = GCONF_KEY_PREFIX "/key_left";
-CUSTOM_KEY_GCONF[CUSTOM_KEY_RIGHT] = GCONF_KEY_PREFIX "/key_right";
-CUSTOM_KEY_GCONF[CUSTOM_KEY_SELECT] = GCONF_KEY_PREFIX "/key_select";
-CUSTOM_KEY_GCONF[CUSTOM_KEY_INCREASE] = GCONF_KEY_PREFIX "/key_increase";
-CUSTOM_KEY_GCONF[CUSTOM_KEY_DECREASE] = GCONF_KEY_PREFIX "/key_decrease";
-CUSTOM_KEY_GCONF[CUSTOM_KEY_FULLSCREEN] = GCONF_KEY_PREFIX "/key_fullscreen";
-CUSTOM_KEY_GCONF[CUSTOM_KEY_ESC] = GCONF_KEY_PREFIX "/key_esc";
-
-CUSTOM_KEY_ICON[CUSTOM_KEY_UP] = HWK_BUTTON_UP;
-CUSTOM_KEY_ICON[CUSTOM_KEY_LEFT] = HWK_BUTTON_LEFT;
-CUSTOM_KEY_ICON[CUSTOM_KEY_DOWN] = HWK_BUTTON_DOWN;
-CUSTOM_KEY_ICON[CUSTOM_KEY_RIGHT] = HWK_BUTTON_RIGHT;
-CUSTOM_KEY_ICON[CUSTOM_KEY_SELECT] = HWK_BUTTON_SELECT;
-CUSTOM_KEY_ICON[CUSTOM_KEY_INCREASE] = HWK_BUTTON_INCREASE;
-CUSTOM_KEY_ICON[CUSTOM_KEY_DECREASE] = HWK_BUTTON_DECREASE;
-CUSTOM_KEY_ICON[CUSTOM_KEY_FULLSCREEN] = HWK_BUTTON_VIEW;
-CUSTOM_KEY_ICON[CUSTOM_KEY_ESC] = HWK_BUTTON_CANCEL;
-
-CUSTOM_KEY_DEFAULT[CUSTOM_KEY_UP] = CUSTOM_ACTION_PAN_NORTH;
-CUSTOM_KEY_DEFAULT[CUSTOM_KEY_LEFT] = CUSTOM_ACTION_PAN_WEST;
-CUSTOM_KEY_DEFAULT[CUSTOM_KEY_DOWN] = CUSTOM_ACTION_PAN_SOUTH;
-CUSTOM_KEY_DEFAULT[CUSTOM_KEY_RIGHT] = CUSTOM_ACTION_PAN_EAST;
-CUSTOM_KEY_DEFAULT[CUSTOM_KEY_SELECT] = CUSTOM_ACTION_TOGGLE_AUTOCENTER;
-CUSTOM_KEY_DEFAULT[CUSTOM_KEY_INCREASE] = CUSTOM_ACTION_ZOOM_IN;
-CUSTOM_KEY_DEFAULT[CUSTOM_KEY_DECREASE] = CUSTOM_ACTION_ZOOM_OUT;
-CUSTOM_KEY_DEFAULT[CUSTOM_KEY_FULLSCREEN] = CUSTOM_ACTION_TOGGLE_FULLSCREEN;
-CUSTOM_KEY_DEFAULT[CUSTOM_KEY_ESC] = CUSTOM_ACTION_TOGGLE_TRACKS;
-
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_PAN_NORTH] = _("Pan North");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_PAN_WEST] = _("Pan West");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_PAN_SOUTH] = _("Pan South");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_PAN_EAST] = _("Pan East");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TOGGLE_AUTOCENTER] = _("Toggle Auto-Center");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TOGGLE_FULLSCREEN] = _("Toggle Fullscreen");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_ZOOM_IN] = _("Zoom In");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_ZOOM_OUT] = _("Zoom Out");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TOGGLE_TRACKS] = _("Toggle Tracks");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TOGGLE_SCALE] = _("Toggle Scale");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TOGGLE_POI] = _("Toggle POIs");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_CHANGE_REPO] = _("Select Next Repository");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_ROUTE_DISTNEXT] = _("Show Distance to Next Waypoint");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_ROUTE_DISTLAST] = _("Show Distance to End of Route");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TRACK_BREAK] = _("Insert Track Break");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TRACK_DISTLAST] = _("Show Distance from Last Break");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TRACK_DISTFIRST] = _("Show Distance from Beginning");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TOGGLE_GPS] = _("Toggle GPS");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TOGGLE_GPSINFO] = _("Toggle GPS Info");
-CUSTOM_ACTION_TEXT[CUSTOM_ACTION_TOGGLE_SPEEDLIMIT] = _("Toggle Speed Limit");
-
-COLORABLE_GCONF[COLORABLE_MARK] = GCONF_KEY_PREFIX "/color_mark";
-COLORABLE_GCONF[COLORABLE_MARK_VELOCITY] = GCONF_KEY_PREFIX "/color_mark_velocity";
-COLORABLE_GCONF[COLORABLE_MARK_OLD] = GCONF_KEY_PREFIX "/color_mark_old";
-COLORABLE_GCONF[COLORABLE_TRACK] = GCONF_KEY_PREFIX "/color_track";
-COLORABLE_GCONF[COLORABLE_TRACK_MARK] = GCONF_KEY_PREFIX "/color_track_mark";
-COLORABLE_GCONF[COLORABLE_TRACK_BREAK] = GCONF_KEY_PREFIX "/color_track_break";
-COLORABLE_GCONF[COLORABLE_ROUTE] = GCONF_KEY_PREFIX "/color_route";
-COLORABLE_GCONF[COLORABLE_ROUTE_WAY] = GCONF_KEY_PREFIX "/color_route_way";
-COLORABLE_GCONF[COLORABLE_ROUTE_BREAK] = GCONF_KEY_PREFIX "/color_route_break";
-COLORABLE_GCONF[COLORABLE_POI] = GCONF_KEY_PREFIX "/color_poi";
-}
/**
* Initialize everything required in preparation for calling gtk_main().
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
-
#ifdef WITH_HILDON
_program = HILDON_PROGRAM(hildon_program_get_instance());
_window = GTK_WIDGET(hildon_window_new());
/* GPS Tab */
vbox = gtk_vbox_new(FALSE, 0);
label = gtk_label_new("Gps");
-_gps_sat_view = gtk_gps_new(GTK_GPS_MODE_SKY, &_gps);
+_gps_sat_view = gtk_gps_new(GTK_GPS_MODE_SKY, &_gps->data);
gtk_box_pack_start(GTK_BOX(vbox), _gps_sat_view, TRUE, TRUE, 0);
-_gps_sat_view = gtk_gps_new(GTK_GPS_MODE_SIGNAL, &_gps);
+_gps_sat_view = gtk_gps_new(GTK_GPS_MODE_SIGNAL, &_gps->data);
gtk_box_pack_start(GTK_BOX(vbox), _gps_sat_view, TRUE, TRUE, 0);
ui_notebook.gps=gtk_notebook_append_page(notebook, vbox, label);
/* Heading Tab */
vbox = gtk_vbox_new(FALSE, 0);
label = gtk_label_new("Heading");
-_tab_compass = gtk_compass_new(&_gps);
+_tab_compass = gtk_compass_new(&_gps->data);
gtk_box_pack_start(GTK_BOX(vbox), _tab_compass, TRUE, TRUE, 0);
ui_notebook.heading=gtk_notebook_append_page(notebook, vbox, label);
/* If we have a route, calculate the next point. */
route_find_nearest_point();
-gps_show_info();
+gps_show_info(&_gps->data);
gtk_idle_add((GSourceFunc)window_present, NULL);
}
if (dialog)
gtk_widget_destroy(dialog);
}
+
+/**
+ * Simple dialog to ask if we should try to reconnect to GPS
+ * returns TRUE or FALSE
+ */
+gboolean
+gps_retry_connection(Gps *gps, const gchar *error)
+{
+GtkWidget *confirm;
+gboolean r;
+
+confirm=hildon_note_new_confirmation(GTK_WINDOW(_window), _("Failed to connect to GPS receiver. Retry?"));
+r=(GTK_RESPONSE_OK==gtk_dialog_run(GTK_DIALOG(confirm))) ? TRUE : FALSE;
+gtk_widget_destroy(confirm);
+return r;
+}