예제 #1
0
파일: MainVM.cs 프로젝트: t9mike/ADK
        private async void CalculatePhenomena()
        {
            var ps = ViewManager.CreateViewModel <PhenomenaSettingsVM>();

            ps.JulianDayFrom = sky.Context.JulianDay;
            ps.JulianDayTo   = sky.Context.JulianDay + 30;
            if (ViewManager.ShowDialog(ps) ?? false)
            {
                var tokenSource = new CancellationTokenSource();

                ViewManager.ShowProgress("Please wait", "Calculating phenomena...", tokenSource);

                var events = await Task.Run(() => sky.GetEvents(
                                                ps.JulianDayFrom,
                                                ps.JulianDayTo,
                                                ps.Categories,
                                                tokenSource.Token));

                if (!tokenSource.IsCancellationRequested)
                {
                    tokenSource.Cancel();
                    var vm = ViewManager.CreateViewModel <PhenomenaVM>();
                    vm.SetEvents(events);
                    if (ViewManager.ShowDialog(vm) ?? false)
                    {
                        sky.SetDate(vm.JulianDay);
                        if (vm.Body != null)
                        {
                            map.GoToObject(vm.Body, TimeSpan.Zero);
                        }
                    }
                }
            }
        }
예제 #2
0
파일: Plugin.cs 프로젝트: t9mike/ADK
        private void ShowMotionTrackWindow()
        {
            var body = map.SelectedObject;

            if (IsMotionTrackEnabled())
            {
                var vm = ViewManager.CreateViewModel <MotionTrackVM>();
                vm.TrackId       = Guid.NewGuid();
                vm.SelectedBody  = body;
                vm.JulianDayFrom = sky.Context.JulianDay;
                vm.JulianDayTo   = sky.Context.JulianDay + 30;
                vm.UtcOffset     = sky.Context.GeoLocation.UtcOffset;

                if (ViewManager.ShowDialog(vm) ?? false)
                {
                    sky.Calculate();
                }
            }
            else
            {
                var vm = ViewManager.CreateViewModel <TracksListVM>();
                if (ViewManager.ShowDialog(vm) ?? false)
                {
                    sky.Calculate();
                }
            }
        }
예제 #3
0
파일: MainVM.cs 프로젝트: t9mike/ADK
        private async void GetObjectEphemeris(CelestialObject body)
        {
            var es = ViewManager.CreateViewModel <EphemerisSettingsVM>();

            es.SelectedBody  = body;
            es.JulianDayFrom = sky.Context.JulianDay;
            es.JulianDayTo   = sky.Context.JulianDay + 30;
            if (ViewManager.ShowDialog(es) ?? false)
            {
                var tokenSource = new CancellationTokenSource();
                var progress    = new Progress <double>();

                ViewManager.ShowProgress("Please wait", "Calculating ephemerides...", tokenSource, progress);

                var ephem = await Task.Run(() => sky.GetEphemerides(
                                               es.SelectedBody,
                                               es.JulianDayFrom,
                                               es.JulianDayTo,
                                               es.Step.TotalDays,
                                               es.Categories,
                                               tokenSource.Token,
                                               progress
                                               ));

                if (!tokenSource.IsCancellationRequested)
                {
                    tokenSource.Cancel();
                    var vm = ViewManager.CreateViewModel <EphemerisVM>();
                    vm.SetData(es.SelectedBody, es.JulianDayFrom, es.JulianDayTo, es.Step, ephem);
                    ViewManager.ShowWindow(vm);
                }
            }
        }
예제 #4
0
        private void EditFrame(FovFrame frame)
        {
            var viewModel = ViewManager.CreateViewModel <FovSettingsVM>();

            viewModel.Frame = frame;
            if (ViewManager.ShowDialog(viewModel) ?? false)
            {
                frame = viewModel.Frame;
                int index = fovFrames.FindIndex(f => f.Id == frame.Id);

                if (index >= 0)
                {
                    fovFrames.RemoveAt(index);
                    fovFrames.Insert(index, frame);
                }
                else
                {
                    fovFrames.Add(frame);
                }

                settings.Set("FovFrames", fovFrames);
                settings.Save();
                NotifyPropertyChanged(nameof(FovFrames), nameof(IsEmptyList));
            }
        }
예제 #5
0
        private void ShowLunarEclipsesView()
        {
            var vm = ViewManager.CreateViewModel <LunarEclipseVM>();

            vm.Closing += (e) => { vm.Dispose(); };
            ViewManager.ShowWindow(vm);
        }
