211 |
guint handler_id; |
guint handler_id; |
212 |
int mode; |
int mode; |
213 |
gpx_t *gpx; |
gpx_t *gpx; |
|
GtkWidget *path_label; |
|
214 |
#ifdef USE_MAEMO |
#ifdef USE_MAEMO |
215 |
GtkWidget *launch; |
GtkWidget *launch; |
216 |
#endif |
#endif |
217 |
} export_context_t; |
} export_context_t; |
218 |
|
|
|
static float distance_eval(GtkWidget *widget, export_context_t *context) { |
|
|
char *p = (char*)gtk_entry_get_text(GTK_ENTRY(widget)); |
|
|
float val = distance_parse(p, context->appdata->imperial); |
|
|
return val; |
|
|
} |
|
|
|
|
219 |
static gboolean export_list_update(gpointer data) { |
static gboolean export_list_update(gpointer data) { |
220 |
char str[256]; |
char str[256]; |
221 |
export_context_t *context = (export_context_t*)data; |
export_context_t *context = (export_context_t*)data; |
238 |
static void export_update(GtkWidget *widget, gpointer data) { |
static void export_update(GtkWidget *widget, gpointer data) { |
239 |
export_context_t *context = (export_context_t *)data; |
export_context_t *context = (export_context_t *)data; |
240 |
|
|
241 |
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(context->use_radius))) { |
if(check_button_get_active(context->use_radius)) { |
242 |
textbox_enable(context->entry); |
textbox_enable(context->entry); |
243 |
context->appdata->mmpoi_use_radius = TRUE; |
context->appdata->mmpoi_use_radius = TRUE; |
244 |
} else { |
} else { |
247 |
} |
} |
248 |
|
|
249 |
context->appdata->mmpoi_dont_export_found = |
context->appdata->mmpoi_dont_export_found = |
250 |
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(context->no_found)); |
toggle_button_get_active(context->no_found); |
251 |
|
|
252 |
context->appdata->mmpoi_dont_export_disabled = |
context->appdata->mmpoi_dont_export_disabled = |
253 |
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(context->no_disabled)); |
toggle_button_get_active(context->no_disabled); |
254 |
|
|
255 |
export_list_update(context); |
export_list_update(context); |
256 |
} |
} |
258 |
static void export_radius_modified(GtkWidget *widget, gpointer data ) { |
static void export_radius_modified(GtkWidget *widget, gpointer data ) { |
259 |
export_context_t *context = (export_context_t*)data; |
export_context_t *context = (export_context_t*)data; |
260 |
|
|
261 |
context->appdata->mmpoi_radius = distance_eval(context->entry, context); |
context->appdata->mmpoi_radius = |
262 |
|
dist_entry_get(context->entry, context->appdata->imperial); |
263 |
|
|
264 |
printf("Distance is %.2f km\n", context->appdata->mmpoi_radius); |
printf("Distance is %.2f km\n", context->appdata->mmpoi_radius); |
265 |
|
|
280 |
*flag = TRUE; |
*flag = TRUE; |
281 |
} |
} |
282 |
|
|
|
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 POI database"), |
|
|
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->mmpoi_path); |
|
|
|
|
|
if(!g_file_test(context->appdata->mmpoi_path, G_FILE_TEST_EXISTS)) { |
|
|
char *last_sep = strrchr(context->appdata->mmpoi_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->mmpoi_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->mmpoi_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->mmpoi_path); |
|
|
context->appdata->mmpoi_path = strdup(name); |
|
|
gtk_label_set_text(GTK_LABEL(context->path_label), |
|
|
context->appdata->mmpoi_path); |
|
|
} |
|
|
} |
|
|
|
|
|
gtk_widget_destroy (dialog); |
|
|
} |
|
|
|
|
283 |
void mmpoi_export(appdata_t *appdata) { |
void mmpoi_export(appdata_t *appdata) { |
284 |
sqlite3 *db; |
sqlite3 *db; |
285 |
char *zErrMsg = 0; |
char *zErrMsg = 0; |
318 |
/* ------------------ radius limit gui ------------------ */ |
/* ------------------ radius limit gui ------------------ */ |
319 |
|
|
320 |
GtkWidget *label, *hbox = gtk_hbox_new(FALSE,2); |
GtkWidget *label, *hbox = gtk_hbox_new(FALSE,2); |
321 |
context.use_radius = gtk_check_button_new_with_label( |
context.use_radius = check_button_new_with_label( |
322 |
_("Limit export radius to:")); |
_("Limit export radius to:")); |
323 |
context.entry = dist_entry_new(appdata->mmpoi_radius, appdata->imperial); |
context.entry = dist_entry_new(appdata->mmpoi_radius, appdata->imperial); |
324 |
|
|
326 |
gtk_box_pack_start_defaults(GTK_BOX(hbox), context.entry); |
gtk_box_pack_start_defaults(GTK_BOX(hbox), context.entry); |
327 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox); |
gtk_box_pack_start_defaults(GTK_BOX(vbox), hbox); |
328 |
|
|
329 |
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(context.use_radius), |
check_button_set_active(context.use_radius, appdata->mmpoi_use_radius); |
|
appdata->mmpoi_use_radius); |
|
330 |
|
|
331 |
/* Connect the "clicked" signal of the button to our callback */ |
/* Connect the "clicked" signal of the button to our callback */ |
332 |
gtk_signal_connect (GTK_OBJECT(context.use_radius), "clicked", |
gtk_signal_connect (GTK_OBJECT(context.use_radius), "clicked", |
336 |
G_CALLBACK(export_radius_modified), (gpointer)&context); |
G_CALLBACK(export_radius_modified), (gpointer)&context); |
337 |
|
|
338 |
/* ------------------ don't export found/disabled/archived -------------- */ |
/* ------------------ don't export found/disabled/archived -------------- */ |
|
|
|
339 |
hbox = gtk_hbox_new(FALSE,2); |
hbox = gtk_hbox_new(FALSE,2); |
340 |
|
|
341 |
label = gtk_label_new(_("Don't export")); |
label = gtk_label_new(_("Don't export")); |
342 |
gtk_misc_set_alignment(GTK_MISC(label), 0.f, 0.5f); |
gtk_misc_set_alignment(GTK_MISC(label), 0.f, 0.5f); |
343 |
context.no_found = gtk_check_button_new_with_label(_("found")); |
GtkWidget *ihbox = gtk_hbox_new(FALSE,0); |
344 |
context.no_disabled = gtk_check_button_new_with_label(_("disabled/archived")); |
context.no_found = toggle_button_new_with_label(_("found")); |
345 |
|
context.no_disabled = toggle_button_new_with_label(_("disabled/archived")); |
346 |
|
|
347 |
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(context.no_found), |
toggle_button_set_active(context.no_found, |
348 |
appdata->mmpoi_dont_export_found); |
appdata->mmpoi_dont_export_found); |
349 |
|
|
350 |
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(context.no_disabled), |
toggle_button_set_active(context.no_disabled, |
351 |
appdata->mmpoi_dont_export_disabled); |
appdata->mmpoi_dont_export_disabled); |
352 |
|
|
353 |
gtk_box_pack_start_defaults(GTK_BOX(hbox), label); |
gtk_box_pack_start_defaults(GTK_BOX(hbox), label); |
354 |
gtk_box_pack_start_defaults(GTK_BOX(hbox), context.no_found); |
gtk_box_pack_start_defaults(GTK_BOX(ihbox), context.no_found); |
355 |
gtk_box_pack_start_defaults(GTK_BOX(hbox), context.no_disabled); |
gtk_box_pack_start_defaults(GTK_BOX(ihbox), context.no_disabled); |
356 |
|
gtk_box_pack_start_defaults(GTK_BOX(hbox), ihbox); |
357 |
|
|
358 |
gtk_signal_connect (GTK_OBJECT(context.no_found), "clicked", |
gtk_signal_connect (GTK_OBJECT(context.no_found), "clicked", |
359 |
GTK_SIGNAL_FUNC(export_update), (gpointer)&context); |
GTK_SIGNAL_FUNC(export_update), (gpointer)&context); |
374 |
|
|
375 |
#ifdef USE_MAEMO |
#ifdef USE_MAEMO |
376 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
377 |
context.launch = gtk_check_button_new_with_label( |
context.launch = check_button_new_with_label( |
378 |
_("Launch Maemo Mapper after export"))); |
_("Launch Maemo Mapper after export"))); |
379 |
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(context.launch), |
check_button_set_active(context.launch, !appdata->mmpoi_dontlaunch); |
|
!appdata->mmpoi_dontlaunch); |
|
380 |
#endif |
#endif |
381 |
|
|
382 |
/* ------------------ path/file ------------------ */ |
/* ------------------ path/file ------------------ */ |
383 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), gtk_hseparator_new()); |
gtk_box_pack_start_defaults(GTK_BOX(vbox), gtk_hseparator_new()); |
384 |
|
|
385 |
hbox = gtk_hbox_new(FALSE, 0); |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
386 |
label = gtk_label_new(_("Export to:")); |
export_file(_("Save POI database"), &appdata->mmpoi_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")); |
|
|
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->mmpoi_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); |
|
387 |
|
|
388 |
/* ------------------ info ------------------ */ |
/* ------------------ info ------------------ */ |
389 |
|
|
394 |
if(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(context.dialog))) { |
if(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(context.dialog))) { |
395 |
#ifdef USE_MAEMO |
#ifdef USE_MAEMO |
396 |
appdata->mmpoi_dontlaunch = |
appdata->mmpoi_dontlaunch = |
397 |
!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(context.launch)); |
!check_button_get_active(context.launch); |
398 |
#endif |
#endif |
399 |
|
|
400 |
/* remove existing database */ |
/* remove existing database */ |
416 |
gtk_box_pack_start_defaults(GTK_BOX(GTK_DIALOG(wait_dialog)->vbox), |
gtk_box_pack_start_defaults(GTK_BOX(GTK_DIALOG(wait_dialog)->vbox), |
417 |
pbar = gtk_progress_bar_new()); |
pbar = gtk_progress_bar_new()); |
418 |
|
|
419 |
GtkWidget *button = gtk_button_new_with_label(_("Cancel")); |
GtkWidget *button = button_new_with_label(_("Cancel")); |
420 |
int cancelled = 0; |
int cancelled = 0; |
421 |
gtk_signal_connect(GTK_OBJECT(button), "clicked", |
gtk_signal_connect(GTK_OBJECT(button), "clicked", |
422 |
GTK_SIGNAL_FUNC(on_cancel), (gpointer)&cancelled); |
GTK_SIGNAL_FUNC(on_cancel), (gpointer)&cancelled); |