Diff of /trunk/src/main.c

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

revision 174 by harbaum, Sat May 9 19:01:38 2009 UTC revision 179 by harbaum, Thu Jun 18 12:15:17 2009 UTC
# Line 36  static void main_ui_enable(appdata_t *ap Line 36  static void main_ui_enable(appdata_t *ap
36      map_action_cancel(appdata);      map_action_cancel(appdata);
37    
38    /* ---- set project name as window title ----- */    /* ---- set project name as window title ----- */
39  #ifndef USE_HILDON  #if defined(USE_HILDON) && MAEMO_VERSION_MAJOR < 5
40      if(project_valid)
41        gtk_window_set_title(GTK_WINDOW(appdata->window), appdata->project->name);
42      else
43        gtk_window_set_title(GTK_WINDOW(appdata->window), "");
44    #else
45    char *str = NULL;    char *str = NULL;
46    if(project_valid)    if(project_valid)
47      str = g_strdup_printf("OSM2Go - %s", appdata->project->name);      str = g_strdup_printf("OSM2Go - %s", appdata->project->name);
# Line 45  static void main_ui_enable(appdata_t *ap Line 50  static void main_ui_enable(appdata_t *ap
50    
51    gtk_window_set_title(GTK_WINDOW(appdata->window), str);    gtk_window_set_title(GTK_WINDOW(appdata->window), str);
52    g_free(str);    g_free(str);
 #else  
   if(project_valid)  
     gtk_window_set_title(GTK_WINDOW(appdata->window), appdata->project->name);  
   else  
     gtk_window_set_title(GTK_WINDOW(appdata->window), "");  
