Exemplo n.º 1
0
        public OptionsVM(IProfileService profileService, IFilterWheelMediator filterWheelMediator) : base(profileService)
        {
            Title         = "LblOptions";
            CanClose      = false;
            ImageGeometry = (System.Windows.Media.GeometryGroup)System.Windows.Application.Current.Resources["SettingsSVG"];

            this.filterWheelMediator = filterWheelMediator;
            OpenWebRequestCommand    = new RelayCommand(OpenWebRequest);
            OpenImageFileDiagCommand = new RelayCommand(OpenImageFileDiag);
            OpenSharpCapSensorAnalysisFolderDiagCommand = new RelayCommand(OpenSharpCapSensorAnalysisFolderDiag);
            OpenSequenceTemplateDiagCommand             = new RelayCommand(OpenSequenceTemplateDiag);
            OpenSequenceCommandAtCompletionDiagCommand  = new RelayCommand(OpenSequenceCommandAtCompletionDiag);
            OpenSequenceFolderDiagCommand          = new RelayCommand(OpenSequenceFolderDiag);
            OpenCygwinFileDiagCommand              = new RelayCommand(OpenCygwinFileDiag);
            OpenPS2FileDiagCommand                 = new RelayCommand(OpenPS2FileDiag);
            OpenPHD2DiagCommand                    = new RelayCommand(OpenPHD2FileDiag);
            OpenASPSFileDiagCommand                = new RelayCommand(OpenASPSFileDiag);
            OpenASTAPFileDiagCommand               = new RelayCommand(OpenASTAPFileDiag);
            OpenLogFolderCommand                   = new RelayCommand(OpenLogFolder);
            ToggleColorsCommand                    = new RelayCommand(ToggleColors);
            DownloadIndexesCommand                 = new RelayCommand(DownloadIndexes);
            OpenSkyAtlasImageRepositoryDiagCommand = new RelayCommand(OpenSkyAtlasImageRepositoryDiag);
            OpenSkySurveyCacheDirectoryDiagCommand = new RelayCommand(OpenSkySurveyCacheDirectoryDiag);
            ImportFiltersCommand                   = new RelayCommand(ImportFilters);
            AddFilterCommand          = new RelayCommand(AddFilter);
            SetAutoFocusFilterCommand = new RelayCommand(SetAutoFocusFilter);
            RemoveFilterCommand       = new RelayCommand(RemoveFilter);
            AddProfileCommand         = new RelayCommand(AddProfile);
            CloneProfileCommand       = new RelayCommand(CloneProfile, (object o) => { return(SelectedProfile != null); });
            RemoveProfileCommand      = new RelayCommand(RemoveProfile, (object o) => { return(SelectedProfile != null && SelectedProfile.Id != profileService.ActiveProfile.Id); });
            SelectProfileCommand      = new RelayCommand(SelectProfile, (o) => {
                return(SelectedProfile != null);
            });

            CopyToCustomSchemaCommand            = new RelayCommand(CopyToCustomSchema, (object o) => ActiveProfile.ColorSchemaSettings.ColorSchema?.Name != "Custom");
            CopyToAlternativeCustomSchemaCommand = new RelayCommand(CopyToAlternativeCustomSchema, (object o) => ActiveProfile.ColorSchemaSettings.ColorSchema?.Name != "Alternative Custom");
            SiteFromGPSCommand         = new AsyncCommand <bool>(() => Task.Run(SiteFromGPS));
            SiteFromPlanetariumCommand = new AsyncCommand <bool>(() => Task.Run(SiteFromPlanetarium));
            ImagePatterns = ImagePatterns.CreateExample();

            ScanForIndexFiles();

            profileService.LocaleChanged += (object sender, EventArgs e) => {
                ImagePatterns = ImagePatterns.CreateExample();
                RaisePropertyChanged(nameof(FileTypes));
            };

            profileService.LocationChanged += (object sender, EventArgs e) => {
                RaisePropertyChanged(nameof(Latitude));
                RaisePropertyChanged(nameof(Longitude));
            };

            profileService.ProfileChanged += (object sender, EventArgs e) => {
                ProfileChanged();
            };
        }
