X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fsettings-gui.c;h=37ef52cb43581b95de1f04df4199ddab5b84bfd7;hb=4c3fa14525e44c67b9b3fbf00f86fb24afd44c97;hp=f15f9b1290c2956d4ca66ddbeb6499768afde887;hpb=a20ffbbb6f15f468fe3c60a925eb31348c93deb3;p=mapper diff --git a/src/settings-gui.c b/src/settings-gui.c index f15f9b1..37ef52c 100644 --- a/src/settings-gui.c +++ b/src/settings-gui.c @@ -28,10 +28,12 @@ #include "settings.h" #include "db.h" #include "bluetooth-scan.h" -#include "hildon-wrappers.h" -#include "help.h" #include "osm-db.h" #include "settings-gui.h" +#include "config-gconf.h" +#include "hildon-wrappers.h" +#include "help.h" +#include "dialogs.h" typedef struct _KeysDialogInfo KeysDialogInfo; struct _KeysDialogInfo { @@ -43,6 +45,17 @@ struct _ColorsDialogInfo { GtkWidget *col[COLORABLE_ENUM_COUNT]; }; +typedef struct _GpsDialogInfo GpsDialogInfo; +struct _GpsDialogInfo { + GtkWidget *cmb_gps_type; + GtkWidget *txt_rcvr_mac; + GtkWidget *spn_rcvr_port; + GtkWidget *btn_scan; + GtkTreeIter active; + GtkListStore *store; + GtkTreeIter iter; +}; + #define UPDATE_GC(gc) gdk_gc_set_line_attributes(gc, _draw_width, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); void @@ -50,11 +63,11 @@ update_gcs(void) { gint i; -for (i = 0; i < COLORABLE_ENUM_COUNT; i++) { +for (i=0; i < COLORABLE_ENUM_COUNT; i++) { gdk_color_alloc(gtk_widget_get_colormap(_map_widget),&_color[i]); if (_gc[i]) g_object_unref(_gc[i]); - _gc[i] = gdk_gc_new(_map_pixmap); + _gc[i]=gdk_gc_new(map_pixmap_get()); gdk_gc_set_foreground(_gc[i], &_color[i]); gdk_gc_set_line_attributes(_gc[i], _draw_width, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); } @@ -62,19 +75,19 @@ for (i = 0; i < COLORABLE_ENUM_COUNT; i++) { } static gboolean -settings_dialog_browse_forfile(GtkWidget * widget, BrowseInfo * browse_info) +settings_dialog_browse_forfile(GtkWidget *widget, BrowseInfo *browse_info) { GtkWidget *dialog; gint res; -dialog = GTK_WIDGET(hildon_file_chooser_dialog_new(GTK_WINDOW(browse_info->dialog),GTK_FILE_CHOOSER_ACTION_OPEN)); +dialog=GTK_WIDGET(hildon_file_chooser_dialog_new(GTK_WINDOW(browse_info->dialog),GTK_FILE_CHOOSER_ACTION_OPEN)); gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(dialog), TRUE); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), gtk_entry_get_text(GTK_ENTRY(browse_info->txt))); res=gtk_dialog_run(GTK_DIALOG(dialog)); if (res==GTK_RESPONSE_OK || res==GTK_RESPONSE_ACCEPT) { - gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + gchar *filename=gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); gtk_entry_set_text(GTK_ENTRY(browse_info->txt), filename); g_free(filename); } @@ -89,11 +102,11 @@ settings_dialog_hardkeys_reset(GtkWidget *widget, KeysDialogInfo *cdi) { GtkWidget *confirm; -confirm = hildon_note_new_confirmation(GTK_WINDOW(_window), _("Reset all hardware keys to their original defaults?")); +confirm=hildon_note_new_confirmation(GTK_WINDOW(_window), _("Reset all hardware keys to their original defaults?")); if (GTK_RESPONSE_OK == gtk_dialog_run(GTK_DIALOG(confirm))) { gint i; - for (i = 0; i < CUSTOM_KEY_ENUM_COUNT; i++) + for (i=0; i < CUSTOM_KEY_ENUM_COUNT; i++) gtk_combo_box_set_active(GTK_COMBO_BOX(cdi->cmb[i]), CUSTOM_KEY_DEFAULT[i]); } gtk_widget_destroy(confirm); @@ -110,23 +123,23 @@ GtkWidget *label; KeysDialogInfo bdi; GtkWidget *btn_defaults; -dialog = gtk_dialog_new_with_buttons(_("Hardware Keys"), GTK_WINDOW(_window), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); +dialog=gtk_dialog_new_with_buttons(_("Hardware Keys"), GTK_WINDOW(_window), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); -gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), btn_defaults = gtk_button_new_with_label(_("Reset..."))); +gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), btn_defaults=gtk_button_new_with_label(_("Reset..."))); g_signal_connect(G_OBJECT(btn_defaults), "clicked", G_CALLBACK(settings_dialog_hardkeys_reset), &bdi); gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT); -gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table = gtk_table_new(2, 9, FALSE), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table=gtk_table_new(2, 9, FALSE), TRUE, TRUE, 0); -for (i = 0; i < CUSTOM_KEY_ENUM_COUNT; i++) { +for (i=0; i < CUSTOM_KEY_ENUM_COUNT; i++) { gint j; - gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(""), 0, 1, i, i + 1, GTK_FILL, 0, 2, 1); + gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(""), 0, 1, i, i + 1, GTK_FILL, 0, 2, 1); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); #ifdef WITH_HILDON gtk_label_set_markup(GTK_LABEL(label), CUSTOM_KEY_ICON[i]); #endif - gtk_table_attach(GTK_TABLE(table), bdi.cmb[i] = gtk_combo_box_new_text(), 1, 2, i, i + 1, GTK_FILL, 0, 2, 1); - for (j = 0; j < CUSTOM_ACTION_ENUM_COUNT; j++) + gtk_table_attach(GTK_TABLE(table), bdi.cmb[i]=gtk_combo_box_new_text(), 1, 2, i, i + 1, GTK_FILL, 0, 2, 1); + for (j=0; j < CUSTOM_ACTION_ENUM_COUNT; j++) gtk_combo_box_append_text(GTK_COMBO_BOX(bdi.cmb[i]), CUSTOM_ACTION_TEXT[j]); gtk_combo_box_set_active(GTK_COMBO_BOX(bdi.cmb[i]), _action[i]); } @@ -136,14 +149,14 @@ gtk_widget_show_all(dialog); OUTER_WHILE: while (GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { /* Check for duplicates. */ - for (i = 0; i < CUSTOM_KEY_ENUM_COUNT; i++) { + for (i=0; i < CUSTOM_KEY_ENUM_COUNT; i++) { gint j; - for (j = i + 1; j < CUSTOM_KEY_ENUM_COUNT; j++) { + for (j=i + 1; j < CUSTOM_KEY_ENUM_COUNT; j++) { if (gtk_combo_box_get_active(GTK_COMBO_BOX(bdi.cmb[i])) == gtk_combo_box_get_active(GTK_COMBO_BOX(bdi.cmb[j]))) { GtkWidget *confirm; - gchar *buffer = g_strdup_printf("%s:\n %s\n%s", _("The following action is mapped to multiple keys"), + gchar *buffer=g_strdup_printf("%s:\n %s\n%s", _("The following action is mapped to multiple keys"), CUSTOM_ACTION_TEXT[gtk_combo_box_get_active(GTK_COMBO_BOX(bdi.cmb[i]))], _("Continue?")); - confirm = hildon_note_new_confirmation(GTK_WINDOW(_window), buffer); + confirm=hildon_note_new_confirmation(GTK_WINDOW(_window), buffer); if (GTK_RESPONSE_OK != gtk_dialog_run(GTK_DIALOG(confirm))) { @@ -154,8 +167,8 @@ while (GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { } } } - for (i = 0; i < CUSTOM_KEY_ENUM_COUNT; i++) - _action[i] = gtk_combo_box_get_active(GTK_COMBO_BOX(bdi.cmb[i])); + for (i=0; i < CUSTOM_KEY_ENUM_COUNT; i++) + _action[i]=gtk_combo_box_get_active(GTK_COMBO_BOX(bdi.cmb[i])); break; } @@ -169,11 +182,11 @@ settings_dialog_colors_reset(GtkWidget *widget, ColorsDialogInfo *cdi) { GtkWidget *confirm; -confirm = hildon_note_new_confirmation(GTK_WINDOW(_window), _("Reset all colors to their original defaults?")); +confirm=hildon_note_new_confirmation(GTK_WINDOW(_window), _("Reset all colors to their original defaults?")); if (GTK_RESPONSE_OK == gtk_dialog_run(GTK_DIALOG(confirm))) { gint i; - for (i = 0; i < COLORABLE_ENUM_COUNT; i++) { + for (i=0; i < COLORABLE_ENUM_COUNT; i++) { gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi->col[i]), &COLORABLE_DEFAULT[i]); } } @@ -191,48 +204,48 @@ GtkWidget *label; GtkWidget *btn_defaults; ColorsDialogInfo cdi; -dialog = gtk_dialog_new_with_buttons(_("Colors"), GTK_WINDOW(_window), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); +dialog=gtk_dialog_new_with_buttons(_("Colors"), GTK_WINDOW(_window), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); -gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), btn_defaults = gtk_button_new_with_label(_("Reset..."))); +gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), btn_defaults=gtk_button_new_with_label(_("Reset..."))); g_signal_connect(G_OBJECT(btn_defaults), "clicked", G_CALLBACK(settings_dialog_colors_reset), &cdi); gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT); -gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table = gtk_table_new(4, 3, TRUE), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table=gtk_table_new(4, 3, TRUE), TRUE, TRUE, 0); /* GPS. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("GPS")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("GPS")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_MARK] = gtk_color_button_new(), 1, 2, 0, 1, 0, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_MARK]=gtk_color_button_new(), 1, 2, 0, 1, 0, 0, 2, 4); gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi.col[COLORABLE_MARK]), &_color[COLORABLE_MARK]); -gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_MARK_VELOCITY] = gtk_color_button_new(), 2, 3, 0, 1, 0, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_MARK_VELOCITY]=gtk_color_button_new(), 2, 3, 0, 1, 0, 0, 2, 4); gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi.col[COLORABLE_MARK_VELOCITY]), &_color[COLORABLE_MARK_VELOCITY]); -gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_MARK_OLD] = gtk_color_button_new(), 3, 4, 0, 1, 0, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_MARK_OLD]=gtk_color_button_new(), 3, 4, 0, 1, 0, 0, 2, 4); gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi.col[COLORABLE_MARK_OLD]), &_color[COLORABLE_MARK_OLD]); /* Track. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Track")), 0, 1, 1, 2, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Track")), 0, 1, 1, 2, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_TRACK] = gtk_color_button_new(), 1, 2, 1, 2, 0, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_TRACK]=gtk_color_button_new(), 1, 2, 1, 2, 0, 0, 2, 4); gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi.col[COLORABLE_TRACK]), &_color[COLORABLE_TRACK]); -gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_TRACK_MARK] = gtk_color_button_new(), 2, 3, 1, 2, 0, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_TRACK_MARK]=gtk_color_button_new(), 2, 3, 1, 2, 0, 0, 2, 4); gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi.col[COLORABLE_TRACK_MARK]), &_color[COLORABLE_TRACK_MARK]); -gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_TRACK_BREAK] = gtk_color_button_new(), 3, 4, 1, 2, 0, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_TRACK_BREAK]=gtk_color_button_new(), 3, 4, 1, 2, 0, 0, 2, 4); gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi.col[COLORABLE_TRACK_BREAK]), &_color[COLORABLE_TRACK_BREAK]); /* Route. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Route")), 0, 1, 2, 3, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Route")), 0, 1, 2, 3, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_ROUTE] = gtk_color_button_new(), 1, 2, 2, 3, 0, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_ROUTE]=gtk_color_button_new(), 1, 2, 2, 3, 0, 0, 2, 4); gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi.col[COLORABLE_ROUTE]), &_color[COLORABLE_ROUTE]); -gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_ROUTE_WAY] = gtk_color_button_new(), 2, 3, 2, 3, 0, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_ROUTE_WAY]=gtk_color_button_new(), 2, 3, 2, 3, 0, 0, 2, 4); gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi.col[COLORABLE_ROUTE_WAY]), &_color[COLORABLE_ROUTE_WAY]); -gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_ROUTE_BREAK] = gtk_color_button_new(), 3, 4, 2, 3, 0, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_ROUTE_BREAK]=gtk_color_button_new(), 3, 4, 2, 3, 0, 0, 2, 4); gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi.col[COLORABLE_ROUTE_BREAK]), &_color[COLORABLE_ROUTE_BREAK]); /* POI. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("POI")), 0, 1, 3, 4, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("POI")), 0, 1, 3, 4, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_POI] = gtk_color_button_new(), 1, 2, 3, 4, 0, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), cdi.col[COLORABLE_POI]=gtk_color_button_new(), 1, 2, 3, 4, 0, 0, 2, 4); gtk_color_button_set_color(GTK_COLOR_BUTTON(cdi.col[COLORABLE_POI]), &_color[COLORABLE_POI]); gtk_widget_show_all(dialog); @@ -255,24 +268,50 @@ gtk_widget_destroy(dialog); return TRUE; } +static void +gtk_widget_hideshow(GtkWidget *widget, gboolean show) +{ +g_assert(widget); +if (show==TRUE) + gtk_widget_show(widget); +else + gtk_widget_hide(widget); +} + +static gboolean +gps_type_changed_cb(GtkWidget *widget, gpointer data) +{ +GpsDialogInfo *gdi=(GpsDialogInfo *)data; +gboolean scan, port, address; +GpsIOSourceType type; +guint dport; + +if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(gdi->cmb_gps_type), &gdi->iter)==FALSE) + return TRUE; + +gtk_tree_model_get(GTK_TREE_MODEL(gdi->store), &gdi->iter, 0, &type, 2, &scan, 3, &address, 4, &port, 5, &dport, -1); +g_debug("GPS: %d", type); + +gtk_widget_hideshow(gdi->btn_scan, scan); +gtk_widget_hideshow(gdi->txt_rcvr_mac, address); +gtk_widget_hideshow(gdi->spn_rcvr_port, port); +if (port && dport!=0 && (guint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(gdi->spn_rcvr_port))==0) + gtk_spin_button_set_value(GTK_SPIN_BUTTON(gdi->spn_rcvr_port), (guint)dport); + +return TRUE; +} + gboolean settings_dialog_gps(Gps *gps) { GtkWidget *dialog; GtkWidget *notebook; -GtkWidget *table; -GtkWidget *hbox; GtkWidget *vbox; +GtkWidget *hbox; GtkWidget *label; -GtkWidget *cmb_gps_type; -GtkWidget *txt_rcvr_mac; -GtkWidget *spn_rcvr_port; -GtkWidget *btn_scan; GtkCellRenderer *renderer; -GtkTreeIter active; -GtkListStore *store; -GtkTreeIter iter; -ScanInfo scan_info = { 0 }; +GpsDialogInfo gdi; +ScanInfo scan_info={ 0 }; gboolean rcvr_changed=TRUE, settype=FALSE; GpsTypes *gpstypes; gint i=0; @@ -283,77 +322,92 @@ if (gps->io.conn!=RCVR_OFF) { return FALSE; } -dialog = gtk_dialog_new_with_buttons(_("GPS Settings"), GTK_WINDOW(_window), GTK_DIALOG_MODAL, +dialog=gtk_dialog_new_with_buttons(_("GPS Settings"), GTK_WINDOW(_window), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); help_dialog_help_enable(GTK_DIALOG(dialog), HELP_ID_SETTINGS_GPS); -gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook = gtk_notebook_new(), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook=gtk_notebook_new(), TRUE, TRUE, 0); /* Receiver page. */ -gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox = gtk_vbox_new(FALSE, 4), label = gtk_label_new(_("GPS"))); +gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox=gtk_vbox_new(FALSE, 4), label=gtk_label_new(_("GPS"))); /* Type */ -hbox = gtk_hbox_new(FALSE, 3); -gtk_box_pack_start(GTK_BOX(hbox), label = gtk_label_new(_("GPS Type")), TRUE, TRUE, 0); +hbox=gtk_hbox_new(FALSE, 3); +gtk_box_pack_start(GTK_BOX(hbox), label=gtk_label_new(_("GPS Type")), TRUE, TRUE, 0); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_box_pack_start(GTK_BOX(hbox), cmb_gps_type = gtk_combo_box_new_with_model(GTK_TREE_MODEL(gtk_list_store_new(2, G_TYPE_INT, G_TYPE_STRING))), TRUE, FALSE, 0); + +gdi.cmb_gps_type=gtk_combo_box_new_with_model( + GTK_TREE_MODEL(gtk_list_store_new(6, G_TYPE_INT, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_INT))); + +gtk_box_pack_start(GTK_BOX(hbox), gdi.cmb_gps_type, TRUE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); /* Add GPS types */ -/* Set up the view for the combo box. */ -renderer = gtk_cell_renderer_text_new(); -gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(cmb_gps_type), renderer, TRUE); -gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(cmb_gps_type), renderer, "text", 1, NULL); +renderer=gtk_cell_renderer_text_new(); +gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gdi.cmb_gps_type), renderer, TRUE); +gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gdi.cmb_gps_type), renderer, "text", 1, NULL); -store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(cmb_gps_type))); -gtk_list_store_clear(store); +/* Receiver MAC/File/IP Address. */ +hbox=gtk_hbox_new(FALSE, 3); +gtk_box_pack_start(GTK_BOX(hbox), label=gtk_label_new(_("Address: (MAC/IP/Device)")), TRUE, TRUE, 0); +gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); +gtk_box_pack_start(GTK_BOX(hbox), gdi.txt_rcvr_mac=gtk_entry_new(), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(hbox), gdi.spn_rcvr_port=gtk_spin_button_new_with_range(0, 65535, 1), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(hbox), gdi.btn_scan=gtk_button_new_with_label(_("Scan...")), FALSE, FALSE, 0); +gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); +/* Set up the view for the combo box. */ +gdi.store=GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(gdi.cmb_gps_type))); +gtk_list_store_clear(gdi.store); gpstypes=gps_get_supported_types(); while (gpstypes->type!=0) { - gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, 0, gpstypes->type, 1, gpstypes->name, -1); + gtk_list_store_append(gdi.store, &gdi.iter); + gtk_list_store_set(gdi.store, &gdi.iter, + 0, gpstypes->type, + 1, gpstypes->name, + 2, gpstypes->scan, + 3, gpstypes->address, + 4, gpstypes->port, + 5, gpstypes->port_def, + -1); if (gps->io.type==gpstypes->type) { - active=iter; + gdi.active=gdi.iter; + settype=TRUE; + } else if (settype==FALSE && gps->io.type==GPS_IO_SIMULATION) { + gdi.active=gdi.iter; settype=TRUE; } gpstypes++; } -if (settype==FALSE) - gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &active); +/* Connect signals. */ +scan_info.settings_dialog=dialog; +scan_info.txt_rcvr_mac=gdi.txt_rcvr_mac; -gtk_combo_box_set_active_iter(GTK_COMBO_BOX(cmb_gps_type), &active); +g_signal_connect(G_OBJECT(gdi.btn_scan), "clicked", G_CALLBACK(scan_bluetooth), &scan_info); +g_signal_connect(G_OBJECT(gdi.cmb_gps_type), "changed", G_CALLBACK(gps_type_changed_cb), &gdi); -/* Receiver MAC Address. */ -hbox = gtk_hbox_new(FALSE, 3); -gtk_box_pack_start(GTK_BOX(hbox), label = gtk_label_new(_("Address")), TRUE, TRUE, 0); -gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_box_pack_start(GTK_BOX(hbox), txt_rcvr_mac = gtk_entry_new(), TRUE, TRUE, 0); -gtk_box_pack_start(GTK_BOX(hbox), spn_rcvr_port = gtk_spin_button_new_with_range(0, 65535, 1), TRUE, TRUE, 0); -gtk_box_pack_start(GTK_BOX(hbox), btn_scan = gtk_button_new_with_label(_("Scan...")), FALSE, FALSE, 0); -gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); - -/* Connect signals. */ -scan_info.settings_dialog = dialog; -scan_info.txt_rcvr_mac = txt_rcvr_mac; -g_signal_connect(G_OBJECT(btn_scan), "clicked", G_CALLBACK(scan_bluetooth), &scan_info); -gtk_entry_set_text(GTK_ENTRY(txt_rcvr_mac), gps->io.address ? gps->io.address : ""); -gtk_spin_button_set_value(spn_rcvr_port, gps->io.port); +gtk_entry_set_text(GTK_ENTRY(gdi.txt_rcvr_mac), gps->io.address ? gps->io.address : ""); +gtk_spin_button_set_value(GTK_SPIN_BUTTON(gdi.spn_rcvr_port), gps->io.port); gtk_window_set_default_size(GTK_WINDOW(dialog), 500, -1); gtk_widget_show_all(dialog); +if (settype==FALSE) + gtk_tree_model_get_iter_first(GTK_TREE_MODEL(gdi.store), &gdi.active); +gtk_combo_box_set_active_iter(GTK_COMBO_BOX(gdi.cmb_gps_type), &gdi.active); + while (GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { /* Set _rcvr_mac if necessary. */ - if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(cmb_gps_type), &iter)==TRUE) { - gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 0, &(gps->io.type), -1); + if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(gdi.cmb_gps_type), &gdi.iter)==TRUE) { + gtk_tree_model_get(GTK_TREE_MODEL(gdi.store), &gdi.iter, 0, &(gps->io.type), -1); g_debug("GPS: %d", gps->io.type); } else { - popup_error(_window, "Please select GPS type"); + popup_error(dialog, _("Please select GPS type")); continue; } - if (!*gtk_entry_get_text(GTK_ENTRY(txt_rcvr_mac))) { + if (!*gtk_entry_get_text(GTK_ENTRY(gdi.txt_rcvr_mac))) { /* User specified no rcvr mac - set _rcvr_mac to NULL. */ if (gps->io.address) { g_free(gps->io.address); @@ -368,11 +422,11 @@ while (GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { rcvr_changed=TRUE; set_action_sensitive("gps_details", FALSE); } - } else if (!gps->io.address || strcmp(gps->io.address, gtk_entry_get_text(GTK_ENTRY(txt_rcvr_mac)))) { + } else if (!gps->io.address || strcmp(gps->io.address, gtk_entry_get_text(GTK_ENTRY(gdi.txt_rcvr_mac)))) { /* User specified a new rcvr mac. */ g_free(gps->io.address); - gps->io.address=g_strdup(gtk_entry_get_text(GTK_ENTRY(txt_rcvr_mac))); - gps->io.port=(guint)gtk_spin_button_get_value(spn_rcvr_port); + gps->io.address=g_strdup(gtk_entry_get_text(GTK_ENTRY(gdi.txt_rcvr_mac))); + gps->io.port=(guint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(gdi.spn_rcvr_port)); rcvr_changed=TRUE; } @@ -383,6 +437,28 @@ gtk_widget_destroy(dialog); return rcvr_changed; } +/* XXX: Find a better place for this */ +static void +reinit_database(gchar *newdb) +{ +if (_db) { + poi_deinit(_db); + osm_deinit(); + db_close(&_db); + _db=NULL; +} +if (_mapper_db) { + g_free(_mapper_db); + _mapper_db=NULL; +} +_mapper_db=newdb; +if (_mapper_db==NULL) + return; +db_connect(&_db, _mapper_db); +poi_init(&_db); +osm_init(&_db); +} + gboolean settings_dialog_osm(void) { @@ -393,50 +469,55 @@ GtkWidget *hbox; GtkWidget *label; GtkWidget *txt_mapper_db; GtkWidget *btn_browsedb; -BrowseInfo browse_info = { 0, 0 }; +GtkWidget *num_sens; +BrowseInfo browse_info={ 0, 0 }; -dialog = gtk_dialog_new_with_buttons(_("OSM Settings"), GTK_WINDOW(_window), GTK_DIALOG_MODAL, +dialog=gtk_dialog_new_with_buttons(_("OSM Settings"), GTK_WINDOW(_window), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); help_dialog_help_enable(GTK_DIALOG(dialog), HELP_ID_SETTINGS_OSM); -gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook = gtk_notebook_new(), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook=gtk_notebook_new(), TRUE, TRUE, 0); /* Database page */ -gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table = gtk_table_new(2, 3, FALSE), label = gtk_label_new(_("Database"))); +gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table=gtk_table_new(2, 3, FALSE), label=gtk_label_new(_("Database"))); /* Database. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Database")), 0, 1, 1, 2, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Database")), 0, 1, 1, 2, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), hbox = gtk_hbox_new(FALSE, 4), 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4); -gtk_box_pack_start(GTK_BOX(hbox), txt_mapper_db = gtk_entry_new(), TRUE, TRUE, 0); -gtk_box_pack_start(GTK_BOX(hbox), btn_browsedb = gtk_button_new_with_label(_("Browse...")), FALSE, FALSE, 0); +gtk_table_attach(GTK_TABLE(table), hbox=gtk_hbox_new(FALSE, 4), 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4); +gtk_box_pack_start(GTK_BOX(hbox), txt_mapper_db=gtk_entry_new(), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(hbox), btn_browsedb=gtk_button_new_with_label(_("Browse...")), FALSE, FALSE, 0); + +gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table=gtk_table_new(2, 3, FALSE), label=gtk_label_new(_("Advanced"))); + +/* Advanced */ +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Sensitivity")), 0, 1, 1, 2, GTK_FILL, 0, 2, 4); +gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); +gtk_table_attach(GTK_TABLE(table), num_sens=hildon_controlbar_new(), 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4); +hildon_controlbar_set_range(HILDON_CONTROLBAR(num_sens), 1, 10); +force_min_visible_bars(HILDON_CONTROLBAR(num_sens), 1); gtk_entry_set_text(GTK_ENTRY(txt_mapper_db), _mapper_db ? _mapper_db : ""); +hildon_controlbar_set_value(HILDON_CONTROLBAR(num_sens), _map_location_sens); -browse_info.dialog = dialog; -browse_info.txt = txt_mapper_db; +browse_info.dialog=dialog; +browse_info.txt=txt_mapper_db; g_signal_connect(G_OBJECT(btn_browsedb), "clicked", G_CALLBACK(settings_dialog_browse_forfile), &browse_info); gtk_window_set_default_size(GTK_WINDOW(dialog), 500, 300); gtk_widget_show_all(dialog); if (GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { - if (_db) { - poi_deinit(_db); - osm_deinit(); - db_close(&_db); - _db=NULL; - } - g_free(_mapper_db); + _map_location_sens=hildon_controlbar_get_value(HILDON_CONTROLBAR(num_sens)); if (strlen(gtk_entry_get_text(GTK_ENTRY(txt_mapper_db)))>0) { - _mapper_db=g_strdup(gtk_entry_get_text(GTK_ENTRY(txt_mapper_db))); - db_connect(&_db, _mapper_db); - poi_init(&_db); - osm_init(&_db); + gchar *tmp; + tmp=g_strdup(gtk_entry_get_text(GTK_ENTRY(txt_mapper_db))); + if (tmp && _mapper_db && strcmp(tmp, _mapper_db)!=0) { + reinit_database(tmp); + } } else { - _mapper_db=NULL; + reinit_database(NULL); } - config_save(); } gtk_widget_destroy(dialog); @@ -459,6 +540,7 @@ GtkWidget *dialog; GtkWidget *notebook; GtkWidget *table; GtkWidget *hbox; +GtkWidget *vbox; GtkWidget *hbox2; GtkWidget *label; GtkWidget *num_center_ratio; @@ -478,106 +560,125 @@ GtkWidget *num_poi_zoom; GtkWidget *chk_speed_on; GtkWidget *num_speed; GtkWidget *cmb_info_font_size; + +GtkWidget *announce_destination; +GtkWidget *announce_overspeed; +GtkWidget *announce_waypoints; guint i; -dialog = gtk_dialog_new_with_buttons(_("Settings"), GTK_WINDOW(_window), GTK_DIALOG_MODAL, +dialog=gtk_dialog_new_with_buttons(_("Settings"), GTK_WINDOW(_window), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); help_dialog_help_enable(GTK_DIALOG(dialog), HELP_ID_SETTINGS); -gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook = gtk_notebook_new(), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook=gtk_notebook_new(), TRUE, TRUE, 0); /* Auto-Center page. */ -gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table = gtk_table_new(2, 2, FALSE), label = gtk_label_new(_("Auto-Center"))); +gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table=gtk_table_new(2, 2, FALSE), label=gtk_label_new(_("Auto-Center"))); /* Auto-Center Sensitivity. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Sensitivity")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Sensitivity")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), num_center_ratio = hildon_controlbar_new(), 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), num_center_ratio=hildon_controlbar_new(), 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4); hildon_controlbar_set_range(HILDON_CONTROLBAR(num_center_ratio), 1, 10); force_min_visible_bars(HILDON_CONTROLBAR(num_center_ratio), 1); /* Lead Amount. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Lead Amount")), 0, 1, 1, 2, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Lead Amount")), 0, 1, 1, 2, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), num_lead_ratio = hildon_controlbar_new(), 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), num_lead_ratio=hildon_controlbar_new(), 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4); hildon_controlbar_set_range(HILDON_CONTROLBAR(num_lead_ratio), 1, 10); force_min_visible_bars(HILDON_CONTROLBAR(num_lead_ratio), 1); /* Announcement page */ -gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table = gtk_table_new(2, 3, FALSE), label = gtk_label_new(_("Announce"))); +gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table=gtk_table_new(2, 3, FALSE), label=gtk_label_new(_("Announce"))); /* Announcement Advance Notice. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Advance Notice")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Advance Notice")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), num_announce_notice = hildon_controlbar_new(), 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), num_announce_notice=hildon_controlbar_new(), 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4); hildon_controlbar_set_range(HILDON_CONTROLBAR(num_announce_notice), 1, 20); force_min_visible_bars(HILDON_CONTROLBAR(num_announce_notice), 1); +gtk_table_attach(GTK_TABLE(table), vbox=gtk_vbox_new(FALSE, 4), 0, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 6); +gtk_box_pack_start(GTK_BOX(vbox), announce_waypoints=gtk_check_button_new_with_label(_("Enable waypoint announcements")), TRUE, TRUE, 4); +gtk_box_pack_start(GTK_BOX(vbox), announce_destination=gtk_check_button_new_with_label(_("Enable destination announcements")), TRUE, TRUE, 4); +gtk_box_pack_start(GTK_BOX(vbox), announce_overspeed=gtk_check_button_new_with_label(_("Enable overspeed announcements")), TRUE, TRUE, 4); + +/* Voice page */ +gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table=gtk_table_new(2, 3, FALSE), label=gtk_label_new(_("Voice"))); + /* Enable Voice. */ -gtk_table_attach(GTK_TABLE(table), chk_enable_voice = gtk_check_button_new_with_label(_("Enable Voice Synthesis")), 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), chk_enable_voice=gtk_check_button_new_with_label(_("Enable Voice Synthesis")), 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chk_enable_voice), _enable_voice); /* Voice Speed and Pitch. */ -gtk_table_attach(GTK_TABLE(table), hbox = gtk_hbox_new(FALSE, 12), 0, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 6); -gtk_box_pack_start(GTK_BOX(hbox), hbox2 = gtk_hbox_new(FALSE, 4), TRUE, TRUE, 4); -gtk_box_pack_start(GTK_BOX(hbox2), lbl_voice_speed = gtk_label_new(_("Speed (words/minute)")), TRUE, TRUE, 0); -gtk_box_pack_start(GTK_BOX(hbox2), num_voice_speed = hildon_number_editor_new(80, 370), TRUE, TRUE, 0); -gtk_box_pack_start(GTK_BOX(hbox), hbox2 = gtk_hbox_new(FALSE, 4), TRUE, TRUE, 4); -gtk_box_pack_start(GTK_BOX(hbox2), lbl_voice_pitch = gtk_label_new(_("Pitch")), TRUE, TRUE, 0); -gtk_box_pack_start(GTK_BOX(hbox2), num_voice_pitch = hildon_number_editor_new(1, 99), TRUE, TRUE, 0); +gtk_table_attach(GTK_TABLE(table), hbox=gtk_hbox_new(FALSE, 4), 0, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 6); +gtk_box_pack_start(GTK_BOX(hbox), hbox2=gtk_hbox_new(FALSE, 4), TRUE, TRUE, 4); +gtk_box_pack_start(GTK_BOX(hbox2), lbl_voice_speed=gtk_label_new(_("Speed (words/minute)")), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(hbox2), num_voice_speed=hildon_number_editor_new(80, 370), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(hbox), hbox2=gtk_hbox_new(FALSE, 4), TRUE, TRUE, 4); +gtk_box_pack_start(GTK_BOX(hbox2), lbl_voice_pitch=gtk_label_new(_("Pitch")), TRUE, TRUE, 0); +gtk_box_pack_start(GTK_BOX(hbox2), num_voice_pitch=hildon_number_editor_new(1, 99), TRUE, TRUE, 0); + +#ifndef WITH_ESPEAK +gtk_widget_set_sensitive(chk_enable_voice, FALSE); +gtk_widget_set_sensitive(num_voice_speed, FALSE); +gtk_widget_set_sensitive(num_voice_pitch, FALSE); +#endif /* Display settings page. */ -gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table = gtk_table_new(2, 3, FALSE), label = gtk_label_new(_("Display"))); +gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table=gtk_table_new(2, 3, FALSE), label=gtk_label_new(_("Display"))); /* Line Width. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Line Width")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Line Width")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), num_draw_width = hildon_controlbar_new(), 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), num_draw_width=hildon_controlbar_new(), 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4); hildon_controlbar_set_range(HILDON_CONTROLBAR(num_draw_width), 1, 20); force_min_visible_bars(HILDON_CONTROLBAR(num_draw_width), 1); /* Keep Display On Only When Fullscreen. */ -gtk_table_attach(GTK_TABLE(table), chk_always_keep_on = gtk_check_button_new_with_label(_("Keep Display On Only in Fullscreen Mode")), 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), chk_always_keep_on=gtk_check_button_new_with_label(_("Keep Display On Only in Fullscreen Mode")), 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4); /* Information Font Size. */ -gtk_table_attach(GTK_TABLE(table), hbox = gtk_hbox_new(FALSE, 4), 0, 2, 2, 3, GTK_FILL, 0, 2, 4); -gtk_box_pack_start(GTK_BOX(hbox), label = gtk_label_new(_("Information Font Size")), FALSE, FALSE, 0); -gtk_box_pack_start(GTK_BOX(hbox), cmb_info_font_size = gtk_combo_box_new_text(), FALSE, FALSE, 0); -for (i = 0; i < INFO_FONT_ENUM_COUNT; i++) +gtk_table_attach(GTK_TABLE(table), hbox=gtk_hbox_new(FALSE, 4), 0, 2, 2, 3, GTK_FILL, 0, 2, 4); +gtk_box_pack_start(GTK_BOX(hbox), label=gtk_label_new(_("Information Font Size")), FALSE, FALSE, 0); +gtk_box_pack_start(GTK_BOX(hbox), cmb_info_font_size=gtk_combo_box_new_text(), FALSE, FALSE, 0); +for (i=0; i < INFO_FONT_ENUM_COUNT; i++) gtk_combo_box_append_text(GTK_COMBO_BOX(cmb_info_font_size), INFO_FONT_TEXT[i]); /* Units page. */ -gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table = gtk_table_new(2, 3, FALSE), label = gtk_label_new(_("Units"))); +gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table=gtk_table_new(2, 3, FALSE), label=gtk_label_new(_("Units"))); /* Units. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Units")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Units")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), cmb_units = gtk_combo_box_new_text(), 1, 2, 0, 1, GTK_FILL, 0, 2, 4); -for (i = 0; i < UNITS_ENUM_COUNT; i++) +gtk_table_attach(GTK_TABLE(table), cmb_units=gtk_combo_box_new_text(), 1, 2, 0, 1, GTK_FILL, 0, 2, 4); +for (i=0; i < UNITS_ENUM_COUNT; i++) gtk_combo_box_append_text(GTK_COMBO_BOX(cmb_units), UNITS_TEXT[i]); /* Degrees format */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Degrees Format")), 0, 1, 1, 2, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Degrees Format")), 0, 1, 1, 2, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), label = gtk_alignment_new(0.f, 0.5f, 0.f, 0.f), 1, 2, 1, 2, GTK_FILL, 0, 2, 4); -gtk_container_add(GTK_CONTAINER(label), cmb_degformat = gtk_combo_box_new_text()); -for (i = 0; i < DEG_FORMAT_ENUM_COUNT; i++) +gtk_table_attach(GTK_TABLE(table), label=gtk_alignment_new(0.f, 0.5f, 0.f, 0.f), 1, 2, 1, 2, GTK_FILL, 0, 2, 4); +gtk_container_add(GTK_CONTAINER(label), cmb_degformat=gtk_combo_box_new_text()); +for (i=0; i < DEG_FORMAT_ENUM_COUNT; i++) gtk_combo_box_append_text(GTK_COMBO_BOX(cmb_degformat), DEG_FORMAT_TEXT[i]); gtk_table_attach(GTK_TABLE(table), gtk_label_new(""), 2, 3, 0, 2, GTK_FILL | GTK_EXPAND, 0, 2, 4); /* Speed warner. */ -gtk_table_attach(GTK_TABLE(table), hbox = gtk_hbox_new(FALSE, 4), 0, 3, 2, 3, GTK_FILL, 0, 2, 4); -gtk_box_pack_start(GTK_BOX(hbox), chk_speed_on = gtk_check_button_new_with_label(_("Display Speed")), FALSE, FALSE, 0); -gtk_box_pack_start(GTK_BOX(hbox), label = gtk_alignment_new(0.f, 0.5f, 0.f, 0.f), FALSE, FALSE, 0); -gtk_container_add(GTK_CONTAINER(label), num_speed = hildon_number_editor_new(0, 999)); +gtk_table_attach(GTK_TABLE(table), hbox=gtk_hbox_new(FALSE, 4), 0, 3, 2, 3, GTK_FILL, 0, 2, 4); +gtk_box_pack_start(GTK_BOX(hbox), chk_speed_on=gtk_check_button_new_with_label(_("Display Speed")), FALSE, FALSE, 0); +gtk_box_pack_start(GTK_BOX(hbox), label=gtk_alignment_new(0.f, 0.5f, 0.f, 0.f), FALSE, FALSE, 0); +gtk_container_add(GTK_CONTAINER(label), num_speed=hildon_number_editor_new(0, 999)); + +gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table=gtk_table_new(2, 3, FALSE), label=gtk_label_new(_("POIs"))); -gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table = gtk_table_new(2, 3, FALSE), label = gtk_label_new(_("POIs"))); /* Show POI below zoom. */ -gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Show POI below zoom")), 0, 1, 2, 3, GTK_FILL, 0, 2, 4); +gtk_table_attach(GTK_TABLE(table), label=gtk_label_new(_("Show POI below zoom")), 0, 1, 2, 3, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); -gtk_table_attach(GTK_TABLE(table), label = gtk_alignment_new(0.f, 0.5f, 0.f, 0.f), 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 4); -gtk_container_add(GTK_CONTAINER(label), num_poi_zoom = hildon_number_editor_new(0, MAX_ZOOM)); +gtk_table_attach(GTK_TABLE(table), label=gtk_alignment_new(0.f, 0.5f, 0.f, 0.f), 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 4); +gtk_container_add(GTK_CONTAINER(label), num_poi_zoom=hildon_number_editor_new(0, MAX_ZOOM)); /* Initialize fields. */ hildon_number_editor_set_value(HILDON_NUMBER_EDITOR(num_poi_zoom), _poi_zoom); @@ -599,20 +700,20 @@ gtk_window_set_default_size(GTK_WINDOW(dialog), 500, 300); gtk_widget_show_all(dialog); if (GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { - _center_ratio = hildon_controlbar_get_value(HILDON_CONTROLBAR(num_center_ratio)); - _lead_ratio = hildon_controlbar_get_value(HILDON_CONTROLBAR(num_lead_ratio)); - _draw_width = hildon_controlbar_get_value(HILDON_CONTROLBAR(num_draw_width)); - _always_keep_on = !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_always_keep_on)); - _units = gtk_combo_box_get_active(GTK_COMBO_BOX(cmb_units)); - _degformat = gtk_combo_box_get_active(GTK_COMBO_BOX(cmb_degformat)); - _speed_on = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_speed_on)); - _speed_limit = hildon_number_editor_get_value(HILDON_NUMBER_EDITOR(num_speed)); - _info_font_size = gtk_combo_box_get_active(GTK_COMBO_BOX(cmb_info_font_size)); - _announce_notice_ratio = hildon_controlbar_get_value(HILDON_CONTROLBAR(num_announce_notice)); - _voice_speed = hildon_number_editor_get_value(HILDON_NUMBER_EDITOR(num_voice_speed)); - _voice_pitch = hildon_number_editor_get_value(HILDON_NUMBER_EDITOR(num_voice_pitch)); - _enable_voice = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_enable_voice)); - _poi_zoom = hildon_number_editor_get_value(HILDON_NUMBER_EDITOR(num_poi_zoom)); + _center_ratio=hildon_controlbar_get_value(HILDON_CONTROLBAR(num_center_ratio)); + _lead_ratio=hildon_controlbar_get_value(HILDON_CONTROLBAR(num_lead_ratio)); + _draw_width=hildon_controlbar_get_value(HILDON_CONTROLBAR(num_draw_width)); + _always_keep_on=!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_always_keep_on)); + _units=gtk_combo_box_get_active(GTK_COMBO_BOX(cmb_units)); + _degformat=gtk_combo_box_get_active(GTK_COMBO_BOX(cmb_degformat)); + _speed_on=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_speed_on)); + _speed_limit=hildon_number_editor_get_value(HILDON_NUMBER_EDITOR(num_speed)); + _info_font_size=gtk_combo_box_get_active(GTK_COMBO_BOX(cmb_info_font_size)); + _announce_notice_ratio=hildon_controlbar_get_value(HILDON_CONTROLBAR(num_announce_notice)); + _voice_speed=hildon_number_editor_get_value(HILDON_NUMBER_EDITOR(num_voice_speed)); + _voice_pitch=hildon_number_editor_get_value(HILDON_NUMBER_EDITOR(num_voice_pitch)); + _enable_voice=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_enable_voice)); + _poi_zoom=hildon_number_editor_get_value(HILDON_NUMBER_EDITOR(num_poi_zoom)); speak_set_parameters(_voice_speed, _voice_pitch); update_gcs();