53  #endif  #endif
54    
55    if(appdata->iconbar && appdata->iconbar->toolbar)    if(appdata->iconbar && appdata->iconbar->toolbar)
# Line 126  cb_menu_upload(GtkMenuItem *item, gpoint Line 126  cb_menu_upload(GtkMenuItem *item, gpoint
126    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
127    if(!appdata->osm || !appdata->project) return;    if(!appdata->osm || !appdata->project) return;
128    
129      if(project_check_demo(GTK_WIDGET(appdata->window), appdata->project))
130        return;
131    
132    osm_upload(appdata, appdata->osm, appdata->project);    osm_upload(appdata, appdata->osm, appdata->project);
133  }  }
134    
# Line 134  cb_menu_download(GtkMenuItem *item, gpoi Line 137  cb_menu_download(GtkMenuItem *item, gpoi
137    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
138    if(!appdata->project) return;    if(!appdata->project) return;
139    
140      if(project_check_demo(GTK_WIDGET(appdata->window), appdata->project))
141        return;
142    
143    /* if we have valid osm data loaded: save state first */    /* if we have valid osm data loaded: save state first */
144    if(appdata->osm) {    if(appdata->osm) {
145      /* 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 147  cb_menu_download(GtkMenuItem *item, gpoi Line 153  cb_menu_download(GtkMenuItem *item, gpoi
153    // download    // download
154    if(osm_download(GTK_WIDGET(appdata->window), appdata->settings,    if(osm_download(GTK_WIDGET(appdata->window), appdata->settings,
155                    appdata->project)) {                    appdata->project)) {
156      banner_busy_start(appdata, 1, "Redrawing...");      banner_busy_start(appdata, 1, "Redrawing");
157      appdata->osm = osm_parse(appdata->project->osm);      appdata->osm = osm_parse(appdata->project->path, appdata->project->osm);
158      diff_restore(appdata, appdata->project, appdata->osm);      diff_restore(appdata, appdata->project, appdata->osm);
159      map_paint(appdata);      map_paint(appdata);
160      banner_busy_stop(appdata); //"Redrawing..."      banner_busy_stop(appdata); //"Redrawing"
161    }    }
162    
163    main_ui_enable(appdata);    main_ui_enable(appdata);
# Line 197  cb_menu_redraw(GtkMenuItem *item, gpoint Line 203  cb_menu_redraw(GtkMenuItem *item, gpoint
203    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
204    
205    /* redraw the entire map by destroying all map items and redrawing them */    /* redraw the entire map by destroying all map items and redrawing them */
206    banner_busy_start(appdata, 1, "Redrawing...");    banner_busy_start(appdata, 1, "Redrawing");
207    track_save(appdata->project, appdata->track.track);    track_save(appdata->project, appdata->track.track);
208    diff_save(appdata->project, appdata->osm);    diff_save(appdata->project, appdata->osm);
209    map_clear(appdata, MAP_LAYER_ALL);    map_clear(appdata, MAP_LAYER_ALL);
210    osm_free(&appdata->icon, appdata->osm);    osm_free(&appdata->icon, appdata->osm);
211    
212    appdata->osm = osm_parse(appdata->project->osm);    appdata->osm = osm_parse(appdata->project->path, appdata->project->osm);
213    diff_restore(appdata, appdata->project, appdata->osm);    diff_restore(appdata, appdata->project, appdata->osm);
214    map_paint(appdata);    map_paint(appdata);
215    
# Line 212  cb_menu_redraw(GtkMenuItem *item, gpoint Line 218  cb_menu_redraw(GtkMenuItem *item, gpoint
218      map_track_draw(appdata->map, appdata->track.track);      map_track_draw(appdata->map, appdata->track.track);
219    
220    wms_load(appdata);    wms_load(appdata);
221    banner_busy_stop(appdata); //"Redrawing..."    banner_busy_stop(appdata); //"Redrawing"
222  }  }
223  #endif  #endif
224    
# Line 220  static void Line 226  static void
226  cb_menu_map_no_icons(GtkCheckMenuItem *item, gpointer data) {  cb_menu_map_no_icons(GtkCheckMenuItem *item, gpointer data) {
227    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
228    
229    banner_busy_start(appdata, 1, "Redrawing...");    banner_busy_start(appdata, 1, "Redrawing");
230    map_clear(appdata, MAP_LAYER_OBJECTS_ONLY);    map_clear(appdata, MAP_LAYER_OBJECTS_ONLY);
231    appdata->settings->no_icons = gtk_check_menu_item_get_active(item);    appdata->settings->no_icons = gtk_check_menu_item_get_active(item);
232    map_paint(appdata);    map_paint(appdata);
233    banner_busy_stop(appdata); //"Redrawing..."    banner_busy_stop(appdata); //"Redrawing"
234  }  }
235    
236  static void  static void
237  cb_menu_map_no_antialias(GtkCheckMenuItem *item, gpointer data) {  cb_menu_map_no_antialias(GtkCheckMenuItem *item, gpointer data) {
238    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
239    
240    banner_busy_start(appdata, 1, "Redrawing...");    banner_busy_start(appdata, 1, "Redrawing");
241    map_clear(appdata, MAP_LAYER_OBJECTS_ONLY);    map_clear(appdata, MAP_LAYER_OBJECTS_ONLY);
242    appdata->settings->no_antialias = gtk_check_menu_item_get_active(item);    appdata->settings->no_antialias = gtk_check_menu_item_get_active(item);
243    map_paint(appdata);    map_paint(appdata);
244    banner_busy_stop(appdata); //"Redrawing..."    banner_busy_stop(appdata); //"Redrawing"
245  }  }
246    
247  static void  static void
# Line 272  cb_menu_undo_changes(GtkMenuItem *item, Line 278  cb_menu_undo_changes(GtkMenuItem *item,
278                   "uploaded yet? This can't be undone.")))                   "uploaded yet? This can't be undone.")))
279      return;      return;
280    
281    banner_busy_start(appdata, 1, _("Redrawing..."));    banner_busy_start(appdata, 1, _("Redrawing"));
282    map_clear(appdata, MAP_LAYER_OBJECTS_ONLY);    map_clear(appdata, MAP_LAYER_OBJECTS_ONLY);
283    osm_free(&appdata->icon, appdata->osm);    osm_free(&appdata->icon, appdata->osm);
284    diff_remove(appdata->project);    diff_remove(appdata->project);
285    appdata->osm = osm_parse(appdata->project->osm);    appdata->osm = osm_parse(appdata->project->path, appdata->project->osm);
286    map_paint(appdata);    map_paint(appdata);
287    banner_busy_stop(appdata);  //"Redrawing..."    banner_busy_stop(appdata);  //"Redrawing"
288    
289    banner_show_info(appdata, _("Discarded local changes"));    banner_show_info(appdata, _("Discarded local changes"));
290  }  }
# Line 626  void menu_create(appdata_t *appdata) { Line 632  void menu_create(appdata_t *appdata) {
632  #endif  #endif
633    
634    menu_append_new_item(    menu_append_new_item(
635      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_project_open), _("_Open..."),      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_project_open), _("_Open"),
636      GTK_STOCK_OPEN, "<OSM2Go-Main>/Project/Open",      GTK_STOCK_OPEN, "<OSM2Go-Main>/Project/Open",
637      0, 0, TRUE, FALSE, FALSE      0, 0, TRUE, FALSE, FALSE
638    );    );
# Line 698  void menu_create(appdata_t *appdata) { Line 704  void menu_create(appdata_t *appdata) {
704    gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);    gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
705    
706    appdata->menu_item_osm_upload = menu_append_new_item(    appdata->menu_item_osm_upload = menu_append_new_item(
707      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_upload), _("_Upload..."),      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_upload), _("_Upload"),
708      "upload.16", "<OSM2Go-Main>/OSM/Upload",      "upload.16", "<OSM2Go-Main>/OSM/Upload",
709      GDK_u, GDK_SHIFT_MASK|GDK_CONTROL_MASK, TRUE, FALSE, FALSE      GDK_u, GDK_SHIFT_MASK|GDK_CONTROL_MASK, TRUE, FALSE, FALSE
710    );    );
711    
712    menu_append_new_item(    menu_append_new_item(
713      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_download), _("_Download..."),      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_download), _("_Download"),
714      "download.16", "<OSM2Go-Main>/OSM/Download",      "download.16", "<OSM2Go-Main>/OSM/Download",
715      GDK_d, GDK_SHIFT_MASK|GDK_CONTROL_MASK, TRUE, FALSE, FALSE      GDK_d, GDK_SHIFT_MASK|GDK_CONTROL_MASK, TRUE, FALSE, FALSE
716    );    );
# Line 727  void menu_create(appdata_t *appdata) { Line 733  void menu_create(appdata_t *appdata) {
733    );    );
734    
735    appdata->menu_item_osm_undo_changes = menu_append_new_item(    appdata->menu_item_osm_undo_changes = menu_append_new_item(
736      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_undo_changes), _("Disca_rd local changes..."),      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_undo_changes), _("Disca_rd local changes"),
737      GTK_STOCK_DELETE, "<OSM2Go-Main>/OSM/DiscardChanges",      GTK_STOCK_DELETE, "<OSM2Go-Main>/OSM/DiscardChanges",
738      0, 0, TRUE, FALSE, FALSE      0, 0, TRUE, FALSE, FALSE
739    );    );
740    
741    gtk_menu_shell_append(GTK_MENU_SHELL(submenu), gtk_separator_menu_item_new());    gtk_menu_shell_append(GTK_MENU_SHELL(submenu), gtk_separator_menu_item_new());
742    appdata->menu_item_osm_relations = menu_append_new_item(    appdata->menu_item_osm_relations = menu_append_new_item(
743      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_osm_relations), _("_Relations..."),      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_osm_relations), _("_Relations"),
744      NULL, "<OSM2Go-Main>/OSM/Relations",      NULL, "<OSM2Go-Main>/OSM/Relations",
745      GDK_r, GDK_SHIFT_MASK|GDK_CONTROL_MASK, TRUE, FALSE, FALSE      GDK_r, GDK_SHIFT_MASK|GDK_CONTROL_MASK, TRUE, FALSE, FALSE
746    );    );
# Line 748  void menu_create(appdata_t *appdata) { Line 754  void menu_create(appdata_t *appdata) {
754    gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);    gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
755    
756    menu_append_new_item(    menu_append_new_item(
757      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_wms_import), _("_Import..."),      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_wms_import), _("_Import"),
758      GTK_STOCK_INDEX, "<OSM2Go-Main>/WMS/Import",      GTK_STOCK_INDEX, "<OSM2Go-Main>/WMS/Import",
759      0, 0, TRUE, FALSE, FALSE      0, 0, TRUE, FALSE, FALSE
760    );    );
# Line 792  void menu_create(appdata_t *appdata) { Line 798  void menu_create(appdata_t *appdata) {
798    gtk_menu_shell_append(GTK_MENU_SHELL(submenu), gtk_separator_menu_item_new());    gtk_menu_shell_append(GTK_MENU_SHELL(submenu), gtk_separator_menu_item_new());
799    
800    menu_append_new_item(    menu_append_new_item(
801      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_style), _("St_yle..."),      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_style), _("St_yle"),
802      GTK_STOCK_SELECT_COLOR, "<OSM2Go-Main>/Map/Style",      GTK_STOCK_SELECT_COLOR, "<OSM2Go-Main>/Map/Style",
803      0, 0, TRUE, FALSE, FALSE      0, 0, TRUE, FALSE, FALSE
804    );    );
# Line 828  void menu_create(appdata_t *appdata) { Line 834  void menu_create(appdata_t *appdata) {
834    gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);    gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
835    
836    appdata->track.menu_item_import = menu_append_new_item(    appdata->track.menu_item_import = menu_append_new_item(
837      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_track_import), _("_Import..."),      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_track_import), _("_Import"),
838      NULL, "<OSM2Go-Main>/Track/Import",      NULL, "<OSM2Go-Main>/Track/Import",
839      0, 0, TRUE, FALSE, FALSE      0, 0, TRUE, FALSE, FALSE
840    );    );
841    
842    appdata->track.menu_item_export = menu_append_new_item(    appdata->track.menu_item_export = menu_append_new_item(
843      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_track_export), _("_Export..."),      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_track_export), _("_Export"),
844      NULL, "<OSM2Go-Main>/Track/Export",      NULL, "<OSM2Go-Main>/Track/Export",
845      0, 0, FALSE, FALSE, FALSE      0, 0, FALSE, FALSE, FALSE
846    );    );
# Line 866  void menu_create(appdata_t *appdata) { Line 872  void menu_create(appdata_t *appdata) {
872                          gtk_separator_menu_item_new());                          gtk_separator_menu_item_new());
873    
874    menu_append_new_item(    menu_append_new_item(
875      appdata, about_quit_items_menu, GTK_SIGNAL_FUNC(cb_menu_about), _("_About..."),      appdata, about_quit_items_menu, GTK_SIGNAL_FUNC(cb_menu_about), _("_About"),
876      GTK_STOCK_ABOUT, "<OSM2Go-Main>/About",      GTK_STOCK_ABOUT, "<OSM2Go-Main>/About",
877      0, 0, TRUE, FALSE, FALSE      0, 0, TRUE, FALSE, FALSE
878    );    );
# Line 1122  int main(int argc, char *argv[]) { Line 1128  int main(int argc, char *argv[]) {
1128    
1129    /* let gtk do its thing before loading the data, */    /* let gtk do its thing before loading the data, */
1130    /* so the user sees something */    /* so the user sees something */
1131    while(gtk_events_pending()) {    while(gtk_events_pending())
     putchar('.');  
1132      gtk_main_iteration();      gtk_main_iteration();
   }  
