public static CaptureSequenceList Load(Stream stream, string fileName, ICollection <MyFilterWheel.FilterInfo> filters, double latitude, double longitude) { CaptureSequenceList l = null; try { XmlSerializer xmlSerializer = new XmlSerializer(typeof(CaptureSequenceList)); l = (CaptureSequenceList)xmlSerializer.Deserialize(stream); AdjustSequenceToMatchCurrentProfile(filters, latitude, longitude, l); } catch (Exception ex) { Logger.Error(ex); Notification.ShowError(Locale.Loc.Instance["LblLoadSequenceFailed"] + Environment.NewLine + ex.Message); } return(l); }
private static void AdjustSequenceToMatchCurrentProfile(ICollection <MyFilterWheel.FilterInfo> filters, double latitude, double longitude, CaptureSequenceList l) { foreach (CaptureSequence s in l) { if (s.FilterType != null) { //first try to match by name; otherwise match by position. var filter = filters.Where((f) => f.Name == s.FilterType.Name).FirstOrDefault(); if (filter == null) { filter = filters.Where((f) => f.Position == s.FilterType.Position).FirstOrDefault(); if (filter == null) { Notification.ShowWarning(string.Format(Locale.Loc.Instance["LblFilterNotFoundForPosition"], (s.FilterType.Position + 1))); } } s.FilterType = filter; } } if (l.ActiveSequence == null && l.Count > 0) { l.ActiveSequence = l.Items.SkipWhile(x => x.TotalExposureCount - x.ProgressExposureCount == 0).FirstOrDefault(); } l.DSO?.SetDateAndPosition(SkyAtlasVM.GetReferenceDate(DateTime.Now), latitude, longitude); }