예제 #1
0
        public void PrintPendingCopyOrEncodeStats()
        {
            int encodeCount = 0;
            int copyCount   = 0;

            foreach (AudioFileEncoding encoding in _EncodingQueue)
            {
                if (encoding.TryToCopyAlreadyEncodedFile == false)
                {
                    encodeCount++;
                }
                else
                {
                    copyCount++;
                }
            }

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

            ConsolePrintHelpers.PrintGreenText("  Pending File Encodes  ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText(encodeCount.ToString().PadLeft(Globals.EncodingStatsCounterPadding, '0'));
            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("  Pending File Copies   ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText(copyCount.ToString().PadLeft(Globals.EncodingStatsCounterPadding, '0'));
            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("  Skipped Encodings     ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText(_SkippedQueue.Count.ToString().PadLeft(Globals.EncodingStatsCounterPadding, '0'));
        }
예제 #2
0
 private void PrintSearchStatsHeaders()
 {
     ConsolePrintHelpers.PrintGreenText("  Active Searches ");
     ConsolePrintHelpers.PrintWhiteText(":  ");
     ConsolePrintHelpers.PrintCyanText("000000");
     Console.WriteLine();
     ConsolePrintHelpers.PrintGreenText("  Remaining Rows  ");
     ConsolePrintHelpers.PrintWhiteText(":  ");
     ConsolePrintHelpers.PrintCyanText("000000");
 }
        public void PrintHistoryStats()
        {
            Console.WriteLine("\n");
            ConsolePrintHelpers.PrintGreenText("  History Approved Rows ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText(_ApprovedLoadSheetRows.Count.ToString().PadLeft(Globals.EncodingStatsCounterPadding, '0'));

            Console.WriteLine();
            ConsolePrintHelpers.PrintGreenText("  History Encoded Files ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText(_AlreadyEncodedFiles.Count.ToString().PadLeft(Globals.EncodingStatsCounterPadding, '0'));
        }
예제 #4
0
        private bool PromptToViewSkippedEncodings()
        {
            ConsolePrintHelpers.PrintWhiteText("\n\n\n  Please Select...\n\n");

            ConsolePrintHelpers.PrintGreenText("    1");
            ConsolePrintHelpers.PrintWhiteText(" ► Exit Application\n\n");

            ConsolePrintHelpers.PrintGreenText("    2");
            ConsolePrintHelpers.PrintWhiteText(" ► View Skipped Encodings\n\n");

            Console.WriteLine("\n\n");
            Console.CursorTop -= 3;

            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(true);
                    }

                    if (keyPressed.KeyChar == '2')
                    {
                        return(false);
                    }
                }
            }
        }
예제 #5
0
        private bool PromptToManuallyAssignSkippedEncodings()
        {
            ConsolePrintHelpers.PrintWhiteText("\n\n\n  Please Select...\n\n");

            ConsolePrintHelpers.PrintGreenText("    1");
            ConsolePrintHelpers.PrintWhiteText(" ► Manually Assign Source Files For Skipped Encodings\n\n");

            ConsolePrintHelpers.PrintGreenText("    2");
            ConsolePrintHelpers.PrintWhiteText(" ► Continue With Skipped Encodings\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(true);
                    }

                    if (keyPressed.KeyChar == '2')
                    {
                        return(false);
                    }
                }
            }
        }
예제 #6
0
        private void ValidateLoadSheet()
        {
            ConsolePrintHelpers.PrintWhiteText("  Path:  ");

            if (File.Exists(_Config.AODLoadSheetFilePath))
            {
                ConsolePrintHelpers.PrintGreenText(_Config.AODLoadSheetFilePath + "\n\n");
            }
            else
            {
                ConsolePrintHelpers.PrintRedText(_Config.AODLoadSheetFilePath);
                ConsolePrintHelpers.PrintWhiteText("   ERROR: Missing Loadsheet at this path");
                ConsolePrintHelpers.PressAnyKeyToExit();
            }
        }
