Diff of /trunk/src/main.c

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

revision 79 by achadwick, Sun Feb 15 22:15:06 2009 UTC revision 140 by harbaum, Sun Mar 22 20:25:14 2009 UTC
# Line 1  Line 1 
1  /*  /*
2     * Copyright (C) 2008 Till Harbaum <till@harbaum.org>.
3     *
4   * This file is part of OSM2Go.   * This file is part of OSM2Go.
5   *   *
6   * OSM2Go is free software: you can redistribute it and/or modify   * OSM2Go is free software: you can redistribute it and/or modify
# Line 73  static void main_ui_enable(appdata_t *ap Line 75  static void main_ui_enable(appdata_t *ap
75  /******************** begin of menu *********************/  /******************** begin of menu *********************/
76    
77  static void  static void
78  cb_menu_project_open(GtkWidget *window, gpointer data) {  cb_menu_project_open(GtkMenuItem *item, gpointer data) {
79    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
80    project_load(appdata, NULL);    project_load(appdata, NULL);
81    main_ui_enable(appdata);    main_ui_enable(appdata);
82  }  }
83    
84  static void  static void
85  cb_menu_project_close(GtkWidget *window, gpointer data) {  cb_menu_project_close(GtkMenuItem *item, gpointer data) {
86    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
87    project_close(appdata);    project_close(appdata);
88    main_ui_enable(appdata);    main_ui_enable(appdata);
89  }  }
90    
91  static void  static void
92  cb_menu_about(GtkWidget *window, gpointer data) {  cb_menu_about(GtkMenuItem *item, gpointer data) {
93    GtkAboutDialog *about = GTK_ABOUT_DIALOG(gtk_about_dialog_new());    appdata_t *appdata = (appdata_t*)data;
   
   gtk_about_dialog_set_name(about, "OSM2Go");  
   gtk_about_dialog_set_version(about, VERSION);  
   gtk_about_dialog_set_copyright(about, _("Copyright 2008"));  
94    
95    const gchar *authors[] = {    const gchar *authors[] = {
96      "Till Harbaum <till@harbaum.org>",      "Till Harbaum <till@harbaum.org>",
97      "Andrew Chadwick <andrewc-osm2go@piffle.org>",      "Andrew Chadwick <andrewc-osm2go@piffle.org>",
98      NULL };      NULL };
99    
100    gtk_about_dialog_set_authors(about, authors);    const gchar *artists[] = {
101    #ifdef USE_HILDON
102    gtk_about_dialog_set_website(about,      /* cyrillic doesn't seem to work on hildon */
103         _("http://www.harbaum.org/till/maemo"));      "Andrew Zhilin <drew.zhilin@gmail.com>",
104    #else
105    gtk_about_dialog_set_comments(about,      "Андрей Жилин <drew.zhilin@gmail.com>",
106         _("Mobile OSM Editor"));  #endif
107        NULL };
108    
109    gtk_widget_show_all(GTK_WIDGET(about));    gtk_show_about_dialog(GTK_WINDOW(appdata->window),
110    gtk_dialog_run(GTK_DIALOG(about));                          "name", "OSM2Go",
111    gtk_widget_destroy(GTK_WIDGET(about));                          "version", VERSION,
112                            "copyright", _("Copyright 2008-2009"),
113                            "authors", authors,
114                            "artists", artists,
115                            "website", _("http://www.harbaum.org/till/maemo"),
116                            "comments", _("Mobile OSM Editor"),
117                            NULL);
118  }  }
119    
120  void on_window_destroy (GtkWidget *widget, gpointer data);  void on_window_destroy (GtkWidget *widget, gpointer data);
121    
122  static void  static void
123  cb_menu_quit(GtkWidget *window, gpointer data) {  cb_menu_quit(GtkMenuItem *item, gpointer data) {
124    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
125    gtk_widget_destroy(GTK_WIDGET(appdata->window));    gtk_widget_destroy(GTK_WIDGET(appdata->window));
126  }  }
127    
128  static void  static void
129  cb_menu_upload(GtkWidget *window, gpointer data) {  cb_menu_upload(GtkMenuItem *item, gpointer data) {
130    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
131    if(!appdata->osm || !appdata->project) return;    if(!appdata->osm || !appdata->project) return;
132    
# Line 129  cb_menu_upload(GtkWidget *window, gpoint Line 134  cb_menu_upload(GtkWidget *window, gpoint
134  }  }
135    
136  static void  static void
137  cb_menu_download(GtkWidget *window, gpointer data) {  cb_menu_download(GtkMenuItem *item, gpointer data) {
138    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
139    if(!appdata->project) return;    if(!appdata->project) return;
140    
# Line 156  cb_menu_download(GtkWidget *window, gpoi Line 161  cb_menu_download(GtkWidget *window, gpoi
161  }  }
162    
163  static void  static void
164  cb_menu_wms_import(GtkWidget *window, gpointer data) {  cb_menu_wms_import(GtkMenuItem *item, gpointer data) {
165    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
166    wms_import(appdata);    wms_import(appdata);
167  }  }
168    
169  static void  static void
170  cb_menu_wms_clear(GtkWidget *window, gpointer data) {  cb_menu_wms_clear(GtkMenuItem *item, gpointer data) {
171    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
172    wms_remove(appdata);    wms_remove(appdata);
173  }  }
174    
175  static void  static void
176  cb_menu_wms_adjust(GtkWidget *window, gpointer data) {  cb_menu_wms_adjust(GtkMenuItem *item, gpointer data) {
177    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
178    map_action_set(appdata, MAP_ACTION_BG_ADJUST);    map_action_set(appdata, MAP_ACTION_BG_ADJUST);
179  }  }
# Line 176  cb_menu_wms_adjust(GtkWidget *window, gp Line 181  cb_menu_wms_adjust(GtkWidget *window, gp
181  /* ----------- hide objects for performance reasons ----------- */  /* ----------- hide objects for performance reasons ----------- */
182    
183  static void  static void
184  cb_menu_map_hide_sel(GtkWidget *window, gpointer data) {  cb_menu_map_hide_sel(GtkMenuItem *item, gpointer data) {
185    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
186    map_hide_selected(appdata);    map_hide_selected(appdata);
187  }  }
188    
189  static void  static void
190  cb_menu_map_show_all(GtkWidget *window, gpointer data) {  cb_menu_map_show_all(GtkMenuItem *item, gpointer data) {
191    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
192    map_show_all(appdata);    map_show_all(appdata);
193  }  }
# Line 191  cb_menu_map_show_all(GtkWidget *window, Line 196  cb_menu_map_show_all(GtkWidget *window,
196    
197  #if 1  // mainly for testing  #if 1  // mainly for testing
198  static void  static void
199  cb_menu_redraw(GtkWidget *window, gpointer data) {  cb_menu_redraw(GtkMenuItem *item, gpointer data) {
200    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
201    
202    /* redraw the entire map by destroying all map items and redrawing them */    /* redraw the entire map by destroying all map items and redrawing them */
# Line 215  cb_menu_redraw(GtkWidget *window, gpoint Line 220  cb_menu_redraw(GtkWidget *window, gpoint
220  #endif  #endif
221    
222  static void  static void
223  cb_menu_style(GtkWidget *widget, gpointer data) {  cb_menu_style(GtkMenuItem *item, gpointer data) {
224    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
225    
226    style_select(GTK_WIDGET(appdata->window), appdata);    style_select(GTK_WIDGET(appdata->window), appdata);
227  }  }
228    
229  static void  static void
230  cb_menu_map_no_icons(GtkWidget *widget, gpointer data) {  cb_menu_map_no_icons(GtkCheckMenuItem *item, gpointer data) {
231    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
232    
233    banner_busy_start(appdata, 1, "Redrawing...");    banner_busy_start(appdata, 1, "Redrawing...");
234    map_clear(appdata, MAP_LAYER_OBJECTS_ONLY);    map_clear(appdata, MAP_LAYER_OBJECTS_ONLY);
235    appdata->settings->no_icons =    appdata->settings->no_icons = gtk_check_menu_item_get_active(item);
     gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));  
236    map_paint(appdata);    map_paint(appdata);
237    banner_busy_stop(appdata); //"Redrawing..."    banner_busy_stop(appdata); //"Redrawing..."
238  }  }
239    
240  static void  static void
241  cb_menu_map_no_antialias(GtkWidget *widget, gpointer data) {  cb_menu_map_no_antialias(GtkCheckMenuItem *item, gpointer data) {
242    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
243    
244    banner_busy_start(appdata, 1, "Redrawing...");    banner_busy_start(appdata, 1, "Redrawing...");
245    map_clear(appdata, MAP_LAYER_OBJECTS_ONLY);    map_clear(appdata, MAP_LAYER_OBJECTS_ONLY);
246    appdata->settings->no_antialias =    appdata->settings->no_antialias = gtk_check_menu_item_get_active(item);
     gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));  
