18 |
*/ |
*/ |
19 |
|
|
20 |
#include "appdata.h" |
#include "appdata.h" |
21 |
|
#include "banner.h" |
22 |
|
|
23 |
#include <sys/stat.h> |
#include <sys/stat.h> |
24 |
|
|
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 |
|
|
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 |
|
|
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 */ |
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 |