return new_name;
}
-VikLoadType_t a_file_load ( VikAggregateLayer *top, VikViewport *vp, const gchar *filename_or_uri )
+VikLoadType_t a_file_load ( VikAggregateLayer *top, VikViewport *vp, VikTrwLayer *vtl, const gchar *filename_or_uri )
{
g_return_val_if_fail ( vp != NULL, LOAD_TYPE_READ_FAILURE );
// must be loaded into a new TrackWaypoint layer (hence it be created)
gboolean success = TRUE; // Detect load failures - mainly to remove the layer created as it's not required
- VikLayer *vtl = vik_layer_create ( VIK_LAYER_TRW, vp, FALSE );
- vik_layer_rename ( vtl, a_file_basename ( filename ) );
+ // Add to specified layer
+ gboolean add_new = !IS_VIK_TRW_LAYER(vtl);
+ if (add_new) {
+ vtl = vik_layer_create ( VIK_LAYER_TRW, vp, FALSE );
+ vik_layer_rename ( vtl, a_file_basename ( filename ) );
+ }
// In fact both kml & gpx files start the same as they are in xml
if ( a_file_check_ext ( filename, ".kml" ) && check_magic ( f, GPX_MAGIC, GPX_MAGIC_LEN ) ) {
else {
// Complete the setup from the successful load
vik_layer_post_read ( vtl, vp, TRUE );
- vik_aggregate_layer_add_layer ( top, vtl, FALSE );
- vik_trw_layer_auto_set_view ( VIK_TRW_LAYER(vtl), vp );
+ if (add_new) {
+ vik_aggregate_layer_add_layer ( top, vtl, FALSE );
+ vik_trw_layer_auto_set_view ( VIK_TRW_LAYER(vtl), vp );
+ }
}
}
g_free ( dirpath );
gchar *append_file_ext ( const gchar *filename, VikFileType_t type );
-VikLoadType_t a_file_load ( VikAggregateLayer *top, VikViewport *vp, const gchar *filename );
+VikLoadType_t a_file_load ( VikAggregateLayer *top, VikViewport *vp, VikTrwLayer *vtl, const gchar *filename );
gboolean a_file_save ( VikAggregateLayer *top, gpointer vp, const gchar *filename );
/* Only need to define VikTrack if the file type is FILE_TYPE_GPX_TRACK */
gboolean a_file_export ( VikTrwLayer *vtl, const gchar *filename, VikFileType_t file_type, VikTrack *trk, gboolean write_hidden );
vw->filename = g_strdup ( filename );
gboolean success = FALSE;
gboolean restore_original_filename = FALSE;
-
- vw->loaded_type = a_file_load ( vik_layers_panel_get_top_layer(vw->viking_vlp), vw->viking_vvp, filename );
+ vw->loaded_type = a_file_load ( vik_layers_panel_get_top_layer(vw->viking_vlp), vw->viking_vvp, vw->containing_vtl, filename );
switch ( vw->loaded_type )
{
case LOAD_TYPE_READ_FAILURE: