Diff of /trunk/src/project.c

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

revision 27 by achadwick, Wed Dec 24 00:36:35 2008 UTC revision 28 by achadwick, Wed Dec 24 14:17:20 2008 UTC
# Line 18  Line 18 
18   */   */
19    
20  #include "appdata.h"  #include "appdata.h"
21    #include "banner.h"
22    
23  #include <sys/stat.h>  #include <sys/stat.h>
24    
# Line 1043  gboolean project_open(appdata_t *appdata Line 1044  gboolean project_open(appdata_t *appdata
1044    /* --------- project structure ok: load its OSM file --------- */    /* --------- project structure ok: load its OSM file --------- */
1045    appdata->project = project;    appdata->project = project;
1046    
1047    printf("project_load: loading osm\n");    printf("project_open: loading osm\n");
1048    appdata->osm = osm_parse(project->osm);    appdata->osm = osm_parse(project->osm);
1049    if(!appdata->osm) return FALSE;    if(!appdata->osm) return FALSE;
1050    
# Line 1078  gboolean project_close(appdata_t *appdat Line 1079  gboolean project_close(appdata_t *appdat
1079    return TRUE;    return TRUE;
1080  }  }
1081    
1082    #define _PROJECT_LOAD_BUF_SIZ 64
1083    
1084  gboolean project_load(appdata_t *appdata, char *name) {  gboolean project_load(appdata_t *appdata, char *name) {
1085    char *proj_name = NULL;    char *proj_name = NULL;
1086    
# Line 1088  gboolean project_load(appdata_t *appdata Line 1091  gboolean project_load(appdata_t *appdata
1091        printf("no project selected\n");        printf("no project selected\n");
1092        return FALSE;        return FALSE;
1093      }      }
1094    } else    }
1095      else {
1096      proj_name = g_strdup(name);      proj_name = g_strdup(name);
1097      }
1098    
1099      char banner_txt[_PROJECT_LOAD_BUF_SIZ];
1100      memset(banner_txt, 0, _PROJECT_LOAD_BUF_SIZ);
1101    
1102      snprintf(&banner_txt, _PROJECT_LOAD_BUF_SIZ, _("Loading %s"), proj_name);
1103      banner_busy_start(appdata, TRUE, banner_txt);
1104    
1105    /* close current project */    /* close current project */
1106      banner_busy_tick();
1107    if(appdata->project)    if(appdata->project)
1108      project_close(appdata);      project_close(appdata);
1109    
1110    /* open project itself */    /* open project itself */
1111      banner_busy_tick();
1112    if(!project_open(appdata, proj_name)) {    if(!project_open(appdata, proj_name)) {
1113      printf("error opening requested project\n");      printf("error opening requested project\n");
1114        snprintf(&banner_txt, _PROJECT_LOAD_BUF_SIZ, _("Error opening %s"), proj_name);
1115        banner_busy_stop(appdata);
1116        banner_show_info(appdata, banner_txt);
1117      g_free(proj_name);      g_free(proj_name);
1118      return FALSE;      return FALSE;
1119    }    }
1120    
   g_free(proj_name);  
   
1121    /* check if OSM data is valid */    /* check if OSM data is valid */
1122      banner_busy_tick();
1123    if(!osm_sanity_check(GTK_WIDGET(appdata->window), appdata->osm)) {    if(!osm_sanity_check(GTK_WIDGET(appdata->window), appdata->osm)) {
1124      printf("project/osm sanity checks failed, unloading project\n");      printf("project/osm sanity checks failed, unloading project\n");
1125      project_free(appdata->project);      project_free(appdata->project);
1126        snprintf(&banner_txt, _PROJECT_LOAD_BUF_SIZ, _("Error opening %s"), proj_name);
1127        banner_busy_stop(appdata);
1128        banner_show_info(appdata, banner_txt);
1129        g_free(proj_name);
1130      return FALSE;      return FALSE;
1131    }    }
1132    
1133    /* load diff possibly preset */    /* load diff possibly preset */
1134      banner_busy_tick();
1135    diff_restore(appdata, appdata->project, appdata->osm);    diff_restore(appdata, appdata->project, appdata->osm);
1136    
1137    /* prepare colors etc, draw data and adjust scroll/zoom settings */    /* prepare colors etc, draw data and adjust scroll/zoom settings */
1138      banner_busy_tick();
1139    map_init(appdata);    map_init(appdata);
1140    
1141    /* restore a track */    /* restore a track */
1142      banner_busy_tick();
1143    appdata->track.track = track_restore(appdata, appdata->project);    appdata->track.track = track_restore(appdata, appdata->project);
1144    if(appdata->track.track)    if(appdata->track.track)
1145      map_track_draw(appdata->map, appdata->track.track);      map_track_draw(appdata->map, appdata->track.track);
1146    
1147    /* finally load a background if present */    /* finally load a background if present */
1148      banner_busy_tick();
1149    wms_load(appdata);    wms_load(appdata);
1150    
1151    /* save the name of the project for the perferences */    /* save the name of the project for the perferences */
# Line 1130  gboolean project_load(appdata_t *appdata Line 1153  gboolean project_load(appdata_t *appdata
1153      g_free(appdata->settings->project);      g_free(appdata->settings->project);
1154    appdata->settings->project = g_strdup(appdata->project->name);    appdata->settings->project = g_strdup(appdata->project->name);
1155    
1156      snprintf(&banner_txt, _PROJECT_LOAD_BUF_SIZ, _("Loaded %s"), proj_name);
1157      banner_busy_stop(appdata);
1158      banner_show_info(appdata, banner_txt);
1159      statusbar_set(appdata, NULL, 0);
1160    
1161      g_free(proj_name);
1162    return TRUE;    return TRUE;
1163  }  }
1164    // vim:et:ts=8:sw=2:sts=2:ai

Legend:
Removed from v.27  
changed lines
  Added in v.28