private void DeleteGlobalPreset(Preset preset)
 {
     PresetDataManager.DeletePreset(preset);
 }
        private void OnImportPresetsClicked(object sender, RoutedEventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();

            dialog.AddExtension     = true;
            dialog.CheckFileExists  = true;
            dialog.CheckPathExists  = true;
            dialog.DefaultExt       = "*.xml";
            dialog.DereferenceLinks = true;
            dialog.Filter           = "XML file (*.xml)|*.xml";
            dialog.Multiselect      = false;
            dialog.Title            = "Choose presets file to import";
            dialog.ValidateNames    = true;
            Interceptor.Interception.DisableMouseEvents = true;
            var result = dialog.ShowDialog(this);

            Interceptor.Interception.DisableMouseEvents = false;
            if (result != true)
            {
                return;
            }

            var extension = System.IO.Path.GetExtension(dialog.FileName);

            if (extension.ToLower() != ".xml")
            {
                Controls.MessageBox.Show(
                    "You must provide an xml file!",
                    ApplicationInfo.AppName,
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);

                return;
            }

            List <Preset> presets = new List <Preset>();
            Exception     ex      = null;

            try
            {
                presets = PresetData.Deserialize(dialog.FileName).Presets.ToList();
            }
            catch (Exception currentVersionException)
            {
                ex = currentVersionException;
            }

            if (ex != null)
            {
                ex = null;
                try
                {
                    presets = PresetUpgrader.GetUpgradedPresets(dialog.FileName).ToList();
                }
                catch (Exception oldVersionException)
                {
                    ex = oldVersionException;
                }
            }

            if (ex != null)
            {
                LogWriter.Write(ex.ToString());
                Controls.MessageBox.Show(
                    "Failed to load presets! See " + LogWriter.GetLogFileName + " for more details",
                    ApplicationInfo.AppName,
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);

                return;
            }

            var presetNames     = string.Empty;
            var overwriteString = string.Empty;

            foreach (var preset in presets)
            {
                presetNames += Environment.NewLine + preset.Name;
                var duplicate = PresetDataManager.FindPreset(preset.Name);
                if (duplicate != null)
                {
                    presetNames    += " [Will be overwritten]";
                    overwriteString = "/overwrite";
                }
            }

            var message = string.Format(
                "Are you sure that you want to add{0} the following presets?{1}{2}",
                overwriteString,
                Environment.NewLine,
                presetNames);

            var confirm = Controls.MessageBox.Show(
                message,
                ApplicationInfo.AppName,
                MessageBoxButton.YesNo,
                MessageBoxImage.Question);

            if (confirm == MessageBoxResult.Yes)
            {
                foreach (var preset in presets)
                {
                    var duplicateToDelete = PresetDataManager.FindPreset(preset.Name);
                    if (duplicateToDelete != null)
                    {
                        PresetDataManager.DeletePreset(duplicateToDelete);
                    }

                    PresetDataManager.AddNewPreset(preset);
                }
            }
        }