/// <summary> /// Implementation for SaveCommand. /// Validates all settings and saves them. /// </summary> private void SaveImplementation() { if (this.PointsToSmooth != 0 && (this.PointsToSmooth % 2 == 0 || this.PointsToSmooth < 3)) { this.dialogService.MessageBox("Points To Smooth must be an odd number of at least 3. 0 = No smoothing."); return; } if (this.ExportImageDpi < 1) { this.dialogService.MessageBox("Export Image DPI must be at least 1."); return; } IcParameters.Instance.PrecursorTolerancePpm = new Tolerance(this.PrecursorIonTolerance, this.PrecursorIonToleranceUnit); IcParameters.Instance.ProductIonTolerancePpm = new Tolerance(this.ProductIonTolerance, this.ProductIonToleranceUnit); IcParameters.Instance.IonCorrelationThreshold = this.IonCorrelationThreshold; IcParameters.Instance.PointsToSmooth = this.PointsToSmooth; IcParameters.Instance.PrecursorRelativeIntensityThreshold = this.PrecursorRelativeIntensityThreshold; IcParameters.Instance.ShowInstrumentData = this.ShowInstrumentData; IcParameters.Instance.AutomaticallySelectIonTypes = this.AutomaticallySelectIonTypes; IcParameters.Instance.CidHcdIonTypes = IcParameters.IonTypeStringParse(this.CidHcdIonTypes); IcParameters.Instance.EtdIonTypes = IcParameters.IonTypeStringParse(this.EtdIonTypes); IcParameters.Instance.ExportImageDpi = this.ExportImageDpi; IcParameters.Instance.FeatureColors = this.FeatureColors.GetOxyColors(); IcParameters.Instance.IdColors = this.IdColors.GetOxyColors(); IcParameters.Instance.Ms2ScanColor = this.Ms2ScanColor.ToOxyColor(); var modificationList = this.Modifications.Select(searchModificationVm => searchModificationVm.SearchModification) .Where(searchModification => searchModification != null).ToList(); IcParameters.Instance.SearchModifications = modificationList; HeavyModificationsViewModel.Save(); IcParameters.Instance.Update(); this.Status = true; if (this.ReadyToClose != null) { this.ReadyToClose(this, null); } }
/// <summary> /// Initializes a new instance of the <see cref="SettingsViewModel"/> class. /// </summary> /// <param name="dialogService">Dialog service for opening dialogs from a view model.</param> public SettingsViewModel(IMainDialogService dialogService) { this.dialogService = dialogService; this.ToleranceUnits = new ReactiveList <ToleranceUnit> { ToleranceUnit.Ppm, ToleranceUnit.Th }; this.PrecursorIonTolerance = IcParameters.Instance.PrecursorTolerancePpm.GetValue(); this.PrecursorIonToleranceUnit = IcParameters.Instance.PrecursorTolerancePpm.GetUnit(); this.ProductIonTolerance = IcParameters.Instance.ProductIonTolerancePpm.GetValue(); this.ProductIonToleranceUnit = IcParameters.Instance.ProductIonTolerancePpm.GetUnit(); this.IonCorrelationThreshold = IcParameters.Instance.IonCorrelationThreshold; this.PointsToSmooth = IcParameters.Instance.PointsToSmooth; this.PrecursorRelativeIntensityThreshold = IcParameters.Instance.PrecursorRelativeIntensityThreshold; this.ShowInstrumentData = IcParameters.Instance.ShowInstrumentData; this.AutomaticallySelectIonTypes = IcParameters.Instance.AutomaticallySelectIonTypes; this.CidHcdIonTypes = IcParameters.Instance.GetCidHcdIonTypes(); this.EtdIonTypes = IcParameters.Instance.GetEtdIonTypes(); this.ExportImageDpi = IcParameters.Instance.ExportImageDpi; this.FeatureColors = new ColorListViewModel(); this.IdColors = new ColorListViewModel(); var oxyScanCol = IcParameters.Instance.Ms2ScanColor; this.Ms2ScanColor = new Color { A = oxyScanCol.A, R = oxyScanCol.R, G = oxyScanCol.G, B = oxyScanCol.B }; foreach (var color in IcParameters.Instance.FeatureColors) { this.FeatureColors.ColorViewModels.Add(new ColorViewModel { SelectedColor = new Color { A = color.A, R = color.R, B = color.B, G = color.G } }); } foreach (var color in IcParameters.Instance.IdColors) { this.IdColors.ColorViewModels.Add(new ColorViewModel { SelectedColor = new Color { A = color.A, R = color.R, B = color.B, G = color.G } }); } this.Modifications = new ReactiveList <SearchModificationViewModel>(); foreach (var searchModification in IcParameters.Instance.SearchModifications) { var modificationVm = new SearchModificationViewModel(searchModification, this.dialogService); ////modificationVm.RemoveModificationCommand.Subscribe(_ => this.RemoveModification(modificationVm)); this.Modifications.Add(modificationVm); } var addModificationCommand = ReactiveCommand.Create(); addModificationCommand.Subscribe(_ => this.AddModificationImplementation()); this.AddModificationCommand = addModificationCommand; var createNewModificationCommand = ReactiveCommand.Create(); createNewModificationCommand.Subscribe(_ => this.CreateNewModificationImplementation()); this.CreateNewModificationCommand = createNewModificationCommand; var saveCommand = ReactiveCommand.Create(); saveCommand.Subscribe(_ => this.SaveImplementation()); this.SaveCommand = saveCommand; var cancelCommand = ReactiveCommand.Create(); cancelCommand.Subscribe(_ => this.CancelImplementation()); this.CancelCommand = cancelCommand; HeavyModificationsViewModel = new HeavyModificationsViewModel(dialogService); this.Status = false; }