]> err.no Git - mapper/blob - src/filter-gui.c
MapWidgetIntegration:
[mapper] / src / filter-gui.c
1 /*
2  * This file is part of mapper
3  *
4  * Copyright (C) 2007 Kaj-Michael Lang
5  *
6  * Default map data provided by http://www.openstreetmap.org/
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License along
19  * with this program; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21  */
22
23 #include "config.h"
24
25 #include <unistd.h>
26 #include <stdlib.h>
27 #include <string.h>
28 #include <strings.h>
29 #include <stddef.h>
30 #include <glib/gstdio.h>
31 #include <gtk/gtk.h>
32 #include <libintl.h>
33 #include <locale.h>
34
35 #include "hildon-mapper.h"
36
37 #include "utils.h"
38 #include "gps.h"
39 #include "mapper-types.h"
40 #include "ui-common.h"
41 #include "settings.h"
42 #include "filter.h"
43 #include "filter-gui.h"
44 #include "config-gconf.h"
45
46 gboolean
47 filter_dialog(GtkWidget *window)
48 {
49 GtkWidget *dialog;
50 GtkWidget *table;
51 GtkWidget *notebook;
52 GtkWidget *label;
53
54 GtkWidget *chk_gps_filter;
55 GtkWidget *num_angle;
56 GtkWidget *num_hdop;
57 GtkWidget *num_vdop;
58 GtkWidget *num_osm_dist;
59 GtkWidget *num_maxdrop;
60
61 dialog = gtk_dialog_new_with_buttons(_("Track Filter"),
62                                 GTK_WINDOW(window),
63                                 GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, 
64                                 GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL);
65
66 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook = gtk_notebook_new(), TRUE, TRUE, 0);
67
68 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table = gtk_table_new(2,4,FALSE), label = gtk_label_new(_("GPS")));
69
70 gtk_table_attach(GTK_TABLE(table), chk_gps_filter = gtk_check_button_new_with_label(_("Enable track filter")),
71                  0, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4);
72 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chk_gps_filter), filter.enabled);
73
74 gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Horizontal DOP limit")), 0, 1, 1, 2, GTK_FILL, 0, 2, 4);
75 gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
76 gtk_table_attach(GTK_TABLE(table), num_hdop = gtk_hscale_new_with_range(0, 200, 0.1), 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4);
77
78 gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Vertical DOP limit")), 0, 1, 2, 3, GTK_FILL, 0, 2, 4);
79 gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
80 gtk_table_attach(GTK_TABLE(table), num_vdop = gtk_hscale_new_with_range(0, 200, 0.1), 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 4);
81
82 gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Minimum Angle change")), 0, 1, 3, 4, GTK_FILL, 0, 2, 4);
83 gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
84 gtk_table_attach(GTK_TABLE(table), num_angle = gtk_hscale_new_with_range(0, 45, 0.5), 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, 0, 2, 4);
85
86 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table = gtk_table_new(2,1,FALSE), label = gtk_label_new(_("Other")));
87
88 /* Distance to OSM data */
89 gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Distance to OSM Data")), 0, 1, 0, 1, GTK_FILL, 0, 2, 4);
90 gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
91 gtk_table_attach(GTK_TABLE(table), num_osm_dist = gtk_hscale_new_with_range(0, 5000, 50), 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4);
92
93 gtk_table_attach(GTK_TABLE(table), label = gtk_label_new(_("Track point drop limit. 0=drop until valid.")), 0, 1, 2, 3, GTK_FILL, 0, 2, 4);
94 gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
95 gtk_table_attach(GTK_TABLE(table), num_maxdrop = gtk_hscale_new_with_range(0, 60, 1), 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 4);
96
97 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chk_gps_filter), filter.enabled);
98 gtk_range_set_value(GTK_RANGE(num_hdop), filter.hdop);
99 gtk_range_set_value(GTK_RANGE(num_vdop), filter.vdop);
100 gtk_range_set_value(GTK_RANGE(num_angle), filter.angle);
101 gtk_range_set_value(GTK_RANGE(num_osm_dist), filter.osm);
102 gtk_range_set_value(GTK_RANGE(num_maxdrop), filter.maxdrop);
103
104 gtk_window_set_default_size(GTK_WINDOW(dialog), 500, 300);
105 gtk_widget_show_all(dialog);
106
107 if (GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) {
108         filter.angle=gtk_range_get_value(GTK_RANGE(num_angle));
109         filter.hdop=gtk_range_get_value(GTK_RANGE(num_hdop));
110         filter.vdop=gtk_range_get_value(GTK_RANGE(num_vdop));
111         filter.osm=gtk_range_get_value(GTK_RANGE(num_osm_dist));
112         filter.maxdrop=gtk_range_get_value(GTK_RANGE(num_maxdrop));
113         filter.enabled=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_gps_filter));
114
115         config_save_filter(&filter);
116 }
117
118 gtk_widget_destroy(dialog);
119
120 return TRUE;
121 }