public void PrintAudioFileOptions(AudioFileOption bestOption, string headerToPrint)
        {
            ConsolePrintHelpers.PrintWhiteText("\n  " + headerToPrint + " Option(s) :  ");

            int longestPathLength = 0;
            int currentPathLength;

            foreach (AudioFileOption option in _AudioFileOptions)
            {
                currentPathLength = Globals.CursorsLeft[0] + option.LibraryFile.FullPath.Length;

                if (currentPathLength > longestPathLength)
                {
                    longestPathLength = currentPathLength;
                }
            }

            foreach (AudioFileOption option in _AudioFileOptions)
            {
                Console.CursorLeft = Globals.CursorsLeft[0];

                if (option.LibraryFile.FullPath == bestOption.LibraryFile.FullPath)
                {
                    ConsolePrintHelpers.PrintGrayText(option.LibraryFile.FullPath);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(option.LibraryFile.FullPath);
                }

                Console.CursorLeft = longestPathLength;

                ConsolePrintHelpers.PrintWhiteText("     [");
                ConsolePrintHelpers.PrintGrayText("S: ");
                ConsolePrintHelpers.PrintCyanText(option.AccuracyScore.ToString().PadLeft(4));
                ConsolePrintHelpers.PrintGrayText(",  T: ");
                ConsolePrintHelpers.PrintYellowText(option.GetTotalPoints().ToString().PadLeft(3));
                ConsolePrintHelpers.PrintGrayText(",  A/A: " + option.ArtistAlbumPoints.ToString().PadLeft(3) + ",  Tr: " + option.TrackPoints.ToString().PadLeft(3) + ", Size: " + option.LibraryFile.FileSize + " bytes");
                ConsolePrintHelpers.PrintWhiteText("]\n");
            }

            if (_AudioFileOptionsOriginalCount > _AudioFileOptions.Count)
            {
                Console.CursorLeft = Globals.CursorsLeft[0];
                ConsolePrintHelpers.PrintWhiteText((_AudioFileOptionsOriginalCount - _AudioFileOptions.Count).ToString());
                ConsolePrintHelpers.PrintDarkGrayText(" Remaining Files Not Printed...\n");
            }

            Console.WriteLine();
        }