Exemplo n.º 2
0
        public ImagePatterns GetImagePatterns()
        {
            var p        = new ImagePatterns();
            var metadata = this.MetaData;

            p.Set(ImagePatternKeys.Filter, metadata.FilterWheel.Filter);
            p.Set(ImagePatternKeys.ExposureTime, metadata.Image.ExposureTime);
            p.Set(ImagePatternKeys.ApplicationStartDate, Utility.Utility.ApplicationStartDate.ToString("yyyy-MM-dd"));
            p.Set(ImagePatternKeys.Date, metadata.Image.ExposureStart.ToString("yyyy-MM-dd"));

            // ExposureStart is initialized to DateTime.MinValue, and we cannot subtract time from that. Only evaluate
            // the $$DATEMINUS12$$ pattern if the time is at least 12 hours on from DateTime.MinValue.
            if (metadata.Image.ExposureStart > DateTime.MinValue.AddHours(12))
            {
                p.Set(ImagePatternKeys.DateMinus12, metadata.Image.ExposureStart.AddHours(-12).ToString("yyyy-MM-dd"));
            }

            p.Set(ImagePatternKeys.Time, metadata.Image.ExposureStart.ToString("HH-mm-ss"));
            p.Set(ImagePatternKeys.DateTime, metadata.Image.ExposureStart.ToString("yyyy-MM-dd_HH-mm-ss"));
            p.Set(ImagePatternKeys.FrameNr, metadata.Image.ExposureNumber.ToString("0000"));
            p.Set(ImagePatternKeys.ImageType, metadata.Image.ImageType);
            p.Set(ImagePatternKeys.TargetName, metadata.Target.Name);

            if (metadata.Image.RecordedRMS != null)
            {
                p.Set(ImagePatternKeys.RMS, metadata.Image.RecordedRMS.Total);
                p.Set(ImagePatternKeys.RMSArcSec, metadata.Image.RecordedRMS.Total * metadata.Image.RecordedRMS.Scale);
            }

            if (!double.IsNaN(metadata.Focuser.Position))
            {
                p.Set(ImagePatternKeys.FocuserPosition, metadata.Focuser.Position);
            }

            if (!double.IsNaN(metadata.Focuser.Temperature))
            {
                p.Set(ImagePatternKeys.FocuserTemp, metadata.Focuser.Temperature);
            }

            if (metadata.Camera.Binning == string.Empty)
            {
                p.Set(ImagePatternKeys.Binning, "1x1");
            }
            else
            {
                p.Set(ImagePatternKeys.Binning, metadata.Camera.Binning);
            }

            if (!double.IsNaN(metadata.Camera.Temperature))
            {
                p.Set(ImagePatternKeys.SensorTemp, metadata.Camera.Temperature);
            }

            if (metadata.Camera.Gain >= 0)
            {
                p.Set(ImagePatternKeys.Gain, metadata.Camera.Gain);
            }

            if (metadata.Camera.Offset >= 0)
            {
                p.Set(ImagePatternKeys.Offset, metadata.Camera.Offset);
            }

            if (metadata.Camera.USBLimit >= 0)
            {
                p.Set(ImagePatternKeys.USBLimit, metadata.Camera.USBLimit);
            }

            if (!double.IsNaN(this.StarDetectionAnalysis.HFR))
            {
                p.Set(ImagePatternKeys.HFR, this.StarDetectionAnalysis.HFR);
            }

            if (!double.IsNaN(metadata.WeatherData.SkyQuality))
            {
                p.Set(ImagePatternKeys.SQM, metadata.WeatherData.SkyQuality);
            }

            if (!string.IsNullOrEmpty(metadata.Camera.ReadoutModeName))
            {
                p.Set(ImagePatternKeys.ReadoutMode, metadata.Camera.ReadoutModeName);
            }

            if (!string.IsNullOrEmpty(metadata.Camera.Name))
            {
                p.Set(ImagePatternKeys.Camera, metadata.Camera.Name);
            }

            if (!string.IsNullOrEmpty(metadata.Telescope.Name))
            {
                p.Set(ImagePatternKeys.Telescope, metadata.Telescope.Name);
            }

            if (!double.IsNaN(metadata.Rotator.MechanicalPosition))
            {
                p.Set(ImagePatternKeys.RotatorAngle, metadata.Rotator.MechanicalPosition);
            }

            if (this.StarDetectionAnalysis.DetectedStars >= 0)
            {
                p.Set(ImagePatternKeys.StarCount, this.StarDetectionAnalysis.DetectedStars);
            }

            return(p);
        }