30 |
typedef struct { |
typedef struct { |
31 |
GtkWidget *dialog; |
GtkWidget *dialog; |
32 |
appdata_t *appdata; |
appdata_t *appdata; |
33 |
GtkWidget *path_label, *ignore_found; |
GtkWidget *ignore_found; |
34 |
GtkWidget *info_label; |
GtkWidget *info_label; |
35 |
gpx_t *gpx; |
gpx_t *gpx; |
36 |
} export_context_t; |
} export_context_t; |
105 |
return cnt; |
return cnt; |
106 |
} |
} |
107 |
|
|
|
static void on_browse(GtkWidget *widget, gpointer data) { |
|
|
GtkWidget *dialog; |
|
|
|
|
|
export_context_t *context = (export_context_t*)data; |
|
|
|
|
|
printf("Browse\n"); |
|
|
|
|
|
#ifdef USE_MAEMO |
|
|
dialog = hildon_file_chooser_dialog_new(GTK_WINDOW(context->dialog), |
|
|
GTK_FILE_CHOOSER_ACTION_SAVE); |
|
|
#else |
|
|
dialog = gtk_file_chooser_dialog_new(_("Save garmin GPX"), |
|
|
GTK_WINDOW(context->dialog), |
|
|
GTK_FILE_CHOOSER_ACTION_SAVE, |
|
|
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
|
|
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, |
|
|
NULL); |
|
|
#endif |
|
|
|
|
|
printf("set filename <%s>\n", context->appdata->garmin_path); |
|
|
|
|
|
if(!g_file_test(context->appdata->garmin_path, G_FILE_TEST_EXISTS)) { |
|
|
char *last_sep = strrchr(context->appdata->garmin_path, '/'); |
|
|
if(last_sep) { |
|
|
*last_sep = 0; // seperate path from file |
|
|
|
|
|
/* the user just created a new document */ |
|
|
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), |
|
|
context->appdata->garmin_path); |
|
|
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), last_sep+1); |
|
|
|
|
|
/* restore full filename */ |
|
|
*last_sep = '/'; |
|
|
} |
|
|
} else |
|
|
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), |
|
|
context->appdata->garmin_path); |
|
|
|
|
|
if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_FM_OK) { |
|
|
gchar *name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); |
|
|
if(name) { |
|
|
free(context->appdata->garmin_path); |
|
|
context->appdata->garmin_path = strdup(name); |
|
|
gtk_label_set_text(GTK_LABEL(context->path_label), |
|
|
context->appdata->garmin_path); |
|
|
} |
|
|
} |
|
|
|
|
|
gtk_widget_destroy(dialog); |
|
|
} |
|
|
|
|
108 |
/* Our usual callback function */ |
/* Our usual callback function */ |
109 |
static void export_update(GtkWidget *widget, gpointer data) { |
static void export_update(GtkWidget *widget, gpointer data) { |
110 |
export_context_t *context = (export_context_t *)data; |
export_context_t *context = (export_context_t *)data; |
111 |
|
|
112 |
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(context->ignore_found))) |
if(check_button_get_active(context->ignore_found)) |
113 |
context->appdata->garmin_ign_found = TRUE; |
context->appdata->garmin_ign_found = TRUE; |
114 |
else |
else |
115 |
context->appdata->garmin_ign_found = FALSE; |
context->appdata->garmin_ign_found = FALSE; |
148 |
GtkWidget *vbox = gtk_vbox_new(FALSE,2); |
GtkWidget *vbox = gtk_vbox_new(FALSE,2); |
149 |
|
|
150 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
151 |
context.ignore_found = gtk_check_button_new_with_label( |
context.ignore_found = check_button_new_with_label( |
152 |
_("Ignore found caches"))); |
_("Ignore found caches"))); |
153 |
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(context.ignore_found), |
check_button_set_active(context.ignore_found, |
154 |
appdata->garmin_ign_found); |
appdata->garmin_ign_found); |
155 |
/* Connect the "clicked" signal of the button to our callback */ |
/* Connect the "clicked" signal of the button to our callback */ |
156 |
gtk_signal_connect (GTK_OBJECT(context.ignore_found), "clicked", |
gtk_signal_connect (GTK_OBJECT(context.ignore_found), "clicked", |
157 |
GTK_SIGNAL_FUNC(export_update), (gpointer)&context); |
GTK_SIGNAL_FUNC(export_update), (gpointer)&context); |
167 |
/* ------------------ path/file ------------------ */ |
/* ------------------ path/file ------------------ */ |
168 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), gtk_hseparator_new()); |
gtk_box_pack_start_defaults(GTK_BOX(vbox), gtk_hseparator_new()); |
169 |
|
|
170 |
GtkWidget *hbox = gtk_hbox_new(FALSE, 0); |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
171 |
GtkWidget *label = gtk_label_new(_("Export to:")); |
export_file(_("Save garmin GPX"), &appdata->garmin_path)); |
|
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE,0); |
|
|
gtk_misc_set_alignment(GTK_MISC(label), 0.f, 0.5f); |
|
|
GtkWidget *button = gtk_button_new_with_label(_("Browse")); |
|
|
#if defined(USE_MAEMO) && (MAEMO_VERSION_MAJOR == 5) |
|
|
hildon_gtk_widget_set_theme_size(button, |
|
|
(HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH)); |
|
|
#endif |
|
|
gtk_signal_connect(GTK_OBJECT(button), "clicked", |
|
|
GTK_SIGNAL_FUNC(on_browse), (gpointer)&context); |
|
|
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE,0); |
|
|
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox); |
|
|
|
|
|
context.path_label = gtk_label_new(appdata->garmin_path); |
|
|
gtk_misc_set_alignment(GTK_MISC(context.path_label), 0.f, 0.5f); |
|
|
gtk_label_set_ellipsize(GTK_LABEL(context.path_label), |
|
|
PANGO_ELLIPSIZE_MIDDLE); |
|
|
gtk_box_pack_start_defaults(GTK_BOX(vbox), context.path_label); |
|
172 |
|
|
173 |
/* ----------------------------------- */ |
/* ----------------------------------- */ |
174 |
|
|