static void ManyTables() //обработка одной таблицы { string workPath = ""; //рабочая папка (та, где лежат DOC файлы) Console.Clear(); //открыли, прочитали DOC файлы DOCFile doc = new DOCFile( FileEventProcessor, FileEventProcessor); doc.ReadManyFiles(out workPath); if (doc.filePath == null) { return; } CalibrationTable[] CT = new CalibrationTable[0]; for (int i = 0; i < doc.fileId.Length; i++) { CalibrationTable tempCT = new CalibrationTable( doc.fileId[i], CTEventProcessor, CTEventProcessor, CTEventProcessor, CTEventProcessor, CTEventProcessor, CTEventProcessor, CTEventProcessor, CTEventProcessor); if (tempCT.ReadTable(doc.fileData[i])) { tempCT.RepairTable(RepairVolumeInconcictensy); } if (tempCT.Table.Count == 0) { continue; } Array.Resize(ref CT, CT.Length + 1); tempCT.CopyTo(ref CT[CT.Length - 1]); CT[CT.Length - 1].ChangeLevelBase(DefaultLevelBase); } TXTFile txt = new TXTFile( //создали и записали TXT файлы FileEventProcessor, FileEventProcessor, FileEventProcessor, FileEventProcessor); txt.WriteManyFiles(CT, workPath, WriteValcomHeader); ManyTablesMenu(CT, workPath); //вызываем меню для таблиц }
static void OneTable() //обработка одной таблицы { Console.Clear(); //открыли, прочитали DOC файл DOCFile doc = new DOCFile( FileEventProcessor, FileEventProcessor); doc.ReadOneFile(); if (doc.filePath == null) { return; } CalibrationTable CT = new CalibrationTable( //создаем градуировочную таблицу doc.fileId[0], CTEventProcessor, CTEventProcessor, CTEventProcessor, CTEventProcessor, CTEventProcessor, CTEventProcessor, CTEventProcessor, CTEventProcessor); if (CT.ReadTable(doc.fileData[0])) { CT.RepairTable(RepairVolumeInconcictensy); } //зададим базу уровней CT.ChangeLevelBase(DefaultLevelBase); //создали, записали TXT файл TXTFile txt = new TXTFile( FileEventProcessor, FileEventProcessor, FileEventProcessor, FileEventProcessor); txt.WriteFile(CT, doc.filePath[0], WriteValcomHeader); OneTableMenu(CT); //вызываем меню для таблицы }
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); }