예제 #6
0
        private void OpenFovFramesList()
        {
            var vm = ViewManager.CreateViewModel <FovFramesListVM>();

            ViewManager.ShowDialog(vm);
            NotifyPropertyChanged(
                nameof(FrameMenuItems),
                nameof(FrameContextMenuItems),
                nameof(IsContextMenuVisible));
        }
예제 #7
0
 private void ShowTracksListWindow()
 {
     if (IsTracksListEnabled)
     {
         var vm = ViewManager.CreateViewModel <TracksListVM>();
         if (ViewManager.ShowDialog(vm) ?? false)
         {
             sky.Calculate();
         }
     }
 }
예제 #8
0
파일: MainVM.cs 프로젝트: t9mike/ADK
        private void SelectLocation()
        {
            var vm = ViewManager.CreateViewModel <LocationVM>();

            if (ViewManager.ShowDialog(vm) ?? false)
            {
                sky.Context.GeoLocation = new CrdsGeographical(vm.ObserverLocation);
                settings.Set("ObserverLocation", vm.ObserverLocation);
                settings.Save();
                sky.Calculate();
            }
        }
예제 #9
0
파일: TracksListVM.cs 프로젝트: t9mike/ADK
        private void EditTrack(Track t)
        {
            var vm = ViewManager.CreateViewModel <MotionTrackVM>();

            vm.TrackId       = t.Id;
            vm.LabelsStep    = t.LabelsStep;
            vm.DrawLabels    = t.DrawLabels;
            vm.SelectedBody  = t.Body;
            vm.JulianDayFrom = t.From;
            vm.JulianDayTo   = t.To;
            vm.UtcOffset     = sky.Context.GeoLocation.UtcOffset;
            vm.TrackColor    = t.Color;

            if (ViewManager.ShowDialog(vm) ?? false)
            {
                sky.Calculate();
                LoadList();
            }
        }
예제 #10
0
        private void AddFovFrame()
        {
            var viewModel = ViewManager.CreateViewModel <FovSettingsVM>();

            viewModel.Frame = new TelescopeFovFrame()
            {
                Id = Guid.NewGuid(), Color = new SkyColor(Color.Purple)
            };
            if (ViewManager.ShowDialog(viewModel) ?? false)
            {
                fovFrames.Add(viewModel.Frame);
                settings.SetAndSave("FovFrames", fovFrames);

                NotifyPropertyChanged(
                    nameof(FrameMenuItems),
                    nameof(FrameContextMenuItems),
                    nameof(IsContextMenuVisible));
            }
        }
예제 #11
0
        /// <summary>
        /// Creates new plan, from filter or from collection of items.
        /// </summary>
        private void CreateNewPlan(PlanImportData data)
        {
            var planFilterVM = ViewManager.CreateViewModel <PlanningFilterVM>();
            var defaults     = settings.Get("PlannerDefaultSettings", new PlanningFilter());

            planFilterVM.Title     = Text.Get("Planner.PlanningFilter.CreateNew.Title");
            planFilterVM.Filter    = defaults;
            planFilterVM.JulianDay = sky.Context.JulianDayMidnight;
            planFilterVM.TimeFrom  = TimeSpan.FromHours(22);
            planFilterVM.TimeTo    = TimeSpan.FromHours(0);

            // create filter window with list of celestial objects
            if (data != null && data.Objects.Any())
            {
                planFilterVM.CelestialObjects = data.Objects;
                if (data.Date != null)
                {
                    planFilterVM.JulianDay = new Date(data.Date.Value).ToJulianEphemerisDay();
                }
                if (data.Begin != null)
                {
                    planFilterVM.TimeFrom = data.Begin.Value;
                }
                if (data.End != null)
                {
                    planFilterVM.TimeTo = data.End.Value;
                }
                if (data.FilePath != null)
                {
                    planFilterVM.Title = Text.Get("Planner.PlanningFilter.Import.Title");
                }
            }

            if (ViewManager.ShowDialog(planFilterVM) ?? false)
            {
                var planListVM = ViewManager.CreateViewModel <PlanningListVM>();
                ViewManager.ShowWindow(planListVM);
                planListVM.CreatePlan(planFilterVM.Filter);
                AddActivePlan(planListVM);
                planListVM.Closing += x => RemoveActivePlan(planListVM);
            }
        }
