]> err.no Git - mapper/blobdiff - src/ui-common.c
Use menu entry for color settings.
[mapper] / src / ui-common.c
index bc9e968db52e6dc735562724176b95fc1558e7ac..9d14e13b19f4c9f6e287f5e51f61c67b07e64663 100644 (file)
@@ -17,6 +17,7 @@
 #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 */
@@ -71,7 +72,16 @@ static const gchar *mapper_ui =
 "<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>"
@@ -90,6 +100,10 @@ static const gchar *mapper_ui =
 "      <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'/>"
@@ -115,13 +129,12 @@ static const gchar *mapper_ui =
 "      <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'/>"
@@ -144,7 +157,6 @@ static const gchar *mapper_ui =
 "      <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'/>"
@@ -153,13 +165,11 @@ static const gchar *mapper_ui =
 "    <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>"
@@ -185,7 +195,11 @@ static const gchar *mapper_ui =
 
 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 },
@@ -216,10 +230,13 @@ static GtkActionEntry ui_entries[] = {
        {"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) },
@@ -237,13 +254,11 @@ static GtkActionEntry ui_entries[] = {
        {"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);
@@ -267,9 +282,9 @@ static GtkToggleActionEntry ui_toggle_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);
 
@@ -387,7 +402,7 @@ static gint done_here = 0;
 
 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));
@@ -414,9 +429,6 @@ if (!been_here++) {
                        gtk_main_quit();
                }
        }
-       /* Connect to receiver. */
-       if (_enable_gps && _rcvr_mac)
-               rcvr_connect_now();
 
        done_here++;    /* Don't ask... */
 }
@@ -425,9 +437,9 @@ if (done_here) {
 
        /* 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);
        }
 }
 
@@ -535,83 +547,6 @@ _menu_map = menu;
 #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().
@@ -628,7 +563,6 @@ GtkToolItem *item;
 GtkTreeViewColumn *column;
 GtkCellRenderer *renderer;
 
-
 #ifdef WITH_HILDON
 _program = HILDON_PROGRAM(hildon_program_get_instance());
 _window = GTK_WIDGET(hildon_window_new());
@@ -745,16 +679,16 @@ gtk_paned_add2(GTK_PANED(hbox), _map_widget);
 /* 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);
 
@@ -834,7 +768,7 @@ g_signal_connect(G_OBJECT(_window), "key_release_event", G_CALLBACK(window_cb_ke
 /* 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);
 }
@@ -864,3 +798,19 @@ progress_dialog_remove(GtkWidget *dialog)
 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;
+}