using System; using System.ComponentModel; namespace DatabaseImport { [Serializable] public class RegionOfInterest : INotifyPropertyChanged { public RegionOfInterest() { Suffix = string.Empty; Start = -1D; End = 1D; IsEnabled = true; IsDefault = true; } public RegionOfInterest(bool isDefault = false) : this() { IsDefault = isDefault; } public RegionOfInterest(string suffix = "", bool isDefault = false, double start = -1D, double end = 1D) : this(isDefault) { Suffix = suffix; Start = start; End = end; } private string _suffix = string.Empty; public string Suffix { get => _suffix; set { if (!string.IsNullOrWhiteSpace(value) && !(value.StartsWith("_") && string.IsNullOrWhiteSpace(value.Substring(1)))) { _suffix = value.StartsWith("_") ? value : "_" + value; } OnPropertyChanged("Suffix"); } } private double _start = double.MinValue; public double Start { get => _start; set { if (value >= End) { value = End - 0.01; } if (value < PreTrigger) { value = PreTrigger; } _start = value; OnPropertyChanged("Start"); } } private double _end = double.MaxValue; public double End { get => _end; set { if (value <= Start) { value = Start + 0.01; } if (value > PostTrigger) { value = PostTrigger; } _end = value; OnPropertyChanged("End"); } } private double _preTrigger = double.MinValue; public double PreTrigger { get => _preTrigger; set { _preTrigger = value; OnPropertyChanged("PreTrigger"); if (Start < PreTrigger) { Start = PreTrigger; } } } private double _postTrigger = double.MaxValue; public double PostTrigger { get => _postTrigger; set { _postTrigger = value; OnPropertyChanged("PostTrigger"); if (End > PostTrigger) { End = PostTrigger; } } } private bool _isEnabled = true; public bool IsEnabled { get => _isEnabled; set { _isEnabled = value; OnPropertyChanged("IsEnabled"); } } public bool IsDefault { get; private set; } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }