static void MainMenu() //главное меню { int MenuChoice = 0, //выбранное доп. меню ItemChoice = 0; //выбранный пункт меню Menu.DoubleColor[] colorScheme = new Menu.DoubleColor[2]; colorScheme[0] = new Menu.DoubleColor(); colorScheme[1] = new Menu.DoubleColor(ConsoleColor.Yellow); Menu M = new Menu( new string[] { "Градуировочные таблицы", "Опции (<Tab> для перехода)" }, new string[][] { new string[] { }, new string[] { } }, null, 0, colorScheme); do { string tmp = ""; switch (DefaultLevelBase) { case LevelBase.Millimeters: tmp = "мм"; break; case LevelBase.Centimeters: tmp = "см"; break; } M.Items = new string[][] { new string[] { "1. Одна таблица", "2. Много таблиц", "3. Справка", "4. Выход" }, new string[] { "База уровней в выходных файлах: " + tmp, "Исправлять непоследовательность объемов: " + ((RepairVolumeInconcictensy)?"да":"нет"), "Записывать заголовок Valcom: " + ((WriteValcomHeader)?"да":"нет"), "Писать log-файл: " + ((UseLog)?"да":"нет") } }; M.MenuCicle(out MenuChoice, out ItemChoice); switch (MenuChoice) { case -1: //отмена меню ExitApp = true; break; case 0: switch (ItemChoice) { case 0: //1. Одна таблица OneTable(); break; case 1: //2. Много таблиц ManyTables(); break; case 2: //3. Справка Console.Clear(); Console.WriteLine(Properties.Resources.Справка); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\n\nДля продолжения нажмите любую клавишу..."); Console.SetCursorPosition(0, 0); Console.ReadKey(true); break; case 3: //4. Выход ExitApp = true; break; default: //ошибка меню Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе доп. 0 главного меню!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); Environment.Exit(-1); break; } break; case 1: switch (ItemChoice) { case 0: //База уровней в выходных файлах: Menu M2 = new Menu( new string[] { "Задайте базу уровней в выходных файлах" }, new string[][] { new string[] { "сантиметры", "миллиметры" } }, null, 0, new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) }); int MenuChoice2 = 0, ItemChoice2 = 0; M2.MenuCicle(out MenuChoice2, out ItemChoice2); switch (MenuChoice2) { case 0: switch (ItemChoice2) { case 0: //сантиметры DefaultLevelBase = LevelBase.Centimeters; break; case 1: //миллиметры DefaultLevelBase = LevelBase.Millimeters; break; } break; } break; case 1: //Исправлять непоследовательность объемов Menu M4 = new Menu( new string[] { "Исправлять непоследовательность объемов?" }, new string[][] { new string[] { "Да", "Нет" } }, null, 0, new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) }); int MenuChoice4 = 0, ItemChoice4 = 0; M4.MenuCicle(out MenuChoice4, out ItemChoice4); switch (MenuChoice4) { case 0: switch (ItemChoice4) { case 0: //Да RepairVolumeInconcictensy = true; break; case 1: //Нет RepairVolumeInconcictensy = false; break; } break; } break; case 2: //3. Записывать заголовок Valcom: Menu M1 = new Menu( new string[] { "Записывать в выходные файлы заголовок Valcom?" }, new string[][] { new string[] { "Да", "Нет" } }, null, 0, new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) }); int MenuChoice1 = 0, ItemChoice1 = 0; M1.MenuCicle(out MenuChoice1, out ItemChoice1); switch (MenuChoice1) { case 0: switch (ItemChoice1) { case 0: //Да WriteValcomHeader = true; break; case 1: //Нет WriteValcomHeader = false; break; } break; } break; case 3: //Писать log-файл Menu M3 = new Menu( new string[] { "Писать log-файл работы программы?" }, new string[][] { new string[] { "Да", "Нет" } }, null, 0, new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) }); int MenuChoice3 = 0, ItemChoice3 = 0; M3.MenuCicle(out MenuChoice3, out ItemChoice3); switch (MenuChoice3) { case 0: switch (ItemChoice3) { case 0: //Да UseLog = true; //открываем LOG string logPath = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; logPath = System.IO.Path.GetFileNameWithoutExtension(logPath); logPath += ".log"; LogFile = new StreamWriter(logPath, true, Encoding.Default); break; case 1: //Нет UseLog = false; break; } break; } break; default: //ошибка меню Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе доп. 1 главного меню!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } break; default: Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе главного меню!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } } while (!(MenuChoice == -1 || MenuChoice == 0 && ItemChoice == 3) && !ExitApp); }
static void ManyTablesMenu(CalibrationTable[] CT, string path) //меню работы с несколькими таблицами { int MenuChoice = 0, //выбранное доп. меню ItemChoice = 0; //выбранный пункт меню Menu.DoubleColor[] colorScheme = new Menu.DoubleColor[2]; colorScheme[0] = new Menu.DoubleColor(); colorScheme[1] = new Menu.DoubleColor(ConsoleColor.Yellow); Menu M = new Menu( new string[] { "Несколько градуировочных таблиц", "Опции (<Tab> для перехода)" }, new string[][] { new string[] { }, new string[] { } }, null, 0, colorScheme); do { M.Items = new string[][] { new string[] { "1. Выбрать таблицу для работы", "2. Изменить везде базу уровней на " + ((DefaultLevelBase == LevelBase.Centimeters)?"мм":"см"), "3. Проверить все таблицы", "4. Исправить все таблицы", "5. Сортировать все таблицы", "6. Сохранить все таблицы", "7. Выход" }, new string[] { "Исправлять непоследовательность объемов: " + ((RepairVolumeInconcictensy)?"да":"нет") } }; M.MenuCicle(out MenuChoice, out ItemChoice); switch (MenuChoice) { case -1: //отмена меню break; case 0: switch (ItemChoice) { case 0: //1. Выбрать таблицу для работы ChooseTableMenu(CT, path); break; case 1: //2. Изменить во всех таблицах базу уровней DefaultLevelBase = (DefaultLevelBase == LevelBase.Centimeters) ? (LevelBase.Millimeters) : (LevelBase.Centimeters); for (int i = 0; i < CT.Length; i++) { CT[i].ChangeLevelBase(DefaultLevelBase); } break; case 2: //3. Проверить все таблицы for (int i = 0; i < CT.Length; i++) { CT[i].CheckTable(); } break; case 3: //4. Исправить все таблицы for (int i = 0; i < CT.Length; i++) { CT[i].RepairTable(RepairVolumeInconcictensy); } break; case 4: //5. Сортировать все таблицы for (int i = 0; i < CT.Length; i++) { CT[i].SortTable(); } break; case 5: //6. Сохранить все таблицы TXTFile tf = new TXTFile( FileEventProcessor, FileEventProcessor, FileEventProcessor, FileEventProcessor); tf.WriteManyFiles(CT, path, WriteValcomHeader); break; case 6: //2. Выход ExitApp = true; break; default: //ошибка меню Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе доп. 0 меню нескольких таблиц!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } break; case 1: Menu M4 = new Menu( new string[] { "Исправлять непоследовательность объемов?" }, new string[][] { new string[] { "Да", "Нет" } }, null, 0, new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) }); int MenuChoice4 = 0, ItemChoice4 = 0; M4.MenuCicle(out MenuChoice4, out ItemChoice4); switch (MenuChoice4) { case 0: switch (ItemChoice4) { case 0: //Да RepairVolumeInconcictensy = true; break; case 1: //Нет RepairVolumeInconcictensy = false; break; } break; } break; default: Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе меню нескольких таблиц!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } } while (!(MenuChoice == -1 || MenuChoice == 0 && ItemChoice == 6) && !ExitApp); }
static void OneTableMenu(CalibrationTable CT, string path = null, bool ExitIfTrue = true) //меню работы с одной таблицей { int MenuChoice = 0, //выбранное доп. меню ItemChoice = 0; //выбранный пункт меню Menu.DoubleColor[] colorScheme = new Menu.DoubleColor[2]; colorScheme[0] = new Menu.DoubleColor(); colorScheme[1] = new Menu.DoubleColor(ConsoleColor.Yellow); Menu M = new Menu( new string[] { "Таблица: " + CT.CTid, "Опции (<Tab> для перехода)" }, new string[][] { new string[] { }, new string[] { } }, null, 0, colorScheme); do { M.Items = new string[][] { new string[] { "1. Отобразить таблицу", "2. Изменить базу уровней на " + ((CT.levelBase == LevelBase.Centimeters)?"мм":"см"), "3. Правка значений в таблице", "4. Проверить таблицу", "5. Исправить таблицу", "6. Сортировать", "7. Сохранить", "8. " + ((ExitIfTrue)?"Выход":"Назад") }, new string[] { "Исправлять непоследовательность объемов: " + ((RepairVolumeInconcictensy)?"да":"нет"), "Записывать заголовок Valcom: " + ((WriteValcomHeader)?"да":"нет") } }; M.MenuCicle(out MenuChoice, out ItemChoice); switch (MenuChoice) { case -1: //отмена меню break; case 0: switch (ItemChoice) { case 0: //1. Отобразить таблицу CT.ShowTable(); break; case 1: //2. Изменить базу уровней switch (CT.levelBase) { case LevelBase.Millimeters: CT.ChangeLevelBase(LevelBase.Centimeters); break; case LevelBase.Centimeters: CT.ChangeLevelBase(LevelBase.Millimeters); break; } break; case 2: //3. Правка значений в таблице ChangeTableMenu(CT); break; case 3: //3. Проверить таблицу CT.CheckTable(); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\n\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(true); break; case 4: //4. Исправить таблицу CT.RepairTable(RepairVolumeInconcictensy); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\n\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(true); break; case 5: //5. Сортировать CT.SortTable(); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\n\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(true); break; case 6: //6. Сохранить TXTFile tf = new TXTFile( FileEventProcessor, FileEventProcessor, FileEventProcessor, FileEventProcessor); tf.WriteFile(CT, path, WriteValcomHeader); break; case 7: //7. Выход ExitApp = ExitIfTrue; break; default: //ошибка меню Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе доп. 0 меню одной таблицы!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } break; case 1: switch (ItemChoice) { case 0: Menu M4 = new Menu( new string[] { "Исправлять непоследовательность объемов?" }, new string[][] { new string[] { "Да", "Нет" } }, null, 0, new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) }); int MenuChoice4 = 0, ItemChoice4 = 0; M4.MenuCicle(out MenuChoice4, out ItemChoice4); switch (MenuChoice4) { case 0: switch (ItemChoice4) { case 0: //Да RepairVolumeInconcictensy = true; break; case 1: //Нет RepairVolumeInconcictensy = false; break; } break; } break; case 1: Menu M2 = new Menu( new string[] { "Записывать в выходные файлы заголовок Valcom?" }, new string[][] { new string[] { "Да", "Нет" } }, null, 0, new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) }); int MenuChoice2 = 0, ItemChoice2 = 0; int curItem2 = (WriteValcomHeader) ? 0 : 1; M2.MenuCicle(out MenuChoice2, out ItemChoice2, 0, curItem2); switch (MenuChoice2) { case 0: switch (ItemChoice2) { case 0: //Да WriteValcomHeader = true; break; case 1: //Нет WriteValcomHeader = false; break; } break; default: Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе меню опций!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } break; default: Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе доп. 1 меню одной таблицы!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } break; default: Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе меню одной таблицы!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } } while (!(MenuChoice == -1 || MenuChoice == 0 && ItemChoice == 7) && !ExitApp); }