示例#1
0
        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);
        }
示例#2
0
 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);
 }