1133    
1134    /* load project if one is specified in the settings */    /* load project if one is specified in the settings */
1135    if(appdata.settings->project)    if(appdata.settings->project)
# Line 1137  int main(int argc, char *argv[]) { Line 1141  int main(int argc, char *argv[]) {
1141    if(appdata.settings && appdata.settings->enable_gps)    if(appdata.settings && appdata.settings->enable_gps)
1142      track_enable_gps(&appdata, TRUE);      track_enable_gps(&appdata, TRUE);
1143    
1144    /* ------------ jump into main loop ---------------- */    /* again let the ui do its thing */
1145      while(gtk_events_pending())
1146        gtk_main_iteration();
1147    
1148      /* start to interact with the user now that the gui is running */
1149      if(appdata.settings->first_run_demo) {
1150        messagef(GTK_WIDGET(appdata.window), _("Welcome to OSM2Go"),
1151                 _("This is the first time you run OSM2Go. "
1152                   "A demo project has been loaded to get you "
1153                   "started. You can play around with this demo as much "
1154                   "as you like. However, you cannot upload or download "
1155                   "the demo project.\n\n"
1156                   "In order to start working on real data you'll have "
1157                   "to setup a new project and enter your OSM user name "
1158                   "and password. You'll then be able to download the "
1159                   "latest data from OSM and upload your changes into "
1160                   "the OSM main database."
1161                   ));
1162      }
1163    
1164      /* ------------ jump into main loop ---------------- */
1165    gtk_main();    gtk_main();
1166    
1167    puts("gtk_main() left");    puts("gtk_main() left");

Legend:
Removed from v.174  
changed lines
  Added in v.179