예제 #12
0
        private void ShowPlannerDefaults()
        {
            var planFilterVM = ViewManager.CreateViewModel <PlanningFilterVM>();

            var defaults = settings.Get("PlannerDefaultSettings", new PlanningFilter());

            defaults.JulianDayMidnight = sky.Context.JulianDayMidnight;
            defaults.ObserverLocation  = sky.Context.GeoLocation;

            planFilterVM.Title = Text.Get("Planner.PlanningFilter.Defaults");
            planFilterVM.IsDateTimeControlsVisible = false;
            planFilterVM.Filter = defaults;
            if (!defaults.CelestialObjectsTypes.Any())
            {
                planFilterVM.Nodes.First().IsChecked = true;
            }

            if (ViewManager.ShowDialog(planFilterVM) ?? false)
            {
                settings.SetAndSave("PlannerDefaultSettings", planFilterVM.Filter);
            }
        }
예제 #13
0
 private void EditEquipment(Type equipmentType, bool isNew)
 {
     if (equipmentType == typeof(Telescope))
     {
         var vm = ViewManager.CreateViewModel <TelescopeVM>();
         vm.Telescopes = Telescopes;
         if (!isNew)
         {
             vm.Telescope.CopyFrom(Telescope);
         }
         if (ViewManager.ShowDialog(vm) ?? false)
         {
             if (isNew)
             {
                 Telescopes.Add(vm.Telescope);
             }
             TelescopeId = Guid.Empty;
             TelescopeId = vm.Telescope.Id;
             Telescope.CopyFrom(vm.Telescope);
             _Equipment.Telescopes = new ObservableCollection <Telescope>(Telescopes.OrderBy(t => t.Name));
             NotifyPropertyChanged(nameof(Telescopes), nameof(TelescopeId), nameof(Telescope));
             Calculate();
             SaveEquipment();
         }
     }
     else if (equipmentType == typeof(Eyepiece))
     {
         var vm = ViewManager.CreateViewModel <EyepieceVM>();
         vm.Eyepieces = Eyepieces;
         if (!isNew)
         {
             vm.Eyepiece.CopyFrom(Eyepiece);
         }
         if (ViewManager.ShowDialog(vm) ?? false)
         {
             if (isNew)
             {
                 Eyepieces.Add(vm.Eyepiece);
             }
             EyepieceId = Guid.Empty;
             EyepieceId = vm.Eyepiece.Id;
             Eyepiece.CopyFrom(vm.Eyepiece);
             _Equipment.Eyepieces = new ObservableCollection <Eyepiece>(Eyepieces.OrderBy(t => t.Name));
             NotifyPropertyChanged(nameof(Eyepieces), nameof(EyepieceId), nameof(Eyepiece));
             Calculate();
             SaveEquipment();
         }
     }
     else if (equipmentType == typeof(Camera))
     {
         var vm = ViewManager.CreateViewModel <CameraVM>();
         vm.Cameras = Cameras;
         if (!isNew)
         {
             vm.Camera.CopyFrom(Camera);
         }
         if (ViewManager.ShowDialog(vm) ?? false)
         {
             if (isNew)
             {
                 Cameras.Add(vm.Camera);
             }
             CameraId = Guid.Empty;
             CameraId = vm.Camera.Id;
             Camera.CopyFrom(vm.Camera);
             _Equipment.Cameras = new ObservableCollection <Camera>(Cameras.OrderBy(t => t.Name));
             NotifyPropertyChanged(nameof(Cameras), nameof(CameraId), nameof(Camera));
             Calculate();
             SaveEquipment();
         }
     }
     else if (equipmentType == typeof(Binocular))
     {
         var vm = ViewManager.CreateViewModel <BinocularVM>();
         vm.Binoculars = Binoculars;
         if (!isNew)
         {
             vm.Binocular.CopyFrom(Binocular);
         }
         if (ViewManager.ShowDialog(vm) ?? false)
         {
             if (isNew)
             {
                 Binoculars.Add(vm.Binocular);
             }
             BinocularId = Guid.Empty;
             BinocularId = vm.Binocular.Id;
             Binocular.CopyFrom(vm.Binocular);
             _Equipment.Binoculars = new ObservableCollection <Binocular>(Binoculars.OrderBy(t => t.Name));
             NotifyPropertyChanged(nameof(Binoculars), nameof(BinocularId), nameof(Binocular));
             Calculate();
             SaveEquipment();
         }
     }
 }