// Show the screen brightness vs ambient light level calibration window
        private void _ShowCalibration(object sender, RoutedEventArgs e)
        {
            if (_calibration == null)
            {
                // Create new window from saved points if not already open
                _calibration = new Calibration(_settings.Screen_LearnedPoints.Select(p => new DataPoint(p.Item1, p.Item2)).ToList(), _settings.Screen_Curvature);
                if (_lastPoint != null)
                {
                    _calibration.CurrentPoint = (DataPoint)_lastPoint;
                }
                var isEn   = _autoScreen.Enabled;
                var isHkEn = _autoScreen.HotKeyEnabled;
                _autoScreen.Enabled       = false;
                _autoScreen.HotKeyEnabled = false;
                var tempScreen = new AutoScreenBrightnessController(null);
                tempScreen.BrightnessChanged += (sen, eve) =>
                {
                    _calibration.CurrentPoint = new DataPoint(eve.Intensity, eve.Brightness);
                };
                _calibration.Refresh += (sen, eve) =>
                {
                    tempScreen.LearnedPoints = eve.LearnedPoints;
                    tempScreen.Curvature     = eve.Curvature;
                    _ = tempScreen.Retrigger();
                };
                _calibration.ManualScreenBrightness += (sen, eve) =>
                {
                    byte br = (byte)Math.Round(eve.ScreenBrightness * 100.0);
                    tempScreen.SetBrightnessSlider(br);
                    _lastPoint = new DataPoint(_calibration.CurrentPoint.X, eve.ScreenBrightness);
                    _calibration.CurrentPoint = (DataPoint)_lastPoint;
                };
                _calibration.Closed += (sen, eve) =>
                {
                    _calibration              = null;
                    _autoScreen.Enabled       = isEn;
                    _autoScreen.HotKeyEnabled = isHkEn;
                };
                _calibration.Apply += (sen, eve) =>
                {
                    // Transfer points on Apply
                    _settings.Screen_Curvature = _calibration.Curvature;
                    _settings.Screen_LearnedPoints.Clear();
                    _settings.Screen_LearnedPoints.AddRange(_calibration.LearnedPoints.Select(p => new Tuple <double, double>(p.X, p.Y)).ToList());
                    _settings.Screen_LearnedPoints = _settings.Screen_LearnedPoints;

                    _ = _autoScreen.Retrigger();
                };
            }
            _calibration.Show();
        }