/// <summary>
        /// Shows a warning to decide which patches to clear.
        /// </summary>
        /// <param name="atLeastOnePatchUsedAsReference"></param>
        /// <param name="clearUnusedPatches"></param>
        /// <param name="clearUsedPatches"></param>
        /// <returns>True for cancelling</returns>
        private bool CheckPatchesToClearAfterWarning(bool atLeastOnePatchUsedAsReference, ref bool clearUnusedPatches,
                                                     ref bool clearUsedPatches)
        {
            if (!atLeastOnePatchUsedAsReference)
            {
                clearUnusedPatches = true;
                return(false);
            }

            WindowUtils.EMessageBoxResult result = _pcgViewModel.ShowMessageBox(
                Strings.ClearWarning, Strings.PcgTools, WindowUtils.EMessageBoxButton.YesNoCancel,
                WindowUtils.EMessageBoxImage.Warning, WindowUtils.EMessageBoxResult.Cancel);

            switch (result)
            {
            case WindowUtils.EMessageBoxResult.Cancel:
                return(true);

            case WindowUtils.EMessageBoxResult.No:
                clearUnusedPatches = true;
                break;

            case WindowUtils.EMessageBoxResult.Yes:
                clearUsedPatches   = true;
                clearUnusedPatches = true;
                break;

            default:
                throw new ApplicationException("Illegal case");
            }
            return(false);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="checkAutoLoadMasterFileSetting"></param>
        /// <param name="loadedPcgFileName"></param>
        private static void LoadMasterFileIfRequested(bool checkAutoLoadMasterFileSetting, string loadedPcgFileName)
        {
            if (checkAutoLoadMasterFileSetting)
            {
                // Get master file name.
                MasterFile masterFile = MasterFiles.MasterFiles.Instances.FindMasterFile(_mainViewModel.SelectedMemory.Model);
                if ((masterFile != null) && (masterFile.FileState == MasterFile.EFileState.Unloaded))
                {
                    switch ((MasterFiles.MasterFiles.AutoLoadMasterFiles)(Settings.Default.MasterFiles_AutoLoad))
                    {
                    case MasterFiles.MasterFiles.AutoLoadMasterFiles.Always:
                        if (masterFile.FileName != loadedPcgFileName)
                        {
                            LoadFileAndMasterFile(_mainViewModel, masterFile.FileName, false);
                        }
                        break;

                    case MasterFiles.MasterFiles.AutoLoadMasterFiles.Ask:
                        if (masterFile.FileName != loadedPcgFileName)
                        {
                            WindowUtils.EMessageBoxResult result = _mainViewModel.ShowMessageBox(
                                string.Format(Strings.AskForMasterFile, masterFile.FileName),
                                Strings.PcgTools, WindowUtils.EMessageBoxButton.YesNo,
                                WindowUtils.EMessageBoxImage.Information,
                                WindowUtils.EMessageBoxResult.Yes);

                            if (result == WindowUtils.EMessageBoxResult.Yes)
                            {
                                LoadFileAndMasterFile(_mainViewModel, masterFile.FileName, false);
                            }
                        }
                        break;

                    case MasterFiles.MasterFiles.AutoLoadMasterFiles.Never:
                        // Do nothing.
                        break;

                    default:
                        throw new ApplicationException("Illegal case");
                    }
                }
            }
        }