Ejemplo n.º 2
0
        public void ScanRootDirectoryPath()
        {
            DirectoryInfo di = new DirectoryInfo(_AudioLibraryRootDirectoryPath);

            List <FileInfo> topDirectoryFiles = di.EnumerateFiles("*", SearchOption.TopDirectoryOnly)
                                                .Where(file => _Config.IncludedAudioLibraryExtensions   //If we are not using the Manual Shortcuts Directory, this will allow ".mp3" + ".wav"...  If using Manual Shortcuts, this will only allow ".lnk"
                                                       .Any(ext => file.Extension.EndsWith(ext, StringComparison.OrdinalIgnoreCase)))
                                                .ToList();

            List <DirectoryInfo> subDirectories = new List <DirectoryInfo>();

            if (!_Config.UseManualShortcutsDirectory)
            {
                foreach (FileInfo file in topDirectoryFiles)
                {
                    if (file.Exists)  //If path too long '.Exists' returns false; '.Length' below would throw an Exception
                    {
                        if (file.Length > 0)
                        {
                            _AudioLibraryFiles.Add(new AudioLibraryFile(file, _AudioLibraryRootDirectoryPath, _Config));
                        }
                    }
                }

                subDirectories = di.EnumerateDirectories("*", SearchOption.TopDirectoryOnly)
                                 .AsParallel()
                                 .ToList();
            }
            else  //Handle shortcuts instead
            {
                WshShell shell = new WshShell();

                foreach (FileInfo shortcut in topDirectoryFiles)
                {
                    IWshShortcut link = (IWshShortcut)shell.CreateShortcut(shortcut.FullName);

                    if (System.IO.File.Exists(link.TargetPath))  //Is a FILE;  Can't handle long paths, this will fail if path either doesn't exist, or is too long
                    {
                        FileInfo file = new FileInfo(link.TargetPath);

                        if (file.Exists && file.Length > 0)
                        {
                            if (Globals.IncludedAudioLibraryExtensions.Any(ext => ext == file.Extension.ToLower()))  //check that target is a ".mp3" or ".wav" file (shortcuts are ".lnk")
                            {
                                _AudioLibraryFiles.Add(new AudioLibraryFile(file, _AudioLibraryRootDirectoryPath, _Config));
                            }
                        }
                    }
                    else if (Directory.Exists(link.TargetPath))  //Is a DIRECTORY;  Can't handle long paths, this will fail if path either doesn't exist, or is too long
                    {
                        DirectoryInfo subDirectory = new DirectoryInfo(link.TargetPath);

                        if (subDirectory.Exists)
                        {
                            subDirectories.Add(subDirectory);
                        }
                    }
                    else if (!link.TargetPath.StartsWith(_Config.AudioLibraryRoot))  //Can't resolve the shortcut target to a valid directory or file. Is it pointing to an arbitrary mapped drive letter? (If so, appropriate error message will be displayed in AudioLibrary)
                    {
                        _AreShortcutsValid = false;
                    }
                }
            }


            if (subDirectories.Count >= (Console.WindowHeight - Globals.AudioLibraryScanPrintMargin))
            {
                foreach (DirectoryInfo subDirectory in subDirectories)
                {
                    AudioLibrarySubDirectory newSubDirectory = new AudioLibrarySubDirectory(subDirectory.FullName, _AudioLibraryRootDirectoryPath, _Config);

                    _SubDirectories.Add(newSubDirectory);
                }
            }
            else if (subDirectories.Count > 0)
            {
                int longestPath = subDirectories.Max(subDir => subDir.FullName.Length);
                int cursorLeft  = "                        ".Length + longestPath + "   ".Length;

                foreach (DirectoryInfo subDirectory in subDirectories)
                {
                    AudioLibrarySubDirectory newSubDirectory = new AudioLibrarySubDirectory(subDirectory.FullName, _AudioLibraryRootDirectoryPath, _Config);

                    ConsolePrintHelpers.PrintDarkGrayText("                        " + subDirectory.FullName);
                    Console.CursorLeft = cursorLeft;
                    ConsolePrintHelpers.PrintDarkGrayText("File Count :  ");

                    newSubDirectory.CursorTop  = Console.CursorTop;
                    newSubDirectory.CursorLeft = Console.CursorLeft;

                    _SubDirectories.Add(newSubDirectory);

                    Console.WriteLine();
                }
            }
        }
        private bool PromptForUsingManualShortcutsDirectory()
        {
            ConsolePrintHelpers.PrintWhiteText("  Please Select...\n\n");

            ConsolePrintHelpers.PrintGreenText("    1");
            ConsolePrintHelpers.PrintWhiteText(" ► Scan Entire Audio Library For Source Files\n\n");

            foreach (string rootPath in _AudioLibraryRootPaths)
            {
                ConsolePrintHelpers.PrintDarkGrayText("         " + rootPath + "\n");
            }

            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("    2");
            ConsolePrintHelpers.PrintWhiteText(" ► Scan Manual Shortcuts Directory [");
            ConsolePrintHelpers.PrintCyanText(ManualShortcutsDirectory);
            ConsolePrintHelpers.PrintWhiteText("]\n\n");

            ConsolePrintHelpers.PrintDarkGrayText("         NOTE:  Only provide shortcuts to an absolute path, NOT an arbitrary mapped drive.\n");
            ConsolePrintHelpers.PrintDarkGrayText("                Shortcuts should be targeting directories and files in:  " + _AudioLibraryRoot + "\n\n");

            ConsolePrintHelpers.PrintWhiteText("  Choice ►");
            ConsolePrintHelpers.PrintGreenText(" ");

            while (true)
            {
                int cursorLeft = Console.CursorLeft;

                while (Console.KeyAvailable)
                {
                    ConsoleKeyInfo key = Console.ReadKey(true);  //flush keyboard buffer
                }

                ConsoleKeyInfo keyPressed = Console.ReadKey();

                Thread.Sleep(500);

                if (keyPressed.KeyChar != '1' && keyPressed.KeyChar != '2')
                {
                    Console.CursorLeft = cursorLeft + 1;  //in case user presses "enter"
                    ConsolePrintHelpers.PrintYellowText("  Incorrect Key Pressed!");
                    Thread.Sleep(1000);
                    Console.CursorLeft = cursorLeft;
                    ConsolePrintHelpers.PrintGreenText("                         ");
                    Console.CursorLeft = cursorLeft;
                }
                else
                {
                    if (keyPressed.KeyChar == '1')
                    {
                        return(false);
                    }

                    if (keyPressed.KeyChar == '2')
                    {
                        return(true);
                    }
                }
            }
        }
        public void PrintManualOptions(AudioFileOption selectedOption, ManualSelectionType type, bool printSkipChoices)
        {
            if (type != ManualSelectionType.None && type != ManualSelectionType.Encoding)
            {
                int cursorTopChange = 6 + (_AudioFileOptions.Count * 2);

                Console.CursorTop -= cursorTopChange;
            }

            Console.WriteLine();

            int longestPathLength = 0;
            int currentPathLength;

            foreach (AudioFileOption option in _AudioFileOptions)
            {
                currentPathLength = 10 + option.LibraryFile.FullPath.Length;

                if (currentPathLength > longestPathLength)
                {
                    longestPathLength = currentPathLength;
                }
            }

            int selection = 0;

            foreach (AudioFileOption option in _AudioFileOptions)
            {
                Console.CursorLeft = 5;

                ConsolePrintHelpers.PrintGreenText(selection.ToString());
                ConsolePrintHelpers.PrintWhiteText(" ► ");

                bool isSelected = false;

                if ((type == ManualSelectionType.Selected || type == ManualSelectionType.Encoding) && option.LibraryFile.FullPath == selectedOption.LibraryFile.FullPath)
                {
                    ConsolePrintHelpers.PrintGreenText(option.LibraryFile.FullPath);

                    isSelected = true;
                }
                else if (type == ManualSelectionType.Confirm && option.LibraryFile.FullPath == selectedOption.LibraryFile.FullPath)
                {
                    ConsolePrintHelpers.PrintCyanText(option.LibraryFile.FullPath);

                    isSelected = true;
                }
                else
                {
                    ConsolePrintHelpers.PrintWhiteText(option.LibraryFile.FullPath);
                }

                string visualAlignmentBar = " ";

                for (int i = Console.CursorLeft; i < longestPathLength; i++)
                {
                    visualAlignmentBar += "─";
                }

                ConsolePrintHelpers.PrintDarkGrayText(visualAlignmentBar);

                Console.CursorLeft = longestPathLength;
                ConsolePrintHelpers.PrintWhiteText(" ◄ ");
                ConsolePrintHelpers.PrintGreenText(selection.ToString());
                ConsolePrintHelpers.PrintWhiteText("   [");

                if (isSelected)
                {
                    ConsolePrintHelpers.PrintWhiteText("Cycle: ");
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText("Cycle: ");
                }

                if (option.LibraryFile.Cycle != "")
                {
                    ConsolePrintHelpers.PrintCyanText(option.LibraryFile.Cycle.ToString().PadLeft(4));
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText("----");
                }

                if (isSelected)
                {
                    ConsolePrintHelpers.PrintWhiteText(",  Airline: ");
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(",  Airline: ");
                }

                if (option.LibraryFile.IsAirlineDetected)
                {
                    ConsolePrintHelpers.PrintYellowText(option.LibraryFile.AirlineCode.ToString().PadLeft(2));
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText("--");
                }

                if (isSelected)
                {
                    ConsolePrintHelpers.PrintWhiteText(",  AudioType: ");
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(",  AudioType: ");
                }

                if (option.LibraryFile.AudioType != "")
                {
                    ConsolePrintHelpers.PrintGreenText(option.LibraryFile.AudioType.ToString().PadLeft(9));
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText("---------");
                }

                if (isSelected)
                {
                    ConsolePrintHelpers.PrintWhiteText(",  Track #: ");
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(",  Track #: ");
                }

                if (option.LibraryFile.IsTrackNumberDetected)
                {
                    ConsolePrintHelpers.PrintDarkCyanText(option.LibraryFile.TrackNumber.ToString().PadLeft(3));
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText("---");
                }

                if (isSelected)
                {
                    ConsolePrintHelpers.PrintWhiteText(",  Score: ");
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(",  Score: ");
                }

                ConsolePrintHelpers.PrintDarkYellowText(option.AccuracyScore.ToString().PadLeft(4));

                if (isSelected)
                {
                    ConsolePrintHelpers.PrintWhiteText(",  Points: ");
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(",  Points: ");
                }

                ConsolePrintHelpers.PrintDarkMagentaText(option.GetTotalPoints().ToString().PadLeft(3));
                ConsolePrintHelpers.PrintWhiteText("]\n\n");

                selection++;
            }

            if (printSkipChoices)
            {
                Console.CursorLeft = 5;
                ConsolePrintHelpers.PrintGreenText("S");
                ConsolePrintHelpers.PrintWhiteText(" ► ");

                if (type == ManualSelectionType.SkipSelected)
                {
                    ConsolePrintHelpers.PrintGreenText("Skip This Row\n\n");
                }
                else if (type == ManualSelectionType.SkipConfirm)
                {
                    ConsolePrintHelpers.PrintCyanText("Skip This Row\n\n");
                }
                else
                {
                    ConsolePrintHelpers.PrintWhiteText("Skip This Row\n\n");
                }

                Console.CursorLeft = 5;
                ConsolePrintHelpers.PrintGreenText("X");
                ConsolePrintHelpers.PrintWhiteText(" ► ");

                if (type == ManualSelectionType.SkipAllSelected)
                {
                    ConsolePrintHelpers.PrintGreenText("Skip All Remaining Rows\n\n");
                }
                else if (type == ManualSelectionType.SkipAllConfirm)
                {
                    ConsolePrintHelpers.PrintCyanText("Skip All Remaining Rows\n\n");
                }
                else
                {
                    ConsolePrintHelpers.PrintWhiteText("Skip All Remaining Rows\n\n");
                }

                ConsolePrintHelpers.PrintWhiteText("\n  Choice ►");
                ConsolePrintHelpers.PrintGreenText("");
                Console.CursorLeft += 1;  //Would oddly chop off the choice's left side of the user inputted character ('0' would look like a backwards 'C')
            }
        }
        public void PrintAllLSRInfo()
        {
            Console.CursorVisible = false;

            Console.WriteLine();
            ConsolePrintHelpers.PrintFullWidthLine();
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  LoadSheet Row #              :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText((_LoadSheetRowNumber + 1).ToString());
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Artist                       :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_Artist);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string artistToken in _Tokens.ArtistTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringArtistTokens.Any(token => token == artistToken))
                {
                    ConsolePrintHelpers.PrintGreenText(artistToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(artistToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Album                        :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_Album);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string albumToken in _Tokens.AlbumTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringAlbumTokens.Any(token => token == albumToken))
                {
                    ConsolePrintHelpers.PrintGreenText(albumToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(albumToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Track #                      :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_TrackNumber);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string trackNumberToken in _Tokens.TrackNumberTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringTrackNumberTokens.Any(token => token == trackNumberToken))
                {
                    ConsolePrintHelpers.PrintGreenText(trackNumberToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(trackNumberToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Track                        :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_Track);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string trackToken in _Tokens.TrackTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringTrackTokens.Any(token => token == trackToken))
                {
                    ConsolePrintHelpers.PrintGreenText(trackToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(trackToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Loadsheet Cycle              :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_Cycle);
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Search Cycle                 :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            if (_SearchCycle != _Cycle)
            {
                ConsolePrintHelpers.PrintYellowText(_SearchCycle);
            }
            else
            {
                ConsolePrintHelpers.PrintCyanText(_SearchCycle);
            }
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string cycleToken in _Tokens.CycleTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringBonusTokens.Any(token => token == cycleToken))
                {
                    ConsolePrintHelpers.PrintGreenText(cycleToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(cycleToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Airline                      :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_Airline);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string airlineToken in _Tokens.AirlineTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringBonusTokens.Any(token => token == airlineToken))
                {
                    ConsolePrintHelpers.PrintGreenText(airlineToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(airlineToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Audio Type                   :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_AudioType);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string audioTypeToken in _Tokens.AudioTypeTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringBonusTokens.Any(token => token == audioTypeToken))
                {
                    ConsolePrintHelpers.PrintGreenText(audioTypeToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(audioTypeToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Ship To                      :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_ShipTo);
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Loadsheet Row Hash           :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintWhiteText("[");
            ConsolePrintHelpers.PrintCyanText(_LoadSheetRowHash);
            ConsolePrintHelpers.PrintWhiteText("]");
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Destination Path             :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_DestinationPath);
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Original Search Strategy     :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_OriginalSearchStrategy.ToString());
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Applied  Search Strategy     :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            if (_OriginalSearchStrategy == _Tokens.SearchStrategy)
            {
                ConsolePrintHelpers.PrintCyanText(_Tokens.SearchStrategy.ToString());
            }
            else
            {
                ConsolePrintHelpers.PrintYellowText(_Tokens.SearchStrategy.ToString());
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Quick Search                 :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            if (_IsQuickSearchActive)
            {
                ConsolePrintHelpers.PrintYellowText("Active");
                Console.WriteLine();
                ConsolePrintHelpers.PrintWhiteText("  Quick Search Note (Past LSR) :  ");
                Console.CursorLeft = Globals.CursorsLeft[0];
                ConsolePrintHelpers.PrintYellowText(_QuickSearchNotePastLSR);
                Console.WriteLine();
                ConsolePrintHelpers.PrintWhiteText("  Quick Search Note (Prev LSR) :  ");
                Console.CursorLeft = Globals.CursorsLeft[0];
                ConsolePrintHelpers.PrintYellowText(_QuickSearchNotePreviousLSR);
                Console.WriteLine("\n");
            }
            else
            {
                ConsolePrintHelpers.PrintCyanText("Disabled");
                Console.WriteLine();
                ConsolePrintHelpers.PrintWhiteText("  Quick Search Note (Past LSR) :  ");
                Console.CursorLeft = Globals.CursorsLeft[0];
                ConsolePrintHelpers.PrintCyanText(_QuickSearchNotePastLSR);
                Console.WriteLine();
                ConsolePrintHelpers.PrintWhiteText("  Quick Search Note (Prev LSR) :  ");
                Console.CursorLeft = Globals.CursorsLeft[0];
                ConsolePrintHelpers.PrintCyanText(_QuickSearchNotePreviousLSR);
                Console.WriteLine("\n");
            }

            _SearchCollection.PrintBestOptionInfo();

            if (_IsApproved)
            {
                _SuggestedAudioFile.PrintSuggestedAudioFileInfo(true);
            }
            else
            {
                _SuggestedAudioFile.PrintSuggestedAudioFileInfo(false);
            }

            _SearchCollection.PrintSearchPasses();
        }
        public void PrintBasicLSRInfo()
        {
            Console.CursorVisible = false;

            Console.WriteLine("\n\n");

            ConsolePrintHelpers.PrintWhiteText("  LoadSheet Row #              :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText((_LoadSheetRowNumber + 1).ToString());
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Search Cycle                 :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            if (_SearchCycle == _Cycle)
            {
                ConsolePrintHelpers.PrintCyanText(_SearchCycle);
            }
            else
            {
                ConsolePrintHelpers.PrintYellowText(_SearchCycle + "  (Alternative Cycle)");
            }
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string cycleToken in _Tokens.CycleTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringBonusTokens.Any(token => token == cycleToken))
                {
                    ConsolePrintHelpers.PrintGreenText(cycleToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(cycleToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Airline                      :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_Airline + "    (" + _AirlineFullName + ")");
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string airlineToken in _Tokens.AirlineTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringBonusTokens.Any(token => token == airlineToken))
                {
                    ConsolePrintHelpers.PrintGreenText(airlineToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(airlineToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Audio Type                   :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_AudioType);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string audioTypeToken in _Tokens.AudioTypeTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringBonusTokens.Any(token => token == audioTypeToken))
                {
                    ConsolePrintHelpers.PrintGreenText(audioTypeToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(audioTypeToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Ship To                      :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_ShipTo);
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Artist                       :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_Artist);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string artistToken in _Tokens.ArtistTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringArtistTokens.Any(token => token == artistToken))
                {
                    ConsolePrintHelpers.PrintGreenText(artistToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(artistToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Album                        :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_Album);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string albumToken in _Tokens.AlbumTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringAlbumTokens.Any(token => token == albumToken))
                {
                    ConsolePrintHelpers.PrintGreenText(albumToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(albumToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Track #                      :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_TrackNumber);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string trackNumberToken in _Tokens.TrackNumberTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringTrackNumberTokens.Any(token => token == trackNumberToken))
                {
                    ConsolePrintHelpers.PrintGreenText(trackNumberToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(trackNumberToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Track                        :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_Track);
            Console.CursorLeft = Globals.CursorsLeft[1];
            ConsolePrintHelpers.PrintWhiteText("Tokens:  ");

            foreach (string trackToken in _Tokens.TrackTokens.GetTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                if (_SearchCollection.BestOption.ScoringTrackTokens.Any(token => token == trackToken))
                {
                    ConsolePrintHelpers.PrintGreenText(trackToken);
                }
                else
                {
                    ConsolePrintHelpers.PrintDarkGrayText(trackToken);
                }
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }

            Console.WriteLine("\n\n\n");
        }
        public void PrintAudioFileOptionInfo()
        {
            ConsolePrintHelpers.PrintWhiteText("  Scoring Bonus Tokens         :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];

            foreach (string bonusToken in _ScoringBonusTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintGreenText(bonusToken);
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }

            if (_ScoringBonusTokens.Count == 0)
            {
                ConsolePrintHelpers.PrintCyanText("None");
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Scoring Dynamic Bonus Tokens :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];

            foreach (string bonusToken in _DynamicScoringBonusTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintGreenText(bonusToken);
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }

            if (_DynamicScoringBonusTokens.Count == 0)
            {
                ConsolePrintHelpers.PrintCyanText("None");
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Scoring Token Count          :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_ScoringTokenCount.ToString());
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Total Scored Points          :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(GetTotalPoints().ToString());
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Total Potential Points       :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(GetTotalPotentialPoints().ToString());
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Total Scored Points %        :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(((int)GetTotalPointsRatio()).ToString() + " %");
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Artist/Album Scored Points   :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_ArtistAlbumPoints.ToString());
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Artist/Album Potential Pts.  :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_LSRTokens.ArtistAlbumPotentialPoints.ToString());
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Artist/Album Scored Points % :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(((int)GetArtistAlbumPointsRatio()).ToString() + " %");
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Track Scored Points          :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_TrackPoints.ToString());
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Track Potential Points       :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_LSRTokens.TrackPotentialPoints.ToString());
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Track Scored Points %        :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(((int)GetTrackPointsRatio()).ToString() + " %");
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  SubDir File Path             :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_LibraryFile.NoDiacriticsSubDirectoriesFilePath);
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Applicable SubDir File Path  :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_LibraryFile.NoDiacriticsApplicableSubDirectoriesFilePath);
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Library File Airline         :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];

            if (_LibraryFile.IsAirlineDetected)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintCyanText(_LibraryFile.Airline);
                ConsolePrintHelpers.PrintWhiteText("]");
            }
            else
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintDarkGrayText("None");
                ConsolePrintHelpers.PrintWhiteText("]");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Library File Track #         :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];

            if (_LibraryFile.IsTrackNumberDetected)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintCyanText(_LibraryFile.TrackNumber);
                ConsolePrintHelpers.PrintWhiteText("]");
            }
            else
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintDarkGrayText("None");
                ConsolePrintHelpers.PrintWhiteText("]");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Library File Cycle Codes     :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];

            if (_LibraryFile.AreCycleCodesDetected)
            {
                foreach (string cycleCode in _LibraryFile.GetCycleCodes())
                {
                    ConsolePrintHelpers.PrintWhiteText("[");
                    ConsolePrintHelpers.PrintCyanText(cycleCode);
                    ConsolePrintHelpers.PrintWhiteText("]  ");
                }
            }
            else
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintDarkGrayText("None");
                ConsolePrintHelpers.PrintWhiteText("]");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Library File Appl. Tokens    :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];

            List <string> libraryFileApplicableTokens = _LibraryFile.GetApplicableTokens();

            foreach (string applicableToken in libraryFileApplicableTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintCyanText(applicableToken);
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }

            if (libraryFileApplicableTokens.Count == 0)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintDarkGrayText("None");
                ConsolePrintHelpers.PrintWhiteText("]");
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Remaining Applicable Tokens  :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];

            foreach (string applicableToken in _RemainingApplicableTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintCyanText(applicableToken);
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }

            if (_RemainingApplicableTokens.Count == 0)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintDarkGrayText("None");
                ConsolePrintHelpers.PrintWhiteText("]");
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Normalized Appl. SubDir Path :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintWhiteText("[");
            ConsolePrintHelpers.PrintCyanText(_LibraryFile.NormalizedApplicableSubDirectoriesFilePath);
            ConsolePrintHelpers.PrintWhiteText("]");
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Remaining Chars              :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintWhiteText("[");
            ConsolePrintHelpers.PrintCyanText(_RemainingChars);
            ConsolePrintHelpers.PrintWhiteText("]");
            Console.WriteLine();

            ConsolePrintHelpers.PrintWhiteText("  Appl. SubDir Removed Char %  :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(((int)GetRemovedCharsRatio()).ToString() + " %");
            Console.WriteLine("\n");

            if (Globals.IsDevelopmentEnvironment)
            {
                ConsolePrintHelpers.PrintWhiteText("  All Remaining Chars Tokens   :  ");
                Console.CursorLeft = Globals.CursorsLeft[0];

                foreach (string token in _AllRemainingCharsTokens)
                {
                    ConsolePrintHelpers.PrintWhiteText("[");
                    ConsolePrintHelpers.PrintCyanText(token);
                    ConsolePrintHelpers.PrintWhiteText("]  ");
                }

                if (_AllRemainingCharsTokens.Count == 0)
                {
                    ConsolePrintHelpers.PrintWhiteText("[");
                    ConsolePrintHelpers.PrintDarkGrayText("None");
                    ConsolePrintHelpers.PrintWhiteText("]");
                }
                Console.WriteLine("\n");
            }

            ConsolePrintHelpers.PrintWhiteText("  Used Remaining Chars Tokens  :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];

            foreach (string token in _UsedRemainingCharsTokens)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintCyanText(token);
                ConsolePrintHelpers.PrintWhiteText("]  ");
            }

            if (_UsedRemainingCharsTokens.Count == 0)
            {
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintDarkGrayText("None");
                ConsolePrintHelpers.PrintWhiteText("]");
            }

            Console.WriteLine("\n");
        }