2 * Copyright (C) 2006, 2007 John Costigan.
4 * POI and GPS-Info code originally written by Cezary Jackiewicz.
6 * Default map data provided by http://www.openstreetmap.org/
8 * This file is part of Maemo Mapper.
10 * Maemo Mapper is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License, or
13 * (at your option) any later version.
15 * Maemo Mapper is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with Maemo Mapper. If not, see <http://www.gnu.org/licenses/>.
34 # include <hildon/hildon-help.h>
35 # include <hildon/hildon-program.h>
36 # include <hildon/hildon-banner.h>
38 # include <osso-helplib.h>
39 # include <hildon-widgets/hildon-program.h>
40 # include <hildon-widgets/hildon-banner.h>
41 # include <hildon-widgets/hildon-input-mode-hint.h>
51 #include "aprs_kiss.h"
52 #include "aprs_display.h"
53 #include "gdk-pixbuf-rotate.h"
62 /****************************************************************************
63 * BELOW: ROUTE MENU ********************************************************
64 ****************************************************************************/
67 menu_cb_route_open(GtkMenuItem *item)
71 printf("%s()\n", __PRETTY_FUNCTION__);
73 if(display_open_file(GTK_WINDOW(_window), &buffer, NULL, &size,
74 &_route_dir_uri, NULL, GTK_FILE_CHOOSER_ACTION_OPEN))
76 /* If auto is enabled, append the route, otherwise replace it. */
77 if(gpx_path_parse(&_route, buffer, size,
78 _autoroute_data.enabled ? 0 : 1))
80 path_save_route_to_db();
84 /* Find the nearest route point, if we're connected. */
85 route_find_nearest_point();
88 MACRO_BANNER_SHOW_INFO(_window, _("Route Opened"));
91 popup_error(_window, _("Error parsing GPX file."));
95 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
100 menu_cb_route_download(GtkMenuItem *item)
102 printf("%s()\n", __PRETTY_FUNCTION__);
103 route_download(NULL);
104 vprintf("%s(): return\n", __PRETTY_FUNCTION__);
109 menu_cb_route_save(GtkMenuItem *item)
111 GnomeVFSHandle *handle;
112 printf("%s()\n", __PRETTY_FUNCTION__);
114 if(display_open_file(GTK_WINDOW(_window), NULL, &handle, NULL,
115 &_route_dir_uri, NULL, GTK_FILE_CHOOSER_ACTION_SAVE))
117 if(gpx_path_write(&_route, handle))
119 MACRO_BANNER_SHOW_INFO(_window, _("Route Saved"));
122 popup_error(_window, _("Error writing GPX file."));
123 gnome_vfs_close(handle);
126 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
131 menu_cb_route_distnext(GtkMenuItem *item)
133 printf("%s()\n", __PRETTY_FUNCTION__);
135 route_show_distance_to_next();
137 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
142 menu_cb_route_distlast(GtkMenuItem *item)
144 printf("%s()\n", __PRETTY_FUNCTION__);
146 route_show_distance_to_last();
148 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
153 menu_cb_route_reset(GtkMenuItem *item)
155 printf("%s()\n", __PRETTY_FUNCTION__);
159 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
164 menu_cb_route_clear(GtkMenuItem *item)
166 printf("%s()\n", __PRETTY_FUNCTION__);
169 MACRO_PATH_FREE(_route);
170 MACRO_PATH_INIT(_route);
171 path_save_route_to_db();
172 route_find_nearest_point();
175 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
179 /****************************************************************************
180 * ABOVE: ROUTE MENU ********************************************************
181 ****************************************************************************/
183 /****************************************************************************
184 * BELOW: TRACK MENU ********************************************************
185 ****************************************************************************/
188 menu_cb_track_open(GtkMenuItem *item)
192 printf("%s()\n", __PRETTY_FUNCTION__);
194 if(display_open_file(GTK_WINDOW(_window), &buffer, NULL, &size,
195 NULL, &_track_file_uri, GTK_FILE_CHOOSER_ACTION_OPEN))
197 if(gpx_path_parse(&_track, buffer, size, -1))
200 MACRO_BANNER_SHOW_INFO(_window, _("Track Opened"));
203 popup_error(_window, _("Error parsing GPX file."));
207 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
212 menu_cb_track_save(GtkMenuItem *item)
214 GnomeVFSHandle *handle;
215 printf("%s()\n", __PRETTY_FUNCTION__);
217 if(display_open_file(GTK_WINDOW(_window), NULL, &handle, NULL,
218 NULL, &_track_file_uri, GTK_FILE_CHOOSER_ACTION_SAVE))
220 if(gpx_path_write(&_track, handle))
222 MACRO_BANNER_SHOW_INFO(_window, _("Track Saved"));
225 popup_error(_window, _("Error writing GPX file."));
226 gnome_vfs_close(handle);
229 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
234 menu_cb_track_insert_break(GtkMenuItem *item)
236 printf("%s()\n", __PRETTY_FUNCTION__);
238 track_insert_break(TRUE);
240 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
245 menu_cb_track_insert_mark(GtkMenuItem *item)
248 gchar tmp1[LL_FMT_LEN], tmp2[LL_FMT_LEN], *p_latlon;
249 static GtkWidget *dialog = NULL;
250 static GtkWidget *table = NULL;
251 static GtkWidget *label = NULL;
252 static GtkWidget *lbl_latlon = NULL;
253 static GtkWidget *txt_scroll = NULL;
254 static GtkWidget *txt_desc = NULL;
255 printf("%s()\n", __PRETTY_FUNCTION__);
259 dialog = gtk_dialog_new_with_buttons(_("Insert Mark"),
260 GTK_WINDOW(_window), GTK_DIALOG_MODAL,
261 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
262 GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
265 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),
266 table = gtk_table_new(2, 2, FALSE), TRUE, TRUE, 0);
268 gtk_table_attach(GTK_TABLE(table),
269 label = gtk_label_new(_("Lat, Lon:")),
270 0, 1, 0, 1, GTK_FILL, 0, 2, 4);
271 gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
273 gtk_table_attach(GTK_TABLE(table),
274 lbl_latlon = gtk_label_new(""),
275 1, 2, 0, 1, GTK_FILL, 0, 2, 4);
276 gtk_misc_set_alignment(GTK_MISC(lbl_latlon), 0.0f, 0.5f);
278 gtk_table_attach(GTK_TABLE(table),
279 label = gtk_label_new(_("Description")),
280 0, 1, 1, 2, GTK_FILL, 0, 2, 4);
281 gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
283 txt_scroll = gtk_scrolled_window_new(NULL, NULL);
284 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(txt_scroll),
286 gtk_table_attach(GTK_TABLE(table),
288 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4);
290 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(txt_scroll),
291 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
293 txt_desc = gtk_text_view_new ();
294 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(txt_desc), GTK_WRAP_WORD);
296 gtk_container_add(GTK_CONTAINER(txt_scroll), txt_desc);
297 gtk_widget_set_size_request(GTK_WIDGET(txt_scroll), 400, 60);
300 unit2latlon(_pos.unitx, _pos.unity, lat, lon);
302 format_lat_lon(lat, lon, tmp1, tmp2);
303 //lat_format(lat, tmp1);
304 //lon_format(lon, tmp2);
305 p_latlon = g_strdup_printf("%s, %s", tmp1, tmp2);
306 gtk_label_set_text(GTK_LABEL(lbl_latlon), p_latlon);
309 gtk_text_buffer_set_text(
310 gtk_text_view_get_buffer(GTK_TEXT_VIEW(txt_desc)), "", 0);
312 gtk_widget_show_all(dialog);
314 while(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog)))
317 GtkTextIter ti1, ti2;
320 tbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(txt_desc));
321 gtk_text_buffer_get_iter_at_offset(tbuf, &ti1, 0);
322 gtk_text_buffer_get_end_iter(tbuf, &ti2);
323 desc = gtk_text_buffer_get_text(tbuf, &ti1, &ti2, TRUE);
327 MACRO_PATH_INCREMENT_WTAIL(_track);
328 _track.wtail->point = _track.tail;
330 = gtk_text_buffer_get_text(tbuf, &ti1, &ti2, TRUE);
335 _("Please provide a description for the mark."));
341 MACRO_QUEUE_DRAW_AREA();
344 gtk_widget_hide(dialog);
346 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
351 menu_cb_track_distlast(GtkMenuItem *item)
353 printf("%s()\n", __PRETTY_FUNCTION__);
355 track_show_distance_from_last();
357 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
362 menu_cb_track_distfirst(GtkMenuItem *item)
364 printf("%s()\n", __PRETTY_FUNCTION__);
366 track_show_distance_from_first();
368 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
373 menu_cb_track_clear(GtkMenuItem *item)
375 printf("%s()\n", __PRETTY_FUNCTION__);
379 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
384 menu_cb_track_enable_tracking(GtkMenuItem *item)
386 printf("%s()\n", __PRETTY_FUNCTION__);
388 if(!(_enable_tracking = gtk_check_menu_item_get_active(
389 GTK_CHECK_MENU_ITEM(_menu_track_enable_tracking_item))))
391 track_insert_break(FALSE); /* FALSE = not temporary */
392 MACRO_BANNER_SHOW_INFO(_window, _("Tracking Disabled"));
396 MACRO_BANNER_SHOW_INFO(_window, _("Tracking Enabled"));
400 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
404 /****************************************************************************
405 * ABOVE: TRACK MENU ********************************************************
406 ****************************************************************************/
408 /****************************************************************************
409 * BELOW: POI MENU **********************************************************
410 ****************************************************************************/
413 menu_cb_poi_import(GtkMenuItem *item)
415 printf("%s()\n", __PRETTY_FUNCTION__);
417 if(poi_import_dialog(_center.unitx, _center.unity))
420 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
425 menu_cb_poi_download(GtkMenuItem *item)
427 printf("%s()\n", __PRETTY_FUNCTION__);
429 if(poi_download_dialog(0, 0)) /* 0, 0 means no default origin */
432 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
437 menu_cb_poi_browse(GtkMenuItem *item)
439 printf("%s()\n", __PRETTY_FUNCTION__);
441 if(poi_browse_dialog(0, 0)) /* 0, 0 means no default origin */
444 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
449 menu_cb_poi_categories(GtkMenuItem *item)
451 printf("%s()\n", __PRETTY_FUNCTION__);
453 if(category_list_dialog(_window))
456 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
460 /****************************************************************************
461 * ABOVE: POI MENU **********************************************************
462 ****************************************************************************/
464 /****************************************************************************
465 * BELOW: MAPS MENU *********************************************************
466 ****************************************************************************/
469 menu_cb_maps_repoman(GtkMenuItem *item)
471 printf("%s()\n", __PRETTY_FUNCTION__);
473 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
478 menu_cb_maps_repodown(GtkMenuItem *item)
480 printf("%s()\n", __PRETTY_FUNCTION__);
482 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
487 menu_cb_maps_select(GtkMenuItem *item, gpointer new_repo)
489 printf("%s()\n", __PRETTY_FUNCTION__);
491 if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)))
493 repo_set_curr(new_repo);
494 map_refresh_mark(TRUE);
496 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
501 menu_cb_maps_mapman(GtkMenuItem *item)
503 printf("%s()\n", __PRETTY_FUNCTION__);
507 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
512 menu_cb_maps_auto_download(GtkMenuItem *item)
514 printf("%s()\n", __PRETTY_FUNCTION__);
516 if((_auto_download = gtk_check_menu_item_get_active(
517 GTK_CHECK_MENU_ITEM(_menu_maps_auto_download_item))))
519 if(_curr_repo->url == REPOTYPE_NONE)
521 _("NOTE: You must set a Map URI in the current repository in "
522 "order to download maps."));
523 map_refresh_mark(TRUE);
526 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
530 /****************************************************************************
531 * ABOVE: MAPS MENU *********************************************************
532 ****************************************************************************/
534 /****************************************************************************
535 * BELOW: LAYERS MENU *******************************************************
536 ****************************************************************************/
539 menu_cb_layers_toggle(GtkCheckMenuItem *item, gpointer layer)
541 RepoData* rd = (RepoData*)layer;
543 printf("%s()\n", __PRETTY_FUNCTION__);
545 rd->layer_enabled = !rd->layer_enabled;
547 /* refresh if layer is on top of active map */
548 if (repo_is_layer (_curr_repo, rd)) {
549 /* reset layer's countdown */
550 rd->layer_refresh_countdown = rd->layer_refresh_interval;
552 map_refresh_mark (TRUE);
555 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
559 /****************************************************************************
560 * ABOVE: LAYERS MENU *******************************************************
561 ****************************************************************************/
563 /****************************************************************************
564 * BELOW: VIEW/ZOOM MENU ****************************************************
565 ****************************************************************************/
568 menu_cb_view_zoom_in(GtkMenuItem *item)
570 printf("%s()\n", __PRETTY_FUNCTION__);
575 snprintf(buffer, sizeof(buffer),"%s %d",
576 _("Zoom to Level"), _next_zoom - 1);
577 MACRO_BANNER_SHOW_INFO(_window, buffer);
578 map_set_zoom(_next_zoom - 1);
581 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
586 menu_cb_view_zoom_out(GtkMenuItem *item)
588 printf("%s()\n", __PRETTY_FUNCTION__);
593 snprintf(buffer, sizeof(buffer),"%s %d",
594 _("Zoom to Level"), _next_zoom + 1);
595 MACRO_BANNER_SHOW_INFO(_window, buffer);
596 map_set_zoom(_next_zoom + 1);
599 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
603 /****************************************************************************
604 * ABOVE: VIEW/ZOOM MENU ****************************************************
605 ****************************************************************************/
607 /****************************************************************************
608 * BELOW: VIEW/ROTATE MENU **************************************************
609 ****************************************************************************/
612 menu_cb_view_rotate_clock(GtkMenuItem *item)
614 printf("%s()\n", __PRETTY_FUNCTION__);
616 map_rotate(-ROTATE_DEGREES);
618 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
623 menu_cb_view_rotate_counter(GtkMenuItem *item)
625 printf("%s()\n", __PRETTY_FUNCTION__);
627 map_rotate(ROTATE_DEGREES);
629 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
634 menu_cb_view_rotate_reset(GtkMenuItem *item)
636 printf("%s()\n", __PRETTY_FUNCTION__);
638 map_rotate(-_next_map_rotate_angle);
640 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
645 menu_cb_view_rotate_auto(GtkMenuItem *item)
647 printf("%s()\n", __PRETTY_FUNCTION__);
649 if(gtk_check_menu_item_get_active(
650 GTK_CHECK_MENU_ITEM(_menu_view_rotate_auto_item)))
652 _center_rotate = TRUE;
654 map_refresh_mark(TRUE);
655 MACRO_BANNER_SHOW_INFO(_window, _("Auto-Rotate Enabled"));
659 _center_rotate = FALSE;
660 MACRO_BANNER_SHOW_INFO(_window, _("Auto-Rotate Disabled"));
663 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
667 /****************************************************************************
668 * ABOVE: VIEW/ROTATE MENU **************************************************
669 ****************************************************************************/
671 /****************************************************************************
672 * BELOW: VIEW/PAN MENU *****************************************************
673 ****************************************************************************/
676 menu_cb_view_pan_up(GtkMenuItem *item)
678 gfloat panx_adj, pany_adj;
679 printf("%s()\n", __PRETTY_FUNCTION__);
681 /* Adjust for rotate angle. */
682 gdk_pixbuf_rotate_vector(&panx_adj, &pany_adj, _map_reverse_matrix,
685 map_pan(pixel2unit((gint)(panx_adj + 0.5f)),
686 pixel2unit((gint)(pany_adj + 0.5f)));
688 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
693 menu_cb_view_pan_down(GtkMenuItem *item)
695 gfloat panx_adj, pany_adj;
696 printf("%s()\n", __PRETTY_FUNCTION__);
698 /* Adjust for rotate angle. */
699 gdk_pixbuf_rotate_vector(&panx_adj, &pany_adj, _map_reverse_matrix,
702 map_pan(pixel2unit((gint)(panx_adj + 0.5f)),
703 pixel2unit((gint)(pany_adj + 0.5f)));
705 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
710 menu_cb_view_pan_left(GtkMenuItem *item)
712 gfloat panx_adj, pany_adj;
713 printf("%s()\n", __PRETTY_FUNCTION__);
715 /* Adjust for rotate angle. */
716 gdk_pixbuf_rotate_vector(&panx_adj, &pany_adj, _map_reverse_matrix,
719 map_pan(pixel2unit((gint)(panx_adj + 0.5f)),
720 pixel2unit((gint)(pany_adj + 0.5f)));
722 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
727 menu_cb_view_pan_right(GtkMenuItem *item)
729 gfloat panx_adj, pany_adj;
730 printf("%s()\n", __PRETTY_FUNCTION__);
732 /* Adjust for rotate angle. */
733 gdk_pixbuf_rotate_vector(&panx_adj, &pany_adj, _map_reverse_matrix,
736 map_pan(pixel2unit((gint)(panx_adj + 0.5f)),
737 pixel2unit((gint)(pany_adj + 0.5f)));
739 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
744 menu_cb_view_pan_north(GtkMenuItem *item)
746 printf("%s()\n", __PRETTY_FUNCTION__);
748 map_pan(0, -pixel2unit(PAN_PIXELS));
750 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
755 menu_cb_view_pan_south(GtkMenuItem *item)
757 printf("%s()\n", __PRETTY_FUNCTION__);
759 map_pan(0, pixel2unit(PAN_PIXELS));
761 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
766 menu_cb_view_pan_west(GtkMenuItem *item)
768 printf("%s()\n", __PRETTY_FUNCTION__);
770 map_pan(-pixel2unit(PAN_PIXELS), 0);
772 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
777 menu_cb_view_pan_east(GtkMenuItem *item)
779 printf("%s()\n", __PRETTY_FUNCTION__);
781 map_pan(pixel2unit(PAN_PIXELS), 0);
783 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
787 /****************************************************************************
788 * ABOVE: VIEW/PAN MENU *****************************************************
789 ****************************************************************************/
791 /****************************************************************************
792 * BELOW: VIEW/GOTO MENU ****************************************************
793 ****************************************************************************/
796 menu_cb_view_goto_latlon(GtkMenuItem *item)
798 static GtkWidget *dialog = NULL;
799 static GtkWidget *table = NULL;
800 static GtkWidget *label = NULL;
801 static GtkWidget *txt_lat = NULL;
802 static GtkWidget *txt_lon = NULL;
803 printf("%s()\n", __PRETTY_FUNCTION__);
807 dialog = gtk_dialog_new_with_buttons(_("Go to Lat/Lon"),
808 GTK_WINDOW(_window), GTK_DIALOG_MODAL,
809 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
810 GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
813 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),
814 table = gtk_table_new(2, 3, FALSE), TRUE, TRUE, 0);
816 gtk_table_attach(GTK_TABLE(table),
817 label = gtk_label_new(_("Latitude")),
818 0, 1, 0, 1, GTK_FILL, 0, 2, 4);
819 gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
821 gtk_table_attach(GTK_TABLE(table),
822 txt_lat = gtk_entry_new(),
823 1, 2, 0, 1, GTK_FILL, 0, 2, 4);
824 gtk_entry_set_width_chars(GTK_ENTRY(txt_lat), 16);
825 gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
828 g_object_set(G_OBJECT(txt_lat), "hildon-input-mode",
829 HILDON_GTK_INPUT_MODE_FULL, NULL);
831 g_object_set(G_OBJECT(txt_lat), HILDON_AUTOCAP, FALSE, NULL);
832 g_object_set(G_OBJECT(txt_lat), HILDON_INPUT_MODE_HINT,
833 HILDON_INPUT_MODE_HINT_ALPHANUMERICSPECIAL, NULL);
837 gtk_table_attach(GTK_TABLE(table),
838 label = gtk_label_new(_("Longitude")),
839 0, 1, 1, 2, GTK_FILL, 0, 2, 4);
840 gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
842 gtk_table_attach(GTK_TABLE(table),
843 txt_lon = gtk_entry_new(),
844 1, 2, 1, 2, GTK_FILL, 0, 2, 4);
845 gtk_entry_set_width_chars(GTK_ENTRY(txt_lon), 16);
846 gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
849 g_object_set(G_OBJECT(txt_lon), "hildon-input-mode",
850 HILDON_GTK_INPUT_MODE_FULL, NULL);
852 g_object_set(G_OBJECT(txt_lon), HILDON_AUTOCAP, FALSE, NULL);
853 g_object_set(G_OBJECT(txt_lon), HILDON_INPUT_MODE_HINT,
854 HILDON_INPUT_MODE_HINT_ALPHANUMERICSPECIAL, NULL);
859 /* Initialize with the current center position. */
864 unit2latlon(_center.unitx, _center.unity, lat, lon);
865 //lat_format(lat, buffer1);
866 //lon_format(lon, buffer2);
867 format_lat_lon(lat, lon, buffer1, buffer2);
868 gtk_entry_set_text(GTK_ENTRY(txt_lat), buffer1);
869 gtk_entry_set_text(GTK_ENTRY(txt_lon), buffer2);
872 gtk_widget_show_all(dialog);
874 while(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog)))
881 text = gtk_entry_get_text(GTK_ENTRY(txt_lat));
882 lat = strdmstod(text, &error_check);
883 if(text == error_check || lat < -90. || lat > 90.) {
884 popup_error(dialog, _("Invalid Latitude"));
888 text = gtk_entry_get_text(GTK_ENTRY(txt_lon));
889 lon = strdmstod(text, &error_check);
890 if(text == error_check || lon < -180. || lon > 180.) {
891 popup_error(dialog, _("Invalid Longitude"));
895 latlon2unit(lat, lon, sel_unit.unitx, sel_unit.unity);
897 gtk_check_menu_item_set_active(
898 GTK_CHECK_MENU_ITEM(_menu_view_ac_none_item), TRUE);
899 map_center_unit(sel_unit);
902 gtk_widget_hide(dialog);
903 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
908 menu_cb_view_goto_address(GtkMenuItem *item)
910 static GtkWidget *dialog = NULL;
911 static GtkWidget *table = NULL;
912 static GtkWidget *label = NULL;
913 static GtkWidget *txt_addr = NULL;
914 printf("%s()\n", __PRETTY_FUNCTION__);
918 GtkEntryCompletion *comp;
919 dialog = gtk_dialog_new_with_buttons(_("Go to Address"),
920 GTK_WINDOW(_window), GTK_DIALOG_MODAL,
921 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
922 GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
925 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),
926 table = gtk_table_new(2, 3, FALSE), TRUE, TRUE, 0);
928 gtk_table_attach(GTK_TABLE(table),
929 label = gtk_label_new(_("Address")),
930 0, 1, 0, 1, GTK_FILL, 0, 2, 4);
931 gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
933 gtk_table_attach(GTK_TABLE(table),
934 txt_addr = gtk_entry_new(),
935 1, 2, 0, 1, GTK_FILL, 0, 2, 4);
936 gtk_entry_set_width_chars(GTK_ENTRY(txt_addr), 25);
937 gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
939 /* Set up auto-completion. */
940 comp = gtk_entry_completion_new();
941 gtk_entry_completion_set_model(comp, GTK_TREE_MODEL(_loc_model));
942 gtk_entry_completion_set_text_column(comp, 0);
943 gtk_entry_set_completion(GTK_ENTRY(txt_addr), comp);
946 gtk_widget_show_all(dialog);
948 while(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog)))
950 Point origin = locate_address(dialog,
951 gtk_entry_get_text(GTK_ENTRY(txt_addr)));
954 MACRO_BANNER_SHOW_INFO(_window, _("Address Located"));
957 gtk_check_menu_item_set_active(
958 GTK_CHECK_MENU_ITEM(_menu_view_ac_none_item), TRUE);
960 map_center_unit(origin);
962 /* Success! Get out of the while loop. */
966 gtk_widget_hide(dialog);
967 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
972 menu_cb_view_goto_gps(GtkMenuItem *item)
974 printf("%s()\n", __PRETTY_FUNCTION__);
977 gtk_check_menu_item_set_active(
978 GTK_CHECK_MENU_ITEM(_menu_view_ac_none_item), TRUE);
980 map_center_unit(_pos);
982 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
987 menu_cb_view_goto_nextway(GtkMenuItem *item)
990 printf("%s()\n", __PRETTY_FUNCTION__);
992 next_way = path_get_next_way();
994 if(next_way && next_way->point->unity)
997 gtk_check_menu_item_set_active(
998 GTK_CHECK_MENU_ITEM(_menu_view_ac_none_item), TRUE);
1000 map_center_unit(*next_way->point);
1004 MACRO_BANNER_SHOW_INFO(_window, _("There is no next waypoint."));
1007 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1012 menu_cb_view_goto_nearpoi(GtkMenuItem *item)
1014 printf("%s()\n", __PRETTY_FUNCTION__);
1021 if((_center_mode > 0 ? get_nearest_poi(_pos.unitx, _pos.unity, &poi)
1022 : get_nearest_poi(_center.unitx, _center.unity, &poi) ))
1024 /* Auto-Center is enabled - use the GPS position. */
1026 latlon2unit(poi.lat, poi.lon, unit.unitx, unit.unity);
1027 banner = g_strdup_printf("%s (%s)", poi.label, poi.clabel);
1028 MACRO_BANNER_SHOW_INFO(_window, banner);
1034 if(_center_mode > 0)
1035 gtk_check_menu_item_set_active(
1036 GTK_CHECK_MENU_ITEM(_menu_view_ac_none_item), TRUE);
1038 map_center_unit(unit);
1042 MACRO_BANNER_SHOW_INFO(_window, _("No POIs found."));
1043 /* Auto-Center is disabled - use the view center. */
1047 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1051 /****************************************************************************
1052 * ABOVE: VIEW/GOTO MENU ****************************************************
1053 ****************************************************************************/
1055 /****************************************************************************
1056 * BELOW: VIEW/SHOW MENU ****************************************************
1057 ****************************************************************************/
1060 menu_cb_view_show_tracks(GtkMenuItem *item)
1062 printf("%s()\n", __PRETTY_FUNCTION__);
1064 _show_paths ^= TRACKS_MASK;
1065 if(gtk_check_menu_item_get_active(
1066 GTK_CHECK_MENU_ITEM(_menu_view_show_tracks_item)))
1068 _show_paths |= TRACKS_MASK;
1070 MACRO_QUEUE_DRAW_AREA();
1071 MACRO_BANNER_SHOW_INFO(_window, _("Tracks are now shown"));
1075 _show_paths &= ~TRACKS_MASK;
1077 MACRO_BANNER_SHOW_INFO(_window, _("Tracks are now hidden"));
1080 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1085 menu_cb_view_show_zoomlevel(GtkMenuItem *item)
1087 printf("%s()\n", __PRETTY_FUNCTION__);
1089 _show_zoomlevel = gtk_check_menu_item_get_active(
1090 GTK_CHECK_MENU_ITEM(_menu_view_show_zoomlevel_item));
1093 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1098 menu_cb_view_show_scale(GtkMenuItem *item)
1100 printf("%s()\n", __PRETTY_FUNCTION__);
1102 _show_scale = gtk_check_menu_item_get_active(
1103 GTK_CHECK_MENU_ITEM(_menu_view_show_scale_item));
1106 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1111 menu_cb_view_show_comprose(GtkMenuItem *item)
1113 printf("%s()\n", __PRETTY_FUNCTION__);
1115 _show_comprose = gtk_check_menu_item_get_active(
1116 GTK_CHECK_MENU_ITEM(_menu_view_show_comprose_item));
1119 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1124 menu_cb_view_show_routes(GtkMenuItem *item)
1126 printf("%s()\n", __PRETTY_FUNCTION__);
1128 if(gtk_check_menu_item_get_active(
1129 GTK_CHECK_MENU_ITEM(_menu_view_show_routes_item)))
1131 _show_paths |= ROUTES_MASK;
1133 MACRO_QUEUE_DRAW_AREA();
1134 MACRO_BANNER_SHOW_INFO(_window, _("Routes are now shown"));
1138 _show_paths &= ~ROUTES_MASK;
1140 MACRO_BANNER_SHOW_INFO(_window, _("Routes are now hidden"));
1143 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1148 menu_cb_view_show_velvec(GtkMenuItem *item)
1150 printf("%s()\n", __PRETTY_FUNCTION__);
1152 _show_velvec = gtk_check_menu_item_get_active(
1153 GTK_CHECK_MENU_ITEM(_menu_view_show_velvec_item));
1156 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1161 menu_cb_view_show_poi(GtkMenuItem *item)
1163 printf("%s()\n", __PRETTY_FUNCTION__);
1165 _show_poi = gtk_check_menu_item_get_active(
1166 GTK_CHECK_MENU_ITEM(_menu_view_show_poi_item));
1169 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1173 /****************************************************************************
1174 * ABOVE: VIEW/SHOW MENU ****************************************************
1175 ****************************************************************************/
1177 /****************************************************************************
1178 * BELOW: VIEW/AUTO-CENTER MENU *********************************************
1179 ****************************************************************************/
1182 menu_cb_view_ac_lead(GtkMenuItem *item)
1184 printf("%s()\n", __PRETTY_FUNCTION__);
1186 if(gtk_check_menu_item_get_active(
1187 GTK_CHECK_MENU_ITEM(_menu_view_ac_lead_item)))
1189 _center_mode = CENTER_LEAD;
1190 MACRO_BANNER_SHOW_INFO(_window, _("Auto-Center Mode: Lead"));
1191 map_refresh_mark(TRUE);
1194 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1199 menu_cb_view_ac_latlon(GtkMenuItem *item)
1201 printf("%s()\n", __PRETTY_FUNCTION__);
1203 if(gtk_check_menu_item_get_active(
1204 GTK_CHECK_MENU_ITEM(_menu_view_ac_latlon_item)))
1206 _center_mode = CENTER_LATLON;
1207 MACRO_BANNER_SHOW_INFO(_window, _("Auto-Center Mode: Lat/Lon"));
1208 map_refresh_mark(TRUE);
1211 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1216 menu_cb_view_ac_none(GtkMenuItem *item)
1218 printf("%s()\n", __PRETTY_FUNCTION__);
1220 if(gtk_check_menu_item_get_active(
1221 GTK_CHECK_MENU_ITEM(_menu_view_ac_none_item)))
1223 _center_mode = -_center_mode;
1224 MACRO_BANNER_SHOW_INFO(_window, _("Auto-Center Off"));
1227 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1231 /****************************************************************************
1232 * ABOVE: VIEW/AUTO-CENTER MENU *********************************************
1233 ****************************************************************************/
1236 menu_cb_view_fullscreen(GtkMenuItem *item)
1238 printf("%s()\n", __PRETTY_FUNCTION__);
1240 if((_fullscreen = gtk_check_menu_item_get_active(
1241 GTK_CHECK_MENU_ITEM(_menu_view_fullscreen_item))))
1242 gtk_window_fullscreen(GTK_WINDOW(_window));
1244 gtk_window_unfullscreen(GTK_WINDOW(_window));
1246 g_idle_add((GSourceFunc)window_present, NULL);
1248 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1252 /****************************************************************************
1253 * BELOW: APRS MENU *********************************************************
1254 ****************************************************************************/
1257 static gboolean menu_cb_aprs_settings(GtkMenuItem *item)
1259 printf("%s()\n", __PRETTY_FUNCTION__);
1261 gboolean aprs_inet_config_changed = FALSE;
1262 gboolean aprs_tty_config_changed = FALSE;
1264 aprs_settings_dialog(&aprs_inet_config_changed, &aprs_tty_config_changed);
1266 if(aprs_inet_config_changed)
1268 gtk_widget_set_sensitive(GTK_WIDGET(_menu_enable_aprs_inet_item), _aprs_enable);
1269 gtk_widget_set_sensitive(GTK_WIDGET(_menu_enable_aprs_tty_item), _aprs_enable);
1270 gtk_widget_set_sensitive(GTK_WIDGET(_menu_list_aprs_stations_item), _aprs_enable);
1271 gtk_widget_set_sensitive(GTK_WIDGET(_menu_list_aprs_messages_item), _aprs_enable);
1274 aprs_server_disconnect();
1276 if(_aprs_enable && _aprs_inet_enable)
1278 aprs_server_connect();
1282 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1286 static gboolean menu_cb_enable_tty_aprs(GtkMenuItem *item)
1288 printf("%s()\n", __PRETTY_FUNCTION__);
1293 if((_aprs_tty_enable = gtk_check_menu_item_get_active(
1294 GTK_CHECK_MENU_ITEM(_menu_enable_aprs_tty_item))))
1297 aprs_tty_disconnect();
1301 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1307 menu_cb_enable_inet_aprs(GtkMenuItem *item)
1309 printf("%s()\n", __PRETTY_FUNCTION__);
1314 if((_aprs_inet_enable = gtk_check_menu_item_get_active(
1315 GTK_CHECK_MENU_ITEM(_menu_enable_aprs_inet_item))))
1316 aprs_server_connect();
1318 aprs_server_disconnect();
1328 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1332 static gboolean menu_cb_list_aprs_messages(GtkMenuItem *item)
1334 printf("%s()\n", __PRETTY_FUNCTION__);
1346 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1351 menu_cb_list_aprs_stations(GtkMenuItem *item)
1353 printf("%s()\n", __PRETTY_FUNCTION__);
1365 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1369 #endif // INCLUDE_APRS
1371 /****************************************************************************
1372 * BELOW: GPS MENU **********************************************************
1373 ****************************************************************************/
1376 menu_cb_gps_enable(GtkMenuItem *item)
1378 printf("%s()\n", __PRETTY_FUNCTION__);
1380 if((_enable_gps = gtk_check_menu_item_get_active(
1381 GTK_CHECK_MENU_ITEM(_menu_gps_enable_item))))
1388 gtk_widget_set_sensitive(GTK_WIDGET(_menu_gps_details_item), _enable_gps);
1389 gtk_widget_set_sensitive(GTK_WIDGET(_menu_gps_reset_item), _enable_gps);
1391 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1396 menu_cb_gps_show_info(GtkMenuItem *item)
1398 printf("%s()\n", __PRETTY_FUNCTION__);
1400 _gps_info = gtk_check_menu_item_get_active(
1401 GTK_CHECK_MENU_ITEM(_menu_gps_show_info_item));
1405 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1410 menu_cb_gps_details(GtkMenuItem *item)
1412 printf("%s()\n", __PRETTY_FUNCTION__);
1416 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1421 menu_cb_gps_reset(GtkMenuItem *item)
1423 printf("%s()\n", __PRETTY_FUNCTION__);
1427 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1431 /****************************************************************************
1432 * ABOVE: GPS MENU **********************************************************
1433 ****************************************************************************/
1436 menu_cb_settings(GtkMenuItem *item)
1438 printf("%s()\n", __PRETTY_FUNCTION__);
1440 if(settings_dialog())
1442 /* Settings have changed - reconnect to receiver. */
1450 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1455 menu_cb_help(GtkMenuItem *item)
1457 printf("%s()\n", __PRETTY_FUNCTION__);
1460 hildon_help_show(_osso, HELP_ID_INTRO, 0);
1462 ossohelp_show(_osso, HELP_ID_INTRO, 0);
1465 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1470 menu_cb_about(GtkMenuItem *item)
1472 printf("%s()\n", __PRETTY_FUNCTION__);
1475 hildon_help_show(_osso, HELP_ID_ABOUT, HILDON_HELP_SHOW_DIALOG);
1477 ossohelp_show(_osso, HELP_ID_ABOUT, OSSO_HELP_SHOW_DIALOG);
1480 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
1487 menu_maps_remove_repos()
1490 printf("%s()\n", __PRETTY_FUNCTION__);
1492 /* Delete one menu item for each repo. */
1493 for(curr = _repo_list; curr; curr = curr->next)
1495 gtk_widget_destroy(gtk_container_get_children(
1496 GTK_CONTAINER(_menu_maps_submenu))->data);
1499 menu_layers_remove_repos ();
1501 vprintf("%s(): return\n", __PRETTY_FUNCTION__);
1506 menu_layers_remove_repos()
1509 printf("%s()\n", __PRETTY_FUNCTION__);
1511 /* Delete one menu item for each repo. */
1512 while ((child = gtk_container_get_children(GTK_CONTAINER(_menu_layers_submenu))))
1513 gtk_widget_destroy (child->data);
1515 vprintf("%s(): return\n", __PRETTY_FUNCTION__);
1520 menu_maps_add_repos()
1523 GtkWidget *last_repo = NULL;
1524 printf("%s()\n", __PRETTY_FUNCTION__);
1526 for(curr = g_list_last(_repo_list); curr; curr = curr->prev)
1528 RepoData *rd = (RepoData*)curr->data;
1529 GtkWidget *menu_item;
1531 gtk_menu_prepend(_menu_maps_submenu, menu_item
1532 = gtk_radio_menu_item_new_with_label_from_widget(
1533 GTK_RADIO_MENU_ITEM(last_repo), rd->name));
1536 gtk_menu_prepend(_menu_maps_submenu, menu_item
1537 = gtk_radio_menu_item_new_with_label(NULL, rd->name));
1538 last_repo = menu_item;
1540 gtk_check_menu_item_set_active(
1541 GTK_CHECK_MENU_ITEM(menu_item), rd == _curr_repo);
1542 rd->menu_item = menu_item;
1545 /* Add signals (must be after entire menu is built). */
1547 GList *currmi = gtk_container_get_children(
1548 GTK_CONTAINER(_menu_maps_submenu));
1549 for(curr = _repo_list; curr; curr = curr->next, currmi = currmi->next)
1551 g_signal_connect(G_OBJECT(currmi->data), "activate",
1552 G_CALLBACK(menu_cb_maps_select), curr->data);
1556 gtk_widget_show_all(_menu_maps_submenu);
1557 menu_layers_add_repos ();
1559 vprintf("%s(): return\n", __PRETTY_FUNCTION__);
1564 menu_layers_add_repos()
1568 printf("%s()\n", __PRETTY_FUNCTION__);
1570 for(curr = _repo_list; curr; curr = curr->next)
1572 RepoData* rd = (RepoData*)curr->data;
1573 GtkWidget *item, *submenu = NULL, *layer_item;
1575 /* if repository doesn't have layers, skip it */
1579 /* if it has only one layer, add just one check menu item */
1580 if (!rd->layers->layers) {
1581 gchar *title = g_malloc (strlen (rd->name) + strlen (rd->layers->name) + 3);
1583 sprintf (title, "%s[%s]", rd->name, rd->layers->name);
1586 gtk_menu_append (_menu_layers_submenu, layer_item = gtk_check_menu_item_new_with_label (title));
1587 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (layer_item), rd->layer_enabled);
1588 g_signal_connect (G_OBJECT (layer_item), "toggled", G_CALLBACK (menu_cb_layers_toggle), rd);
1589 rd->menu_item = layer_item;
1592 /* append main repository menu item */
1593 gtk_menu_append (_menu_layers_submenu, item = gtk_menu_item_new_with_label(rd->name));
1598 submenu = gtk_menu_new ();
1599 gtk_menu_append (submenu, layer_item = gtk_check_menu_item_new_with_label (rd->name));
1600 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (layer_item), rd->layer_enabled);
1601 g_signal_connect (G_OBJECT (layer_item), "toggled", G_CALLBACK (menu_cb_layers_toggle), rd);
1602 rd->menu_item = layer_item;
1607 gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
1611 gtk_widget_show_all(_menu_layers_submenu);
1612 vprintf("%s(): return\n", __PRETTY_FUNCTION__);
1617 * Create the menu items needed for the drop down menu.
1622 /* Create needed handles. */
1625 GtkWidget *submenu2;
1626 GtkWidget *menu_item;
1627 printf("%s()\n", __PRETTY_FUNCTION__);
1629 /* Get the menu of our view. */
1630 menu = GTK_MENU(gtk_menu_new());
1632 /* Create the menu items. */
1634 /* The "Routes" submenu. */
1635 gtk_menu_append(menu, menu_item
1636 = gtk_menu_item_new_with_label(_("Route")));
1637 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1638 submenu = gtk_menu_new());
1639 gtk_menu_append(submenu, _menu_route_open_item
1640 = gtk_menu_item_new_with_label(_("Open...")));
1641 gtk_menu_append(submenu, _menu_route_download_item
1642 = gtk_menu_item_new_with_label(_("Download...")));
1643 gtk_menu_append(submenu, _menu_route_save_item
1644 = gtk_menu_item_new_with_label(_("Save...")));
1645 gtk_menu_append(submenu, _menu_route_distnext_item
1646 = gtk_menu_item_new_with_label(_("Show Distance to Next Waypoint")));
1647 gtk_menu_append(submenu, _menu_route_distlast_item
1648 = gtk_menu_item_new_with_label(_("Show Distance to End of Route")));
1649 gtk_menu_append(submenu, _menu_route_reset_item
1650 = gtk_menu_item_new_with_label(_("Reset")));
1651 gtk_menu_append(submenu, _menu_route_clear_item
1652 = gtk_menu_item_new_with_label(_("Clear")));
1654 /* The "Track" submenu. */
1655 gtk_menu_append(menu, menu_item
1656 = gtk_menu_item_new_with_label(_("Track")));
1657 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1658 submenu = gtk_menu_new());
1659 gtk_menu_append(submenu, _menu_track_open_item
1660 = gtk_menu_item_new_with_label(_("Open...")));
1661 gtk_menu_append(submenu, _menu_track_save_item
1662 = gtk_menu_item_new_with_label(_("Save...")));
1663 gtk_menu_append(submenu, _menu_track_insert_break_item
1664 = gtk_menu_item_new_with_label(_("Insert Break")));
1665 gtk_menu_append(submenu, _menu_track_insert_mark_item
1666 = gtk_menu_item_new_with_label(_("Insert Mark...")));
1667 gtk_menu_append(submenu, _menu_track_distlast_item
1668 = gtk_menu_item_new_with_label(_("Show Distance from Last Mark")));
1669 gtk_menu_append(submenu, _menu_track_distfirst_item
1670 = gtk_menu_item_new_with_label(_("Show Distance from Beginning")));
1671 gtk_menu_append(submenu, _menu_track_clear_item
1672 = gtk_menu_item_new_with_label(_("Clear")));
1673 gtk_menu_append(submenu, _menu_track_enable_tracking_item
1674 = gtk_check_menu_item_new_with_label(_("Enable Tracking")));
1675 gtk_check_menu_item_set_active(
1676 GTK_CHECK_MENU_ITEM(_menu_track_enable_tracking_item), _enable_tracking);
1678 /* The "POI" submenu. */
1679 gtk_menu_append(menu, menu_item = _menu_poi_item
1680 = gtk_menu_item_new_with_label(_("POI")));
1681 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1682 submenu = gtk_menu_new());
1683 gtk_menu_append(submenu, _menu_poi_import_item
1684 = gtk_menu_item_new_with_label(_("Import...")));
1685 gtk_menu_append(submenu, _menu_poi_download_item
1686 = gtk_menu_item_new_with_label(_("Download...")));
1687 gtk_menu_append(submenu, _menu_poi_browse_item
1688 = gtk_menu_item_new_with_label(_("Browse...")));
1689 gtk_menu_append(submenu, _menu_poi_categories_item
1690 = gtk_menu_item_new_with_label(_("Categories...")));
1692 _menu_layers_submenu = gtk_menu_new();
1694 /* The "Maps" submenu. */
1695 gtk_menu_append(menu, menu_item
1696 = gtk_menu_item_new_with_label(_("Maps")));
1697 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1698 _menu_maps_submenu = gtk_menu_new());
1699 gtk_menu_append(_menu_maps_submenu, gtk_separator_menu_item_new());
1700 gtk_menu_append(_menu_maps_submenu, _menu_maps_mapman_item
1701 = gtk_menu_item_new_with_label(_("Manage Maps...")));
1702 gtk_menu_append(_menu_maps_submenu, _menu_maps_auto_download_item
1703 = gtk_check_menu_item_new_with_label(_("Auto-Download")));
1704 gtk_check_menu_item_set_active(
1705 GTK_CHECK_MENU_ITEM(_menu_maps_auto_download_item),_auto_download);
1706 gtk_menu_append(_menu_maps_submenu, gtk_separator_menu_item_new());
1707 gtk_menu_append(_menu_maps_submenu, _menu_maps_repoman_item
1708 = gtk_menu_item_new_with_label(_("Manage Repositories...")));
1709 gtk_menu_append(_menu_maps_submenu, _menu_maps_repodown_item
1710 = gtk_menu_item_new_with_label(
1711 _("Download Sample Repositories...")));
1712 menu_maps_add_repos();
1714 gtk_menu_append(menu, gtk_separator_menu_item_new());
1716 /* The "View" submenu. */
1717 gtk_menu_append(menu, menu_item
1718 = gtk_menu_item_new_with_label(_("View")));
1719 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1720 submenu = gtk_menu_new());
1722 /* The View/Layers submenu */
1723 gtk_menu_append(submenu, menu_item
1724 = gtk_menu_item_new_with_label(_("Layers")));
1725 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), _menu_layers_submenu);
1727 /* The "View"/"Zoom" submenu. */
1728 gtk_menu_append(submenu, menu_item
1729 = gtk_menu_item_new_with_label(_("Zoom")));
1730 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1731 submenu2 = gtk_menu_new());
1732 gtk_menu_append(submenu2, _menu_view_zoom_in_item
1733 = gtk_menu_item_new_with_label(_("Zoom In")));
1734 gtk_menu_append(submenu2, _menu_view_zoom_out_item
1735 = gtk_menu_item_new_with_label(_("Zoom Out")));
1737 /* The "View"/"Rotate" submenu. */
1738 gtk_menu_append(submenu, menu_item
1739 = gtk_menu_item_new_with_label(_("Rotate")));
1740 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1741 submenu2 = gtk_menu_new());
1742 gtk_menu_append(submenu2, _menu_view_rotate_clock_item
1743 = gtk_menu_item_new_with_label(_("Clockwise")));
1744 gtk_menu_append(submenu2, _menu_view_rotate_counter_item
1745 = gtk_menu_item_new_with_label(_("Counter")));
1746 gtk_menu_append(submenu2, gtk_separator_menu_item_new());
1747 gtk_menu_append(submenu2, _menu_view_rotate_reset_item
1748 = gtk_menu_item_new_with_label(_("Reset")));
1749 gtk_menu_append(submenu2, _menu_view_rotate_auto_item
1750 = gtk_check_menu_item_new_with_label(_("Auto-Rotate")));
1751 gtk_check_menu_item_set_active(
1752 GTK_CHECK_MENU_ITEM(_menu_view_rotate_auto_item), _center_rotate);
1754 /* The "View"/"Pan" submenu. */
1755 gtk_menu_append(submenu, menu_item
1756 = gtk_menu_item_new_with_label(_("Pan")));
1757 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1758 submenu2 = gtk_menu_new());
1759 gtk_menu_append(submenu2, _menu_view_pan_up_item
1760 = gtk_menu_item_new_with_label(_("Up")));
1761 gtk_menu_append(submenu2, _menu_view_pan_down_item
1762 = gtk_menu_item_new_with_label(_("Down")));
1763 gtk_menu_append(submenu2, _menu_view_pan_left_item
1764 = gtk_menu_item_new_with_label(_("Left")));
1765 gtk_menu_append(submenu2, _menu_view_pan_right_item
1766 = gtk_menu_item_new_with_label(_("Right")));
1767 gtk_menu_append(submenu2, gtk_separator_menu_item_new());
1768 gtk_menu_append(submenu2, _menu_view_pan_north_item
1769 = gtk_menu_item_new_with_label(_("North")));
1770 gtk_menu_append(submenu2, _menu_view_pan_south_item
1771 = gtk_menu_item_new_with_label(_("South")));
1772 gtk_menu_append(submenu2, _menu_view_pan_west_item
1773 = gtk_menu_item_new_with_label(_("West")));
1774 gtk_menu_append(submenu2, _menu_view_pan_east_item
1775 = gtk_menu_item_new_with_label(_("East")));
1777 /* The "Go to" submenu. */
1778 gtk_menu_append(submenu, menu_item
1779 = gtk_menu_item_new_with_label(_("Go to")));
1780 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1781 submenu2 = gtk_menu_new());
1782 gtk_menu_append(submenu2, _menu_view_goto_latlon_item
1783 = gtk_menu_item_new_with_label(_("Lat/Lon...")));
1784 gtk_menu_append(submenu2, _menu_view_goto_address_item
1785 = gtk_menu_item_new_with_label(_("Address...")));
1786 gtk_menu_append(submenu2, _menu_view_goto_gps_item
1787 = gtk_menu_item_new_with_label(_("GPS Location")));
1788 gtk_menu_append(submenu2, _menu_view_goto_nextway_item
1789 = gtk_menu_item_new_with_label(_("Next Waypoint")));
1790 gtk_menu_append(submenu2, _menu_view_goto_nearpoi_item
1791 = gtk_menu_item_new_with_label(_("Nearest POI")));
1793 gtk_menu_append(submenu, gtk_separator_menu_item_new());
1795 /* The "View"/"Show" submenu. */
1796 gtk_menu_append(submenu, menu_item
1797 = gtk_menu_item_new_with_label(_("Show")));
1798 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1799 submenu2 = gtk_menu_new());
1800 gtk_menu_append(submenu2, _menu_view_show_zoomlevel_item
1801 = gtk_check_menu_item_new_with_label(_("Zoom Level")));
1802 gtk_check_menu_item_set_active(
1803 GTK_CHECK_MENU_ITEM(_menu_view_show_zoomlevel_item),
1805 gtk_menu_append(submenu2, _menu_view_show_scale_item
1806 = gtk_check_menu_item_new_with_label(_("Scale")));
1807 gtk_check_menu_item_set_active(
1808 GTK_CHECK_MENU_ITEM(_menu_view_show_scale_item),
1810 gtk_menu_append(submenu2, _menu_view_show_comprose_item
1811 = gtk_check_menu_item_new_with_label(_("Compass Rose")));
1812 gtk_check_menu_item_set_active(
1813 GTK_CHECK_MENU_ITEM(_menu_view_show_comprose_item),
1815 gtk_menu_append(submenu2, _menu_view_show_routes_item
1816 = gtk_check_menu_item_new_with_label(_("Route")));
1817 gtk_check_menu_item_set_active(
1818 GTK_CHECK_MENU_ITEM(_menu_view_show_routes_item),
1819 _show_paths & ROUTES_MASK);
1820 gtk_menu_append(submenu2, _menu_view_show_tracks_item
1821 = gtk_check_menu_item_new_with_label(_("Track")));
1822 gtk_check_menu_item_set_active(
1823 GTK_CHECK_MENU_ITEM(_menu_view_show_tracks_item),
1824 _show_paths & TRACKS_MASK);
1825 gtk_menu_append(submenu2, _menu_view_show_velvec_item
1826 = gtk_check_menu_item_new_with_label(_("Velocity Vector")));
1827 gtk_check_menu_item_set_active(
1828 GTK_CHECK_MENU_ITEM(_menu_view_show_velvec_item), _show_velvec);
1829 gtk_menu_append(submenu2, _menu_view_show_poi_item
1830 = gtk_check_menu_item_new_with_label(_("POI")));
1831 gtk_check_menu_item_set_active(
1832 GTK_CHECK_MENU_ITEM(_menu_view_show_poi_item), _show_poi);
1834 /* The "View"/"Auto-Center" submenu. */
1835 gtk_menu_append(submenu, menu_item
1836 = gtk_menu_item_new_with_label(_("Auto-Center")));
1837 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1838 submenu2 = gtk_menu_new());
1839 gtk_menu_append(submenu2, _menu_view_ac_latlon_item
1840 = gtk_radio_menu_item_new_with_label(NULL, _("Lat/Lon")));
1841 gtk_check_menu_item_set_active(
1842 GTK_CHECK_MENU_ITEM(_menu_view_ac_latlon_item),
1843 _center_mode == CENTER_LATLON);
1844 gtk_menu_append(submenu2, _menu_view_ac_lead_item
1845 = gtk_radio_menu_item_new_with_label_from_widget(
1846 GTK_RADIO_MENU_ITEM(_menu_view_ac_latlon_item), _("Lead")));
1847 gtk_check_menu_item_set_active(
1848 GTK_CHECK_MENU_ITEM(_menu_view_ac_lead_item),
1849 _center_mode == CENTER_LEAD);
1850 gtk_menu_append(submenu2, _menu_view_ac_none_item
1851 = gtk_radio_menu_item_new_with_label_from_widget(
1852 GTK_RADIO_MENU_ITEM(_menu_view_ac_latlon_item), _("None")));
1853 gtk_check_menu_item_set_active(
1854 GTK_CHECK_MENU_ITEM(_menu_view_ac_none_item),
1857 gtk_menu_append(submenu, gtk_separator_menu_item_new());
1859 gtk_menu_append(submenu, _menu_view_fullscreen_item
1860 = gtk_check_menu_item_new_with_label(_("Full Screen")));
1861 gtk_check_menu_item_set_active(
1862 GTK_CHECK_MENU_ITEM(_menu_view_fullscreen_item), _fullscreen);
1864 /* The "GPS" submenu. */
1865 gtk_menu_append(menu, menu_item
1866 = gtk_menu_item_new_with_label(_("GPS")));
1867 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1868 submenu = gtk_menu_new());
1869 gtk_menu_append(submenu, _menu_gps_enable_item
1870 = gtk_check_menu_item_new_with_label(_("Enable GPS")));
1871 gtk_check_menu_item_set_active(
1872 GTK_CHECK_MENU_ITEM(_menu_gps_enable_item), _enable_gps);
1873 gtk_menu_append(submenu, _menu_gps_show_info_item
1874 = gtk_check_menu_item_new_with_label(_("Show Information")));
1875 gtk_check_menu_item_set_active(
1876 GTK_CHECK_MENU_ITEM(_menu_gps_show_info_item), _gps_info);
1877 gtk_menu_append(submenu, _menu_gps_details_item
1878 = gtk_menu_item_new_with_label(_("Details...")));
1879 gtk_widget_set_sensitive(GTK_WIDGET(_menu_gps_details_item), _enable_gps);
1880 gtk_menu_append(submenu, _menu_gps_reset_item
1881 = gtk_menu_item_new_with_label(_("Reset Bluetooth")));
1882 gtk_widget_set_sensitive(GTK_WIDGET(_menu_gps_reset_item), _enable_gps);
1884 gtk_menu_append(menu, gtk_separator_menu_item_new());
1887 /* The "APRS" submenu. */
1888 gtk_menu_append(menu, menu_item
1889 = gtk_menu_item_new_with_label(_("APRS")));
1890 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
1891 submenu = gtk_menu_new());
1893 gtk_menu_append(submenu, _menu_enable_aprs_inet_item
1894 = gtk_check_menu_item_new_with_label(_("Connect to APRS Server")));
1895 gtk_check_menu_item_set_active(
1896 GTK_CHECK_MENU_ITEM(_menu_enable_aprs_inet_item), _aprs_inet_enable);
1897 gtk_widget_set_sensitive(GTK_WIDGET(_menu_enable_aprs_inet_item), _aprs_enable);
1900 gtk_menu_append(submenu, _menu_enable_aprs_tty_item
1901 = gtk_check_menu_item_new_with_label(_("Connect to TNC")));
1902 gtk_check_menu_item_set_active(
1903 GTK_CHECK_MENU_ITEM(_menu_enable_aprs_tty_item), _aprs_tty_enable);
1904 gtk_widget_set_sensitive(GTK_WIDGET(_menu_enable_aprs_tty_item), _aprs_enable);
1907 gtk_menu_append(submenu, _menu_list_aprs_stations_item
1908 = gtk_menu_item_new_with_label(_("List Stations...")));
1910 gtk_widget_set_sensitive(GTK_WIDGET(_menu_list_aprs_stations_item), _aprs_enable);
1913 gtk_menu_append(submenu, _menu_list_aprs_messages_item
1914 = gtk_menu_item_new_with_label(_("List Messages...")));
1916 gtk_widget_set_sensitive(GTK_WIDGET(_menu_list_aprs_messages_item), _aprs_enable);
1919 gtk_menu_append(submenu, _menu_aprs_settings_item
1920 = gtk_menu_item_new_with_label(_("APRS Settings...")));
1923 gtk_menu_append(menu, gtk_separator_menu_item_new());
1925 #endif // INCLUDE_APRS
1927 /* The other menu items. */
1928 gtk_menu_append(menu, _menu_settings_item
1929 = gtk_menu_item_new_with_label(_("Settings...")));
1930 gtk_menu_append(menu, gtk_separator_menu_item_new());
1931 gtk_menu_append(menu, _menu_help_item
1932 = gtk_menu_item_new_with_label(_("Help...")));
1933 gtk_menu_append(menu, _menu_about_item
1934 = gtk_menu_item_new_with_label(_("About...")));
1935 gtk_menu_append(menu, _menu_close_item
1936 = gtk_menu_item_new_with_label(_("Close")));
1938 /* We need to show menu items. */
1939 gtk_widget_show_all(GTK_WIDGET(menu));
1941 hildon_window_set_menu(HILDON_WINDOW(_window), menu);
1943 /* Connect the "Route" signals. */
1944 g_signal_connect(G_OBJECT(_menu_route_open_item), "activate",
1945 G_CALLBACK(menu_cb_route_open), NULL);
1946 g_signal_connect(G_OBJECT(_menu_route_download_item), "activate",
1947 G_CALLBACK(menu_cb_route_download), NULL);
1948 g_signal_connect(G_OBJECT(_menu_route_save_item), "activate",
1949 G_CALLBACK(menu_cb_route_save), NULL);
1950 g_signal_connect(G_OBJECT(_menu_route_distnext_item), "activate",
1951 G_CALLBACK(menu_cb_route_distnext), NULL);
1952 g_signal_connect(G_OBJECT(_menu_route_distlast_item), "activate",
1953 G_CALLBACK(menu_cb_route_distlast), NULL);
1954 g_signal_connect(G_OBJECT(_menu_route_reset_item), "activate",
1955 G_CALLBACK(menu_cb_route_reset), NULL);
1956 g_signal_connect(G_OBJECT(_menu_route_clear_item), "activate",
1957 G_CALLBACK(menu_cb_route_clear), NULL);
1959 /* Connect the "Track" signals. */
1960 g_signal_connect(G_OBJECT(_menu_track_open_item), "activate",
1961 G_CALLBACK(menu_cb_track_open), NULL);
1962 g_signal_connect(G_OBJECT(_menu_track_save_item), "activate",
1963 G_CALLBACK(menu_cb_track_save), NULL);
1964 g_signal_connect(G_OBJECT(_menu_track_insert_break_item), "activate",
1965 G_CALLBACK(menu_cb_track_insert_break), NULL);
1966 g_signal_connect(G_OBJECT(_menu_track_insert_mark_item), "activate",
1967 G_CALLBACK(menu_cb_track_insert_mark), NULL);
1968 g_signal_connect(G_OBJECT(_menu_track_distlast_item), "activate",
1969 G_CALLBACK(menu_cb_track_distlast), NULL);
1970 g_signal_connect(G_OBJECT(_menu_track_distfirst_item), "activate",
1971 G_CALLBACK(menu_cb_track_distfirst), NULL);
1972 g_signal_connect(G_OBJECT(_menu_track_clear_item), "activate",
1973 G_CALLBACK(menu_cb_track_clear), NULL);
1974 g_signal_connect(G_OBJECT(_menu_track_enable_tracking_item), "toggled",
1975 G_CALLBACK(menu_cb_track_enable_tracking), NULL);
1977 /* Connect the "POI" signals. */
1978 g_signal_connect(G_OBJECT(_menu_poi_import_item), "activate",
1979 G_CALLBACK(menu_cb_poi_import), NULL);
1980 g_signal_connect(G_OBJECT(_menu_poi_download_item), "activate",
1981 G_CALLBACK(menu_cb_poi_download), NULL);
1982 g_signal_connect(G_OBJECT(_menu_poi_browse_item), "activate",
1983 G_CALLBACK(menu_cb_poi_browse), NULL);
1984 g_signal_connect(G_OBJECT(_menu_poi_categories_item), "activate",
1985 G_CALLBACK(menu_cb_poi_categories), NULL);
1987 /* Connect the "Maps" signals. */
1988 g_signal_connect(G_OBJECT(_menu_maps_repoman_item), "activate",
1989 G_CALLBACK(menu_cb_maps_repoman), NULL);
1990 g_signal_connect(G_OBJECT(_menu_maps_repodown_item), "activate",
1991 G_CALLBACK(menu_cb_maps_repodown), NULL);
1992 g_signal_connect(G_OBJECT(_menu_maps_mapman_item), "activate",
1993 G_CALLBACK(menu_cb_maps_mapman), NULL);
1994 g_signal_connect(G_OBJECT(_menu_maps_auto_download_item), "toggled",
1995 G_CALLBACK(menu_cb_maps_auto_download), NULL);
1997 /* Connect the "View" signals. */
1998 g_signal_connect(G_OBJECT(_menu_view_zoom_in_item), "activate",
1999 G_CALLBACK(menu_cb_view_zoom_in), NULL);
2000 g_signal_connect(G_OBJECT(_menu_view_zoom_out_item), "activate",
2001 G_CALLBACK(menu_cb_view_zoom_out), NULL);
2003 g_signal_connect(G_OBJECT(_menu_view_rotate_clock_item), "activate",
2004 G_CALLBACK(menu_cb_view_rotate_clock), NULL);
2005 g_signal_connect(G_OBJECT(_menu_view_rotate_counter_item), "activate",
2006 G_CALLBACK(menu_cb_view_rotate_counter), NULL);
2007 g_signal_connect(G_OBJECT(_menu_view_rotate_reset_item), "activate",
2008 G_CALLBACK(menu_cb_view_rotate_reset), NULL);
2009 g_signal_connect(G_OBJECT(_menu_view_rotate_auto_item), "toggled",
2010 G_CALLBACK(menu_cb_view_rotate_auto), NULL);
2012 g_signal_connect(G_OBJECT(_menu_view_pan_up_item), "activate",
2013 G_CALLBACK(menu_cb_view_pan_up), NULL);
2014 g_signal_connect(G_OBJECT(_menu_view_pan_down_item), "activate",
2015 G_CALLBACK(menu_cb_view_pan_down), NULL);
2016 g_signal_connect(G_OBJECT(_menu_view_pan_left_item), "activate",
2017 G_CALLBACK(menu_cb_view_pan_left), NULL);
2018 g_signal_connect(G_OBJECT(_menu_view_pan_right_item), "activate",
2019 G_CALLBACK(menu_cb_view_pan_right), NULL);
2020 g_signal_connect(G_OBJECT(_menu_view_pan_north_item), "activate",
2021 G_CALLBACK(menu_cb_view_pan_north), NULL);
2022 g_signal_connect(G_OBJECT(_menu_view_pan_south_item), "activate",
2023 G_CALLBACK(menu_cb_view_pan_south), NULL);
2024 g_signal_connect(G_OBJECT(_menu_view_pan_west_item), "activate",
2025 G_CALLBACK(menu_cb_view_pan_west), NULL);
2026 g_signal_connect(G_OBJECT(_menu_view_pan_east_item), "activate",
2027 G_CALLBACK(menu_cb_view_pan_east), NULL);
2029 g_signal_connect(G_OBJECT(_menu_view_goto_latlon_item), "activate",
2030 G_CALLBACK(menu_cb_view_goto_latlon), NULL);
2031 g_signal_connect(G_OBJECT(_menu_view_goto_address_item), "activate",
2032 G_CALLBACK(menu_cb_view_goto_address), NULL);
2033 g_signal_connect(G_OBJECT(_menu_view_goto_gps_item), "activate",
2034 G_CALLBACK(menu_cb_view_goto_gps), NULL);
2035 g_signal_connect(G_OBJECT(_menu_view_goto_nextway_item), "activate",
2036 G_CALLBACK(menu_cb_view_goto_nextway), NULL);
2037 g_signal_connect(G_OBJECT(_menu_view_goto_nearpoi_item), "activate",
2038 G_CALLBACK(menu_cb_view_goto_nearpoi), NULL);
2040 g_signal_connect(G_OBJECT(_menu_view_show_tracks_item), "toggled",
2041 G_CALLBACK(menu_cb_view_show_tracks), NULL);
2042 g_signal_connect(G_OBJECT(_menu_view_show_zoomlevel_item), "toggled",
2043 G_CALLBACK(menu_cb_view_show_zoomlevel), NULL);
2044 g_signal_connect(G_OBJECT(_menu_view_show_scale_item), "toggled",
2045 G_CALLBACK(menu_cb_view_show_scale), NULL);
2046 g_signal_connect(G_OBJECT(_menu_view_show_comprose_item), "toggled",
2047 G_CALLBACK(menu_cb_view_show_comprose), NULL);
2048 g_signal_connect(G_OBJECT(_menu_view_show_routes_item), "toggled",
2049 G_CALLBACK(menu_cb_view_show_routes), NULL);
2050 g_signal_connect(G_OBJECT(_menu_view_show_velvec_item), "toggled",
2051 G_CALLBACK(menu_cb_view_show_velvec), NULL);
2052 g_signal_connect(G_OBJECT(_menu_view_show_poi_item), "toggled",
2053 G_CALLBACK(menu_cb_view_show_poi), NULL);
2055 g_signal_connect(G_OBJECT(_menu_view_ac_latlon_item), "toggled",
2056 G_CALLBACK(menu_cb_view_ac_latlon), NULL);
2057 g_signal_connect(G_OBJECT(_menu_view_ac_lead_item), "toggled",
2058 G_CALLBACK(menu_cb_view_ac_lead), NULL);
2059 g_signal_connect(G_OBJECT(_menu_view_ac_none_item), "toggled",
2060 G_CALLBACK(menu_cb_view_ac_none), NULL);
2062 g_signal_connect(G_OBJECT(_menu_view_fullscreen_item), "toggled",
2063 G_CALLBACK(menu_cb_view_fullscreen), NULL);
2065 /* Connect the "GPS" signals. */
2066 g_signal_connect(G_OBJECT(_menu_gps_enable_item), "toggled",
2067 G_CALLBACK(menu_cb_gps_enable), NULL);
2068 g_signal_connect(G_OBJECT(_menu_gps_show_info_item), "toggled",
2069 G_CALLBACK(menu_cb_gps_show_info), NULL);
2070 g_signal_connect(G_OBJECT(_menu_gps_details_item), "activate",
2071 G_CALLBACK(menu_cb_gps_details), NULL);
2072 g_signal_connect(G_OBJECT(_menu_gps_reset_item), "activate",
2073 G_CALLBACK(menu_cb_gps_reset), NULL);
2076 /* Connect the "APRS" signals. */
2077 g_signal_connect(G_OBJECT(_menu_enable_aprs_inet_item), "toggled",
2078 G_CALLBACK(menu_cb_enable_inet_aprs), NULL);
2080 g_signal_connect(G_OBJECT(_menu_enable_aprs_tty_item), "toggled",
2081 G_CALLBACK(menu_cb_enable_tty_aprs), NULL);
2083 g_signal_connect(G_OBJECT(_menu_list_aprs_stations_item), "activate",
2084 G_CALLBACK(menu_cb_list_aprs_stations), NULL);
2086 g_signal_connect(G_OBJECT(_menu_list_aprs_messages_item), "activate",
2087 G_CALLBACK(menu_cb_list_aprs_messages), NULL);
2089 g_signal_connect(G_OBJECT(_menu_aprs_settings_item), "activate",
2090 G_CALLBACK(menu_cb_aprs_settings), NULL);
2091 #endif // INCLUDE_APRS
2093 /* Connect the other menu item signals. */
2094 g_signal_connect(G_OBJECT(_menu_settings_item), "activate",
2095 G_CALLBACK(menu_cb_settings), NULL);
2096 g_signal_connect(G_OBJECT(_menu_help_item), "activate",
2097 G_CALLBACK(menu_cb_help), NULL);
2098 g_signal_connect(G_OBJECT(_menu_about_item), "activate",
2099 G_CALLBACK(menu_cb_about), NULL);
2100 g_signal_connect(G_OBJECT(_menu_close_item), "activate",
2101 G_CALLBACK(gtk_main_quit), NULL);
2103 vprintf("%s(): return\n", __PRETTY_FUNCTION__);