247    map_paint(appdata);    map_paint(appdata);
248    banner_busy_stop(appdata); //"Redrawing..."    banner_busy_stop(appdata); //"Redrawing..."
249  }  }
250    
251  static void  static void
252  cb_menu_undo(GtkWidget *widget, gpointer data) {  cb_menu_undo(GtkMenuItem *item, gpointer data) {
253    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
254    
255    undo(appdata);    undo(appdata);
# Line 255  cb_menu_undo(GtkWidget *widget, gpointer Line 258  cb_menu_undo(GtkWidget *widget, gpointer
258  }  }
259    
260  static void  static void
261  cb_menu_save_changes(GtkWidget *widget, gpointer data) {  cb_menu_save_changes(GtkMenuItem *item, gpointer data) {
262    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
263    
264    diff_save(appdata->project, appdata->osm);    diff_save(appdata->project, appdata->osm);
# Line 263  cb_menu_save_changes(GtkWidget *widget, Line 266  cb_menu_save_changes(GtkWidget *widget,
266  }  }
267    
268  static void  static void
269  cb_menu_undo_changes(GtkWidget *widget, gpointer data) {  cb_menu_undo_changes(GtkMenuItem *item, gpointer data) {
270    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
271    
272    if(!yes_no_f(GTK_WIDGET(appdata->window), NULL, 0, 0,    if(!yes_no_f(GTK_WIDGET(appdata->window), NULL, 0, 0,
# Line 284  cb_menu_undo_changes(GtkWidget *widget, Line 287  cb_menu_undo_changes(GtkWidget *widget,
287  }  }
288    
289  static void  static void
290  cb_menu_osm_relations(GtkWidget *widget, gpointer data) {  cb_menu_osm_relations(GtkMenuItem *item, gpointer data) {
291    relation_list((appdata_t*)data);    relation_list((appdata_t*)data);
292  }  }
293    
294  static void  static void
295  cb_menu_fullscreen(GtkWidget *widget, gpointer data) {  cb_menu_fullscreen(GtkCheckMenuItem *item, gpointer data) {
296    appdata_t *appdata = (appdata_t *)data;    appdata_t *appdata = (appdata_t *)data;
297    
298    if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))    if(gtk_check_menu_item_get_active(item))
299      gtk_window_fullscreen(GTK_WINDOW(appdata->window));      gtk_window_fullscreen(GTK_WINDOW(appdata->window));
300    else    else
301      gtk_window_unfullscreen(GTK_WINDOW(appdata->window));      gtk_window_unfullscreen(GTK_WINDOW(appdata->window));
302  }  }
303    
304  static void  static void
305  cb_menu_zoomin(GtkWidget *widget, appdata_t *appdata) {  cb_menu_zoomin(GtkMenuItem *item, appdata_t *appdata) {
306    if(!appdata || !appdata->map) return;    if(!appdata || !appdata->map) return;
307    
308    map_set_zoom(appdata->map, appdata->map->state->zoom*ZOOM_FACTOR_MENU, TRUE);    map_set_zoom(appdata->map, appdata->map->state->zoom*ZOOM_FACTOR_MENU, TRUE);
# Line 307  cb_menu_zoomin(GtkWidget *widget, appdat Line 310  cb_menu_zoomin(GtkWidget *widget, appdat
310  }  }
311    
312  static void  static void
313  cb_menu_zoomout(GtkWidget *widget, appdata_t *appdata) {  cb_menu_zoomout(GtkMenuItem *item, appdata_t *appdata) {
314    if(!appdata || !appdata->map) return;    if(!appdata || !appdata->map) return;
315    
316    map_set_zoom(appdata->map, appdata->map->state->zoom/ZOOM_FACTOR_MENU, TRUE);    map_set_zoom(appdata->map, appdata->map->state->zoom/ZOOM_FACTOR_MENU, TRUE);
# Line 315  cb_menu_zoomout(GtkWidget *widget, appda Line 318  cb_menu_zoomout(GtkWidget *widget, appda
318  }  }
319    
320  static void  static void
321  cb_menu_track_import(GtkWidget *window, appdata_t *appdata) {  cb_menu_track_import(GtkMenuItem *item, appdata_t *appdata) {
322    
323    /* open a file selector */    /* open a file selector */
324    GtkWidget *dialog;    GtkWidget *dialog;
# Line 364  cb_menu_track_import(GtkWidget *window, Line 367  cb_menu_track_import(GtkWidget *window,
367  }  }
368    
369  static void  static void
370  cb_menu_track_gps(GtkWidget *window, gpointer data) {  cb_menu_track_gps(GtkMenuItem *item, gpointer data) {
371    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
372    
373    if(gtk_check_menu_item_get_active(    if(gtk_check_menu_item_get_active(
# Line 376  cb_menu_track_gps(GtkWidget *window, gpo Line 379  cb_menu_track_gps(GtkWidget *window, gpo
379  }  }
380    
381  static void  static void
382  cb_menu_track_export(GtkWidget *window, gpointer data) {  cb_menu_track_export(GtkMenuItem *item, gpointer data) {
383    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
384    messagef(GTK_WIDGET(appdata->window), _("NIY"),    messagef(GTK_WIDGET(appdata->window), _("NIY"),
385             _("Track export is not yet supported."));             _("Track export is not yet supported."));
386  }  }
387    
388  static void  static void
389  cb_menu_track_clear(GtkWidget *window, gpointer data) {  cb_menu_track_clear(GtkMenuItem *item, gpointer data) {
390    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
391    track_do(appdata, TRACK_NONE, NULL);    track_do(appdata, TRACK_NONE, NULL);
392  }  }
# Line 904  int main(int argc, char *argv[]) { Line 907  int main(int argc, char *argv[]) {
907    
908    g_thread_init(NULL);    g_thread_init(NULL);
909    
   gps_init(&appdata);  
   
910    gtk_init (&argc, &argv);    gtk_init (&argc, &argv);
911    
912      gps_init(&appdata);
913    
914  #ifdef USE_HILDON  #ifdef USE_HILDON
915    printf("Installing osso context for \"org.harbaum." PACKAGE "\"\n");    printf("Installing osso context for \"org.harbaum." PACKAGE "\"\n");
916    appdata.osso_context = osso_initialize("org.harbaum."PACKAGE,    appdata.osso_context = osso_initialize("org.harbaum."PACKAGE,
# Line 1005  int main(int argc, char *argv[]) { Line 1008  int main(int argc, char *argv[]) {
1008    puts("gtk_main() left");    puts("gtk_main() left");
1009    
1010    track_save(appdata.project, appdata.track.track);    track_save(appdata.project, appdata.track.track);
1011      track_clear(&appdata, appdata.track.track);
1012    
1013    /* save a diff if there are dirty entries */    /* save a diff if there are dirty entries */
1014    diff_save(appdata.project, appdata.osm);    diff_save(appdata.project, appdata.osm);

Legend:
Removed from v.79  
changed lines
  Added in v.140