예제 #7
0
        private void PrintEncodingStatsHeaders()
        {
            ConsolePrintHelpers.PrintGreenText("  Active Encodings             ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText("000000");
            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("  Pending LS Row Updates       ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText("000000");
            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("  New Encoded Files            ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText("000000");
            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("  New Copied Files             ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText("000000");
            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("  History Encoded Files        ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText("000000");
            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("  Skipped Encodings            ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText("000000");
            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("  Remaining Encodings          ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            ConsolePrintHelpers.PrintCyanText("000000");
            Console.WriteLine("\n\n");

            Console.CursorTop -= 3;
        }
예제 #8
0
        public void PrintUniqueTrackNumberPatterns_DEBUG()
        {
            ConsolePrintHelpers.PrintHeader();

            ConsolePrintHelpers.PrintWhiteText("  Printing Unique Tracknumber Patterns...");

            ConsolePrintHelpers.Wait();

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

            List <string> uniqueTrackNumberPatterns = new List <string>();

            foreach (AudioLibraryFile file in _AudioLibraryFiles)
            {
                string pattern = file.TrackNumberPattern;

                if (!uniqueTrackNumberPatterns.Contains(pattern))
                {
                    uniqueTrackNumberPatterns.Add(pattern);
                }
            }

            foreach (string pattern in uniqueTrackNumberPatterns)
            {
                Console.WriteLine();
                ConsolePrintHelpers.PrintWhiteText("  Pattern :  ");
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintGreenText(pattern);
                ConsolePrintHelpers.PrintWhiteText("]");
            }

            Console.WriteLine("\n");
            ConsolePrintHelpers.PrintWhiteText("  Pattern Count :  ");
            ConsolePrintHelpers.PrintCyanText(uniqueTrackNumberPatterns.Count.ToString());

            ConsolePrintHelpers.PressAnyKeyToContinue();
        }
        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);
                    }
                }
            }
        }
예제 #10
0
        public void PrintAudioFileEncoding()
        {
            if (Globals.IsDevelopmentEnvironment)
            {
                _LSR.PrintAllLSRInfo();
            }
            else
            {
                _LSR.PrintProductionLSRInfo();
            }

            ConsolePrintHelpers.PrintGreenText("  Encoding ID                  ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_EncodingID.ToString());
            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("  Is Approved                  ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            if (_LSR.IsApproved)
            {
                ConsolePrintHelpers.PrintYellowText("True");
            }
            else
            {
                ConsolePrintHelpers.PrintCyanText("False");
            }
            Console.WriteLine();

            ConsolePrintHelpers.PrintGreenText("  Action Taken                 ");
            ConsolePrintHelpers.PrintWhiteText(":  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText(_CopyOrEncodeActionTaken);

            if (_FileToCopy != null)
            {
                Console.WriteLine("\n");

                if (_FileToCopy.LoadSheetRowNumber >= 0)  //Only print row number if it came from the load sheet with positive row number (Skip if from Encoding History File; LSRow# = -1)
                {
                    ConsolePrintHelpers.PrintGreenText("  Already Encoded LS Row #     ");
                    ConsolePrintHelpers.PrintWhiteText(":  ");
                    Console.CursorLeft = Globals.CursorsLeft[0];
                    ConsolePrintHelpers.PrintCyanText((_FileToCopy.LoadSheetRowNumber + 1).ToString());
                    Console.WriteLine();
                }

                ConsolePrintHelpers.PrintGreenText("  Source File Path             ");
                ConsolePrintHelpers.PrintWhiteText(":  ");
                Console.CursorLeft = Globals.CursorsLeft[0];
                ConsolePrintHelpers.PrintCyanText(_FileToCopy.SourceFilePath.ToString());
                Console.WriteLine();

                ConsolePrintHelpers.PrintGreenText("  Already Encoded File Path    ");
                ConsolePrintHelpers.PrintWhiteText(":  ");
                Console.CursorLeft = Globals.CursorsLeft[0];
                ConsolePrintHelpers.PrintCyanText(_FileToCopy.EncodedFilePath.ToString());
            }

            Console.WriteLine("\n");
        }
        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");
        }
예제 #15
0
        public void PrintAODLoadSheetPretty_DEBUG()
        {
            List <int> cursorsLeft = AutoFitColumns();

            int currentColumnWidth;

            ConsolePrintHelpers.PrintHeader();

            ConsolePrintHelpers.PrintWhiteText("  Printing AOD Loadsheet (Pretty)...");

            ConsolePrintHelpers.Wait();

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

            ConsolePrintHelpers.PrintWhiteText("  Header Row:\t");

            int cursorIterator = 0;

            foreach (string header in _AODLoadSheetHeaderRow)
            {
                Console.CursorLeft = cursorsLeft[cursorIterator];
                ConsolePrintHelpers.PrintWhiteText("[");
                ConsolePrintHelpers.PrintGreenText(header);
                ConsolePrintHelpers.PrintWhiteText("]");
                cursorIterator++;
            }

            Console.WriteLine();

            ConsolePrintHelpers.PrintFullWidthLine();

            foreach (AODLoadSheetRow lsr in _AODLoadSheetRows)
            {
                string columnValue = "";

                ConsolePrintHelpers.PrintWhiteText("  Row " + (lsr.LoadSheetRowNumber + 1) + ":\t");

                for (int i = 0; i < cursorsLeft.Count; i++)
                {
                    //Any updates here must also be updated in AutoFitColumns() method
                    if (i == 0)
                    {
                        columnValue = lsr.Airline;
                    }
                    if (i == 1)
                    {
                        columnValue = lsr.AltCycle;
                    }
                    if (i == 2)
                    {
                        columnValue = lsr.Artist;
                    }
                    if (i == 3)
                    {
                        columnValue = lsr.Album;
                    }
                    if (i == 4)
                    {
                        columnValue = lsr.TrackNumber;
                    }
                    if (i == 5)
                    {
                        columnValue = lsr.Track;
                    }
                    if (i == 6)
                    {
                        columnValue = lsr.OutputFilename;
                    }
                    if (i == 7)
                    {
                        columnValue = lsr.AudioType;
                    }
                    if (i == 8)
                    {
                        columnValue = lsr.ShipTo;
                    }
                    if (i == 9)
                    {
                        columnValue = lsr.Status;
                    }
                    if (i == 10)
                    {
                        break;
                    }

                    currentColumnWidth = cursorsLeft[i + 1] - cursorsLeft[i];
                    Console.CursorLeft = cursorsLeft[i];

                    ConsolePrintHelpers.PrintWhiteText("[");
                    if ((columnValue.Length + 2) >= currentColumnWidth)
                    {
                        ConsolePrintHelpers.PrintCyanText(columnValue.Remove(currentColumnWidth - 6) + "...");
                    }
                    else
                    {
                        ConsolePrintHelpers.PrintCyanText(columnValue);
                    }
                    ConsolePrintHelpers.PrintWhiteText("]");
                }

                Console.WriteLine();
            }

            ConsolePrintHelpers.PressAnyKeyToContinue();
        }
예제 #16
0
        private int SelectManualOption(AODLoadSheetRow skippedLSR)
        {
            List <char> acceptableSelections = new List <char>();

            int manualOptionsCount = skippedLSR.SearchCollection.GetManualOptionsCount();

            for (int i = 0; i < manualOptionsCount; i++)
            {
                acceptableSelections.Add(i.ToString().First());
            }

            acceptableSelections.Add('s');
            acceptableSelections.Add('x');

            skippedLSR.SearchCollection.PrintManualOptions(true);

            int cursorLeftChoice = Console.CursorLeft;

            Console.WriteLine("\n\n\n\n\n\n");
            ConsolePrintHelpers.PrintFullWidthLine();
            ConsolePrintHelpers.PrintGreenText("");  //restore text color to green
            Console.CursorTop -= 8;
            Console.CursorLeft = cursorLeftChoice;

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

                Console.CursorVisible = false;

                char ChoiceKeyPressed = char.ToLower(Console.ReadKey().KeyChar);

                if (!acceptableSelections.Any(selection => selection == ChoiceKeyPressed))
                {
                    Console.CursorLeft = cursorLeftChoice + 1;  //in case user presses "enter"
                    ConsolePrintHelpers.PrintYellowText("  Incorrect Key Pressed!");
                    Thread.Sleep(1000);
                    Console.CursorLeft = cursorLeftChoice;
                    ConsolePrintHelpers.PrintGreenText("                         ");
                    Console.CursorLeft = cursorLeftChoice;
                }
                else
                {
                    AudioFileOption optionToConfirm = null;

                    int cursorTopBeforeRefresh  = Console.CursorTop;
                    int cursorLeftBeforeRefresh = Console.CursorLeft;

                    if (ChoiceKeyPressed != 's' && ChoiceKeyPressed != 'x')
                    {
                        int selection = Convert.ToInt32(ChoiceKeyPressed.ToString());

                        optionToConfirm = skippedLSR.SearchCollection.GetSelectedOption(selection);

                        skippedLSR.SearchCollection.PrintManualOptionsConfirmation(optionToConfirm, ManualSelectionType.Confirm, true);
                    }
                    else if (ChoiceKeyPressed == 's')
                    {
                        skippedLSR.SearchCollection.PrintManualOptionsConfirmation(optionToConfirm, ManualSelectionType.SkipConfirm, true);
                    }
                    else if (ChoiceKeyPressed == 'x')
                    {
                        skippedLSR.SearchCollection.PrintManualOptionsConfirmation(optionToConfirm, ManualSelectionType.SkipAllConfirm, true);
                    }

                    Console.CursorTop  = cursorTopBeforeRefresh;
                    Console.CursorLeft = cursorLeftBeforeRefresh;

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

                    int cursorTopConfirm  = Console.CursorTop;
                    int cursorLeftConfirm = Console.CursorLeft;

                    Thread.Sleep(250);

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

                    Console.CursorVisible = false;

                    char ConfirmKeyPressed = char.ToLower(Console.ReadKey().KeyChar);

                    if (ChoiceKeyPressed == ConfirmKeyPressed)
                    {
                        if (ChoiceKeyPressed == 's')
                        {
                            skippedLSR.SearchCollection.PrintManualOptionsConfirmation(optionToConfirm, ManualSelectionType.SkipSelected, true);

                            return(-1);
                        }

                        if (ChoiceKeyPressed == 'x')
                        {
                            skippedLSR.SearchCollection.PrintManualOptionsConfirmation(optionToConfirm, ManualSelectionType.SkipAllSelected, true);

                            return(-2);
                        }

                        skippedLSR.SearchCollection.PrintManualOptionsConfirmation(optionToConfirm, ManualSelectionType.Selected, true);

                        Console.CursorTop = cursorTopConfirm;
                        Console.WriteLine();

                        return(Convert.ToInt32(ChoiceKeyPressed.ToString()));
                    }
                    else
                    {
                        Console.CursorLeft = cursorLeftConfirm + 1;  //in case user presses "enter"
                        ConsolePrintHelpers.PrintYellowText("  Not Confirmed!");
                        Thread.Sleep(1000);
                        Console.CursorLeft = cursorLeftChoice;
                        ConsolePrintHelpers.PrintGreenText("                               ");
                        Console.CursorLeft = cursorLeftChoice;
                    }
                }
            }
        }
예제 #17
0
        public void PrintTokensPerRowAllRows_DEBUG()
        {
            ConsolePrintHelpers.PrintHeader();

            ConsolePrintHelpers.PrintWhiteText("  Printing AOD Loadsheet Tokens Per Row...");

            ConsolePrintHelpers.Wait();

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

            foreach (AODLoadSheetRow lsr in _AODLoadSheetRows)
            {
                ConsolePrintHelpers.PrintFullWidthLine();

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

                foreach (string cycleToken in lsr.Tokens.CycleTokens.GetTokens)
                {
                    ConsolePrintHelpers.PrintWhiteText("[");
                    ConsolePrintHelpers.PrintGreenText(cycleToken);
                    ConsolePrintHelpers.PrintWhiteText("]  ");
                }
                Console.WriteLine();

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

                foreach (string airlineToken in lsr.Tokens.AirlineTokens.GetTokens)
                {
                    ConsolePrintHelpers.PrintWhiteText("[");
                    ConsolePrintHelpers.PrintGreenText(airlineToken);
                    ConsolePrintHelpers.PrintWhiteText("]  ");
                }
                Console.WriteLine();

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

                foreach (string audioTypeToken in lsr.Tokens.AudioTypeTokens.GetTokens)
                {
                    ConsolePrintHelpers.PrintWhiteText("[");
                    ConsolePrintHelpers.PrintGreenText(audioTypeToken);
                    ConsolePrintHelpers.PrintWhiteText("]  ");
                }
                Console.WriteLine();

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

                foreach (string artistToken in lsr.Tokens.ArtistTokens.GetTokens)
                {
                    ConsolePrintHelpers.PrintWhiteText("[");
                    ConsolePrintHelpers.PrintGreenText(artistToken);
                    ConsolePrintHelpers.PrintWhiteText("]  ");
                }
                Console.WriteLine();

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

                foreach (string albumToken in lsr.Tokens.AlbumTokens.GetTokens)
                {
                    ConsolePrintHelpers.PrintWhiteText("[");
                    ConsolePrintHelpers.PrintGreenText(albumToken);
                    ConsolePrintHelpers.PrintWhiteText("]  ");
                }
                Console.WriteLine();

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

                foreach (string trackNumberToken in lsr.Tokens.TrackNumberTokens.GetTokens)
                {
                    ConsolePrintHelpers.PrintWhiteText("[");
                    ConsolePrintHelpers.PrintGreenText(trackNumberToken);
                    ConsolePrintHelpers.PrintWhiteText("]  ");
                }
                Console.WriteLine();

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

                foreach (string trackToken in lsr.Tokens.TrackTokens.GetTokens)
                {
                    ConsolePrintHelpers.PrintWhiteText("[");
                    ConsolePrintHelpers.PrintGreenText(trackToken);
                    ConsolePrintHelpers.PrintWhiteText("]  ");
                }
                Console.WriteLine("\n");
            }

            ConsolePrintHelpers.PressAnyKeyToContinue();
        }
예제 #18
0
        public void PrintEncodingQueue_DEBUG(AudioEncoderController controller)
        {
            ConsolePrintHelpers.PrintHeader();

            ConsolePrintHelpers.PrintWhiteText("  Printing Encoding Queue...");

            PrintPendingCopyOrEncodeStats();

            ConsolePrintHelpers.Wait();

            Console.WriteLine("\n");

            foreach (AudioFileEncoding encoding in _EncodingQueue)
            {
                ConsolePrintHelpers.PrintFullWidthLine();

                ConsolePrintHelpers.PrintWhiteText("  Encoding ID           :  ");
                ConsolePrintHelpers.PrintCyanText(encoding.EncodingID.ToString());
                Console.WriteLine();

                ConsolePrintHelpers.PrintWhiteText("  Load Sheet Row #      :  ");
                ConsolePrintHelpers.PrintCyanText((encoding.LSR.LoadSheetRowNumber + 1).ToString());
                Console.WriteLine();

                ConsolePrintHelpers.PrintWhiteText("  Source File Size      :  ");
                ConsolePrintHelpers.PrintCyanText((encoding.LSR.SuggestedAudioFile.FileSize / 1024 / 1024).ToString() + " MB");
                Console.WriteLine("\n");

                ConsolePrintHelpers.PrintWhiteText("  Source File           :  ");
                ConsolePrintHelpers.PrintCyanText(encoding.LSR.SuggestedAudioFile.FullPath);
                Console.WriteLine();

                ConsolePrintHelpers.PrintWhiteText("  Destination File      :  ");
                ConsolePrintHelpers.PrintCyanText(encoding.LSR.DestinationPath);
                Console.WriteLine();

                ConsolePrintHelpers.PrintWhiteText("  Destination File Ext  :  ");
                ConsolePrintHelpers.PrintCyanText(encoding.LSR.OutputFilenameExtension);
                Console.WriteLine("\n");

                ConsolePrintHelpers.PrintWhiteText("  Copy Or Encode        :  ");

                if (encoding.TryToCopyAlreadyEncodedFile)
                {
                    AlreadyEncodedFile file = controller.History.GetAlreadyEncodedFileAndReCheckValidation(encoding);

                    if (file != null)  //Already Encoded File found
                    {
                        ConsolePrintHelpers.PrintYellowText("Copy Already Encoded File");
                    }
                    else
                    {
                        AudioFileEncoding activeEncoding = controller.GetActiveEncodingForPendingCopy(encoding);

                        if (activeEncoding != null)  //Pending active encoding should be creating the Already Encoded file we seek
                        {
                            file = activeEncoding.LSR.PotentialFile;

                            ConsolePrintHelpers.PrintYellowText("Copy from Active Encoding (ID: " + activeEncoding.EncodingID.ToString() + ")");
                        }
                        else
                        {
                            ConsolePrintHelpers.PrintRedText("Encode (No Eligible File To Copy Found)");
                        }
                    }

                    if (file != null)
                    {
                        Console.WriteLine("\n");
                        ConsolePrintHelpers.PrintWhiteText("  Load Sheet Row #      :  ");
                        ConsolePrintHelpers.PrintGreenText((file.LoadSheetRowNumber + 1).ToString());
                        Console.WriteLine();
                        ConsolePrintHelpers.PrintWhiteText("  Source File           :  ");

                        if (encoding.LSR.SuggestedAudioFile.FullPath == file.SourceFilePath)
                        {
                            ConsolePrintHelpers.PrintGreenText(file.SourceFilePath);
                        }
                        else
                        {
                            ConsolePrintHelpers.PrintRedText(file.SourceFilePath);
                        }

                        Console.WriteLine();
                        ConsolePrintHelpers.PrintWhiteText("  Encoded File          :  ");

                        if (encoding.LSR.OutputFilenameExtension == file.EncodedFileExtension)
                        {
                            ConsolePrintHelpers.PrintGreenText(file.EncodedFilePath);
                            Console.WriteLine();
                            ConsolePrintHelpers.PrintWhiteText("  Encoded File Ext      :  ");
                            ConsolePrintHelpers.PrintGreenText(file.EncodedFileExtension);
                        }
                        else
                        {
                            ConsolePrintHelpers.PrintRedText(file.EncodedFilePath);
                            Console.WriteLine();
                            ConsolePrintHelpers.PrintWhiteText("  Encoded File Ext      :  ");
                            ConsolePrintHelpers.PrintRedText(file.EncodedFileExtension);
                        }
                    }
                }
                else
                {
                    ConsolePrintHelpers.PrintCyanText("Encode");
                }

                Console.WriteLine("\n");
            }

            ConsolePrintHelpers.PressAnyKeyToContinue();
        }
        public void PrintSuggestedAudioFileInfo(bool isManuallySelected)
        {
            ConsolePrintHelpers.PrintWhiteText("  Suggested Audio File Path    :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            if (_AccuracyType == AccuracyType.Accurate || isManuallySelected)
            {
                ConsolePrintHelpers.PrintGreenText(_FullPath);
            }
            else if (_AccuracyType == AccuracyType.Questionable)
            {
                ConsolePrintHelpers.PrintYellowText(_FullPath);
            }
            else
            {
                ConsolePrintHelpers.PrintRedText(_FullPath);
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Accuracy Score               :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            if (_AccuracyType == AccuracyType.Accurate || isManuallySelected)
            {
                ConsolePrintHelpers.PrintGreenText(_AccuracyScore.ToString());
            }
            else if (_AccuracyType == AccuracyType.Questionable)
            {
                ConsolePrintHelpers.PrintYellowText(_AccuracyScore.ToString());
            }
            else
            {
                ConsolePrintHelpers.PrintRedText(_AccuracyScore.ToString());
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Total Points                 :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            if (_AccuracyType == AccuracyType.Accurate || isManuallySelected)
            {
                ConsolePrintHelpers.PrintGreenText(_TotalPoints.ToString());
            }
            else if (_AccuracyType == AccuracyType.Questionable)
            {
                ConsolePrintHelpers.PrintYellowText(_TotalPoints.ToString());
            }
            else
            {
                ConsolePrintHelpers.PrintRedText(_TotalPoints.ToString());
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Accuracy Note                :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            if (_AccuracyType == AccuracyType.Accurate || isManuallySelected)
            {
                ConsolePrintHelpers.PrintGreenText(_AccuracyNote);
            }
            else if (_AccuracyType == AccuracyType.Questionable)
            {
                ConsolePrintHelpers.PrintYellowText(_AccuracyNote);
            }
            else
            {
                ConsolePrintHelpers.PrintRedText(_AccuracyNote);
            }
            Console.WriteLine("\n");

            ConsolePrintHelpers.PrintWhiteText("  Suggested Audio File Size    :  ");
            Console.CursorLeft = Globals.CursorsLeft[0];
            ConsolePrintHelpers.PrintCyanText((_FileSize / 1024 / 1024).ToString() + " MB");
            Console.WriteLine("\n");
        }
예제 #20
0
        public void ScanAudioLibrary()
        {
            Stopwatch stopwatch = ConsolePrintHelpers.PrintHeaderAndStartStopWatch();

            ConsolePrintHelpers.PrintWhiteText("  Scanning Audio Library Paths...\n\n");

            int rootDirectoryPrintCount = 1;

            foreach (AudioLibraryRootDirectory rootDirectory in _AudioLibraryRootDirectories)
            {
                ConsolePrintHelpers.PrintWhiteText("\tPath (" + rootDirectoryPrintCount + " of " + _AudioLibraryRootDirectories.Count + "):  ");

                rootDirectoryPrintCount++;

                if (Directory.Exists(rootDirectory.AudioLibraryRootDirectoryPath))
                {
                    ConsolePrintHelpers.PrintGreenText(rootDirectory.AudioLibraryRootDirectoryPath + "   ");
                    ConsolePrintHelpers.PrintWhiteText("File Count :  ");

                    rootDirectory.CursorTop  = Console.CursorTop;
                    rootDirectory.CursorLeft = Console.CursorLeft;

                    Console.WriteLine("\n");

                    rootDirectory.ScanRootDirectoryPath();

                    if (rootDirectory.SubDirectories.Count < (Console.WindowHeight - Globals.AudioLibraryScanPrintMargin))
                    {
                        Console.WriteLine("\n");
                    }
                    else
                    {
                        Console.WriteLine();
                    }
                }
                else
                {
                    ConsolePrintHelpers.PrintRedText(rootDirectory.AudioLibraryRootDirectoryPath);
                    ConsolePrintHelpers.PrintWhiteText("   ERROR:  Invalid Path");
                    ConsolePrintHelpers.PressAnyKeyToExit();
                }
            }

            int cursorTop = Console.CursorTop - 3;

            foreach (AudioLibraryRootDirectory rootDirectory in _AudioLibraryRootDirectories)
            {
                rootDirectory.ScanSubDirectories_Async();
            }

            string[] waitSequence = { "*", "**", "***", "   " };

            bool keepWaiting = true;

            while (keepWaiting)
            {
                foreach (string pattern in waitSequence)
                {
                    foreach (AudioLibraryRootDirectory rootDirectory in _AudioLibraryRootDirectories)
                    {
                        Console.CursorTop  = rootDirectory.CursorTop;
                        Console.CursorLeft = rootDirectory.CursorLeft;

                        if (rootDirectory.HasFinished == true)
                        {
                            ConsolePrintHelpers.PrintCyanText(rootDirectory.GetFileCount().ToString() + "   ");
                        }
                        else
                        {
                            ConsolePrintHelpers.PrintCyanText(pattern);
                        }

                        if (rootDirectory.SubDirectories.Count < (Console.WindowHeight - Globals.AudioLibraryScanPrintMargin))
                        {
                            foreach (AudioLibrarySubDirectory subDirectory in rootDirectory.SubDirectories)
                            {
                                Console.CursorTop  = subDirectory.CursorTop;
                                Console.CursorLeft = subDirectory.CursorLeft;

                                if (subDirectory.HasFinished == true)
                                {
                                    ConsolePrintHelpers.PrintCyanText(subDirectory.GetFileCount().ToString() + "   ");
                                }
                                else
                                {
                                    ConsolePrintHelpers.PrintCyanText(pattern);
                                }
                            }
                        }
                    }

                    if (_AudioLibraryRootDirectories.All(rootDirectory => rootDirectory.HasFinished == true))
                    {
                        keepWaiting = false;

                        break;
                    }

                    Thread.Sleep(Globals.ProgressTickerDelayMilliseconds);
                }
            }

            foreach (AudioLibraryRootDirectory rootDirectory in _AudioLibraryRootDirectories)
            {
                Console.CursorTop  = rootDirectory.CursorTop;
                Console.CursorLeft = rootDirectory.CursorLeft;
                ConsolePrintHelpers.PrintCyanText(rootDirectory.GetFileCount().ToString());

                _AudioLibraryFiles = _AudioLibraryFiles.Concat(rootDirectory.GetAudioLibraryFiles).ToList();
            }

            Console.CursorTop = cursorTop;
            ConsolePrintHelpers.PrintWhiteText("\n\n\n  Total File Count :  ");
            ConsolePrintHelpers.PrintCyanText(_AudioLibraryFiles.Count.ToString());

            foreach (AudioLibraryRootDirectory rootDirectory in _AudioLibraryRootDirectories)
            {
                if (rootDirectory.AreShortcutsValid == false)
                {
                    ConsolePrintHelpers.PrintRedText("\n\n\n  ERROR  Invalid Shortcuts Provided To Arbitrary Mapped Drive. Shortcuts Should Be Targeting Directories And Files In:  ");
                    ConsolePrintHelpers.PrintWhiteText(_Config.AudioLibraryRoot);
                    ConsolePrintHelpers.PressAnyKeyToExit();
                }
            }

            if (_AudioLibraryFiles.Count == 0)
            {
                ConsolePrintHelpers.PrintRedText("\n\n\n  ERROR  No Audio Library Files Found");
                ConsolePrintHelpers.PressAnyKeyToExit();
            }

            foreach (AudioLibraryRootDirectory rootDirectory in _AudioLibraryRootDirectories)
            {
                if (rootDirectory.HasDetectedError)
                {
                    ConsolePrintHelpers.PrintRedText("\n\n\n  ERROR  Detected Bad Directory/File Name:  [" + rootDirectory.ErrorItem + "]");
                    Console.WriteLine("\n\n");
                    ConsolePrintHelpers.PrintRedText("  A Fix Has Been Attempted. Please Restart This Application.");
                    ConsolePrintHelpers.PressAnyKeyToExit();
                }
            }

            _AudioLibraryFiles = _AudioLibraryFiles.OrderBy(libraryFile => libraryFile.NormalizedSubDirectoriesFilePath).ToList();  //Helps to give consistent search results

            ConsolePrintHelpers.PrintDurationAndWait(stopwatch, "Audio Library Scan");

            GC.Collect();
        }