124 |
gtk_widget_set_sensitive(context->but_remove, FALSE); |
gtk_widget_set_sensitive(context->but_remove, FALSE); |
125 |
} |
} |
126 |
|
|
|
#ifdef ENABLE_MAEMO_MAPPER |
|
|
#include "dbus.h" |
|
|
|
|
|
typedef struct { |
|
|
appdata_t *appdata; |
|
|
pos_t pos; |
|
|
GtkWidget *import_button; |
|
|
GtkWidget *export_button; |
|
|
GtkWidget *lat, *lon; |
|
|
} mm_context_t; |
|
|
|
|
|
static void on_mm_import_clicked(GtkButton *button, gpointer data) { |
|
|
char str[32]; |
|
|
mm_context_t *context = (mm_context_t*)data; |
|
|
|
|
|
pos_lat_str(str, sizeof(str), context->appdata->mmpos.lat); |
|
|
gtk_entry_set_text(GTK_ENTRY(context->lat), str); |
|
|
pos_lon_str(str, sizeof(str), context->appdata->mmpos.lon); |
|
|
gtk_entry_set_text(GTK_ENTRY(context->lon), str); |
|
|
} |
|
|
|
|
|
static void on_mm_export_clicked(GtkButton *button, gpointer data) { |
|
|
mm_context_t *context = (mm_context_t*)data; |
|
|
|
|
|
/* update position from entries */ |
|
|
pos_t pos; |
|
|
pos.lat = lat_get(context->lat); |
|
|
pos.lon = lon_get(context->lon); |
|
|
|
|
|
g_assert(!isnan(pos.lat) && !isnan(pos.lon)); |
|
|
|
|
|
dbus_mm_set_position(context->appdata, &pos); |
|
|
} |
|
|
|
|
|
static void callback_modified_pos(GtkWidget *widget, gpointer data ) { |
|
|
mm_context_t *context = (mm_context_t*)data; |
|
|
|
|
|
gboolean valid = |
|
|
(!isnan(lat_get(context->lat))) && (!isnan(lon_get(context->lon))); |
|
|
|
|
|
gtk_widget_set_sensitive(context->export_button, valid); |
|
|
} |
|
|
#endif |
|
|
|
|
127 |
static void on_location_edit(GtkWidget *button, location_context_t *context) { |
static void on_location_edit(GtkWidget *button, location_context_t *context) { |
128 |
GtkWidget *dialog = gtk_dialog_new_with_buttons(_("Edit Location"), |
GtkWidget *dialog = gtk_dialog_new_with_buttons(_("Edit Location"), |
129 |
GTK_WINDOW(context->settings_dialog), GTK_DIALOG_MODAL, |
GTK_WINDOW(context->settings_dialog), GTK_DIALOG_MODAL, |
149 |
} else |
} else |
150 |
printf("location edit for Home\n"); |
printf("location edit for Home\n"); |
151 |
|
|
|
#ifdef ENABLE_MAEMO_MAPPER |
|
|
mm_context_t mm_context; |
|
|
#else |
|
|
GtkWidget *lat, *lon; |
|
|
#endif |
|
|
|
|
152 |
GtkWidget *label, *name; |
GtkWidget *label, *name; |
153 |
GtkWidget *table = gtk_table_new(2, 3, FALSE); |
GtkWidget *table = gtk_table_new(3, 3, FALSE); |
154 |
|
|
155 |
gtk_table_attach_defaults(GTK_TABLE(table), |
gtk_table_attach_defaults(GTK_TABLE(table), |
156 |
label = gtk_label_new(_("Name:")), 0, 1, 0, 1); |
label = left_label_new(_("Name:")), 0, 1, 0, 1); |
157 |
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); |
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); |
158 |
gtk_table_attach_defaults(GTK_TABLE(table), |
gtk_table_attach_defaults(GTK_TABLE(table), |
159 |
name = gtk_entry_new(), 1, 2, 0, 1); |
name = entry_new(), 1, 3, 0, 1); |
160 |
|
|
161 |
pos_t pos; |
pos_t pos; |
162 |
if(loc) pos = loc->pos; |
if(loc) pos = loc->pos; |
167 |
if(isnan(pos.lat)) pos.lat = 0; |
if(isnan(pos.lat)) pos.lat = 0; |
168 |
if(isnan(pos.lon)) pos.lon = 0; |
if(isnan(pos.lon)) pos.lon = 0; |
169 |
|
|
170 |
|
GtkWidget *latw, *lonw; |
171 |
gtk_table_attach_defaults(GTK_TABLE(table), |
gtk_table_attach_defaults(GTK_TABLE(table), |
172 |
label = gtk_label_new(_("Latitude:")), 0, 1, 1, 2); |
label = left_label_new(_("Latitude:")), 0, 1, 1, 2); |
173 |
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); |
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); |
|
#ifdef ENABLE_MAEMO_MAPPER |
|
|
gtk_table_attach_defaults(GTK_TABLE(table), |
|
|
mm_context.lat = lat_entry_new(pos.lat), 1, 2, 1, 2); |
|
|
g_signal_connect(G_OBJECT(mm_context.lat), "changed", |
|
|
G_CALLBACK(callback_modified_pos), &mm_context); |
|
|
#else |
|
174 |
gtk_table_attach_defaults(GTK_TABLE(table), |
gtk_table_attach_defaults(GTK_TABLE(table), |
175 |
lat = lat_entry_new(pos.lat), 1, 2, 1, 2); |
latw = lat_entry_new(pos.lat), 1, 2, 1, 2); |
|
#endif |
|
176 |
|
|
|
|
|
177 |
gtk_table_attach_defaults(GTK_TABLE(table), |
gtk_table_attach_defaults(GTK_TABLE(table), |
178 |
label = gtk_label_new(_("Longitude:")), 0, 1, 2, 3); |
label = left_label_new(_("Longitude:")), 0, 1, 2, 3); |
179 |
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); |
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); |
|
#ifdef ENABLE_MAEMO_MAPPER |
|
180 |
gtk_table_attach_defaults(GTK_TABLE(table), |
gtk_table_attach_defaults(GTK_TABLE(table), |
181 |
mm_context.lon = lon_entry_new(pos.lon), 1, 2, 2, 3); |
lonw = lon_entry_new(pos.lon), 1, 2, 2, 3); |
182 |
g_signal_connect(G_OBJECT(mm_context.lon), "changed", |
|
|
G_CALLBACK(callback_modified_pos), &mm_context); |
|
|
#else |
|
183 |
gtk_table_attach_defaults(GTK_TABLE(table), |
gtk_table_attach_defaults(GTK_TABLE(table), |
184 |
lon = lon_entry_new(pos.lon), 1, 2, 2, 3); |
preset_coordinate_picker(context->appdata, latw, lonw), 2, 3, 1, 2); |
|
#endif |
|
185 |
|
|
186 |
if(loc) |
if(loc) |
187 |
gtk_entry_set_text(GTK_ENTRY(name), loc->name); |
gtk_entry_set_text(GTK_ENTRY(name), loc->name); |
190 |
gtk_widget_set_sensitive(GTK_WIDGET(name), FALSE); |
gtk_widget_set_sensitive(GTK_WIDGET(name), FALSE); |
191 |
} |
} |
192 |
|
|
|
#ifdef ENABLE_MAEMO_MAPPER |
|
|
mm_context.appdata = context->appdata; |
|
|
if(loc) mm_context.pos = loc->pos; |
|
|
else mm_context.pos = context->appdata->home; |
|
|
|
|
|
mm_context.import_button = gtk_button_new(); |
|
|
gtk_button_set_image(GTK_BUTTON(mm_context.import_button), |
|
|
icon_get_widget(ICON_MISC, 3)); |
|
|
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), |
|
|
mm_context.import_button); |
|
|
gtk_signal_connect(GTK_OBJECT(mm_context.import_button), "clicked", |
|
|
(GtkSignalFunc)on_mm_import_clicked, &mm_context); |
|
|
|
|
|
if(!context->appdata->mmpos_valid) |
|
|
gtk_widget_set_sensitive(mm_context.import_button, FALSE); |
|
|
|
|
|
mm_context.export_button = gtk_button_new(); |
|
|
gtk_button_set_image(GTK_BUTTON(mm_context.export_button), |
|
|
icon_get_widget(ICON_MISC, 0)); |
|
|
gtk_signal_connect(GTK_OBJECT(mm_context.export_button), "clicked", |
|
|
(GtkSignalFunc)on_mm_export_clicked, &mm_context); |
|
|
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), |
|
|
mm_context.export_button); |
|
|
#endif |
|
|
|
|
193 |
gtk_box_pack_start_defaults(GTK_BOX(GTK_DIALOG(dialog)->vbox), table); |
gtk_box_pack_start_defaults(GTK_BOX(GTK_DIALOG(dialog)->vbox), table); |
194 |
|
|
195 |
gtk_widget_show_all(dialog); |
gtk_widget_show_all(dialog); |
197 |
if(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { |
if(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { |
198 |
pos_t pos; |
pos_t pos; |
199 |
|
|
200 |
#ifdef ENABLE_MAEMO_MAPPER |
pos.lat = lat_entry_get(latw); |
201 |
pos.lat = lat_get(mm_context.lat); |
pos.lon = lon_entry_get(lonw); |
|
pos.lon = lon_get(mm_context.lon); |
|
|
#else |
|
|
pos.lat = lat_get(lat); |
|
|
pos.lon = lon_get(lon); |
|
|
#endif |
|
202 |
|
|
203 |
if(isnan(pos.lat) || isnan(pos.lon)) |
if(isnan(pos.lat) || isnan(pos.lon)) |
204 |
errorf(_("Ignoring invalid position")); |
errorf(_("Ignoring invalid position")); |
472 |
return vbox; |
return vbox; |
473 |
} |
} |
474 |
|
|
475 |
|
#ifdef FREMANTLE |
476 |
static GtkWidget *title_new(char *title) { |
static GtkWidget *title_new(char *title) { |
477 |
GtkWidget *vbox = gtk_vbox_new(FALSE, 10); |
GtkWidget *vbox = gtk_vbox_new(FALSE, 10); |
478 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), gtk_label_new("")); |
gtk_box_pack_start_defaults(GTK_BOX(vbox), gtk_label_new("")); |
483 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox); |
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox); |
484 |
return vbox; |
return vbox; |
485 |
} |
} |
486 |
|
#endif |
487 |
|
|
488 |
void cb_menu_settings(GtkWidget *window, gpointer data) { |
void cb_menu_settings(GtkWidget *window, gpointer data) { |
489 |
appdata_t *appdata = (appdata_t *)data; |
appdata_t *appdata = (appdata_t *)data; |
549 |
|
|
550 |
/* ---------------- misc old main menu entries ----------------- */ |
/* ---------------- misc old main menu entries ----------------- */ |
551 |
|
|
552 |
#if defined(USE_MAEMO) && (MAEMO_VERSION_MAJOR >= 5) |
#ifndef FREMANTLE |
|
// gtk_box_pack_start_defaults(GTK_BOX(vbox), title_new(_("Misc"))); |
|
|
#else |
|
553 |
vbox = gtk_vbox_new(FALSE, 0); |
vbox = gtk_vbox_new(FALSE, 0); |
554 |
#endif |
#endif |
555 |
|
|
557 |
check_button_set_active(cbox_imperial, appdata->imperial); |
check_button_set_active(cbox_imperial, appdata->imperial); |
558 |
gtk_box_pack_start(GTK_BOX(vbox), cbox_imperial, FALSE, FALSE, 0); |
gtk_box_pack_start(GTK_BOX(vbox), cbox_imperial, FALSE, FALSE, 0); |
559 |
|
|
560 |
|
hbox = gtk_hbox_new(FALSE,2); |
561 |
|
gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(_("Username:")), |
562 |
|
FALSE, FALSE, 0); |
563 |
|
|
564 |
|
GtkWidget *username = entry_new(); |
565 |
|
if(appdata->username) |
566 |
|
gtk_entry_set_text(GTK_ENTRY(username), appdata->username); |
567 |
|
|
568 |
|
gtk_box_pack_start(GTK_BOX(hbox), username, FALSE, FALSE, 0); |
569 |
|
|
570 |
|
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
571 |
|
|
572 |
#if !defined(USE_MAEMO) || (MAEMO_VERSION_MAJOR < 5) |
#if !defined(USE_MAEMO) || (MAEMO_VERSION_MAJOR < 5) |
573 |
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, |
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, |
574 |
gtk_label_new(_("Misc"))); |
gtk_label_new(_("Misc"))); |
713 |
appdata->imperial = |
appdata->imperial = |
714 |
check_button_get_active(cbox_imperial); |
check_button_get_active(cbox_imperial); |
715 |
|
|
716 |
|
if(appdata->username) { |
717 |
|
g_free(appdata->username); |
718 |
|
appdata->username = NULL; |
719 |
|
} |
720 |
|
|
721 |
|
const char *uname = gtk_entry_get_text(GTK_ENTRY(username)); |
722 |
|
if(uname && strlen(uname)>0) |
723 |
|
appdata->username = g_strdup(uname); |
724 |
|
|
725 |
appdata->compass_damping = 0.5 + gtk_range_get_value(GTK_RANGE(scale)); |
appdata->compass_damping = 0.5 + gtk_range_get_value(GTK_RANGE(scale)); |
726 |
|
|
727 |
appdata->gpxlist_items = GPXLIST_ITEM_VALID; |
appdata->gpxlist_items = GPXLIST_ITEM_VALID; |