- case PARAM_MIN_ELEV: vdl->min_elev = data.d; break;
- case PARAM_MAX_ELEV: vdl->max_elev = data.d; break;
- case PARAM_LINE_THICKNESS: if ( data.u >= 1 && data.u <= 15 ) vdl->line_thickness = data.u; break;
- case PARAM_FILES: a_dems_load_list ( &(data.sl) ); a_dems_list_free ( vdl->files ); vdl->files = data.sl; break;
+ case PARAM_MIN_ELEV:
+ /* Convert to store internally
+ NB file operation always in internal units (metres) */
+ if (!is_file_operation && a_vik_get_units_height () == VIK_UNITS_HEIGHT_FEET )
+ vdl->min_elev = VIK_FEET_TO_METERS(data.d);
+ else
+ vdl->min_elev = data.d;
+ break;
+ case PARAM_MAX_ELEV:
+ /* Convert to store internally
+ NB file operation always in internal units (metres) */
+ if (!is_file_operation && a_vik_get_units_height () == VIK_UNITS_HEIGHT_FEET )
+ vdl->max_elev = VIK_FEET_TO_METERS(data.d);
+ else
+ vdl->max_elev = data.d;
+ break;
+ case PARAM_FILES:
+ {
+ // Clear out old settings - if any commonalities with new settings they will have to be read again
+ a_dems_list_free ( vdl->files );
+ // Set file list so any other intermediate screen drawing updates will show currently loaded DEMs by the working thread
+ vdl->files = data.sl;
+ // Thread Load
+ dem_load_thread_data *dltd = g_malloc ( sizeof(dem_load_thread_data) );
+ dltd->vdl = vdl;
+ dltd->vdl->files = data.sl;
+
+ a_background_thread ( VIK_GTK_WINDOW_FROM_WIDGET(vp),
+ _("DEM Loading"),
+ (vik_thr_func) dem_layer_load_list_thread,
+ dltd,
+ (vik_thr_free_func) dem_layer_thread_data_free,
+ (vik_thr_free_func) dem_layer_thread_cancel,
+ g_list_length ( data.sl ) ); // Number of DEM files
+ break;
+ }