Diff of /trunk/src/mm_poi.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 232 by harbaum, Thu Nov 19 12:38:03 2009 UTC revision 233 by harbaum, Wed Dec 9 19:45:36 2009 UTC
# Line 211  typedef struct { Line 211  typedef struct {
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;
# Line 245  static gboolean export_list_update(gpoin Line 238  static gboolean export_list_update(gpoin
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 {
# Line 254  static void export_update(GtkWidget *wid Line 247  static void export_update(GtkWidget *wid
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  }  }
# Line 265  static void export_update(GtkWidget *wid Line 258  static void export_update(GtkWidget *wid
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    
# Line 286  static void on_cancel(GtkWidget *widget, Line 280  static void on_cancel(GtkWidget *widget,
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;
# Line 375  void mmpoi_export(appdata_t *appdata) { Line 318  void mmpoi_export(appdata_t *appdata) {
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    
# Line 383  void mmpoi_export(appdata_t *appdata) { Line 326  void mmpoi_export(appdata_t *appdata) {
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",
# Line 394  void mmpoi_export(appdata_t *appdata) { Line 336  void mmpoi_export(appdata_t *appdata) {
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);
# Line 431  void mmpoi_export(appdata_t *appdata) { Line 374  void mmpoi_export(appdata_t *appdata) {
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    
# Line 464  void mmpoi_export(appdata_t *appdata) { Line 394  void mmpoi_export(appdata_t *appdata) {
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 */
# Line 486  void mmpoi_export(appdata_t *appdata) { Line 416  void mmpoi_export(appdata_t *appdata) {
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);

Legend:
Removed from v.232  
changed lines
  Added in v.233