/// <summary> /// Конструктор. Запускает главную форму /// </summary> /// <param name="DumpFileForFNReader">Путь к файлу дампа для FNReader</param> public TextToKKTForm(string DumpFileForFNReader) { // Инициализация InitializeComponent(); ca = new ConfigAccessor(this.Width, this.Height); // Загрузка списка кодов и ошибок kkmc = new KKTCodes(); kkme = new KKTErrorsList(); ofd = new OFD(); ll = new LowLevel(); um = new UserManuals(ca.ExtendedFunctions); kkts = new KKTSerial(); fns = new FNSerial(); tlvt = new TLVTags(); barc = new BarCodes(); conn = new Connectors(); // Настройка контролов KKTListForCodes.Items.AddRange(kkmc.GetKKTTypeNames().ToArray()); KKTListForCodes.SelectedIndex = 0; KKTListForErrors.Items.AddRange(kkme.GetKKTTypeNames().ToArray()); KKTListForErrors.SelectedIndex = 0; LowLevelProtocol.Items.AddRange(ll.GetProtocolsNames().ToArray()); LowLevelProtocol.SelectedIndex = (int)ca.LowLevelProtocol; LowLevelProtocol_CheckedChanged(null, null); FNLifeStartDate.Value = DateTime.Now; OFDNamesList.Items.Add("Неизвестный ОФД"); OFDNamesList.Items.AddRange(ofd.GetOFDNames().ToArray()); OFDNamesList.SelectedIndex = 0; CableType.Items.AddRange(conn.GetCablesNames().ToArray()); CableType.SelectedIndex = 0; this.Text = ProgramDescription.AssemblyVisibleName; // Получение настроек this.Left = ca.WindowLeft; this.Top = ca.WindowTop; KeepAppState.Checked = ca.KeepApplicationState; TopFlag.Checked = ca.TopMost; MainTabControl.SelectedIndex = (int)ca.CurrentTab; try { KKTListForErrors.SelectedIndex = (int)ca.KKTForErrors; ErrorCodesList.SelectedIndex = (int)ca.ErrorCode; } catch { } FNLifeSN.Text = ca.FNSerial; if (ca.GenericTaxFlag) { GenericTaxFlag.Checked = true; } else { OtherTaxFlag.Checked = true; } if (ca.GoodsFlag) { GoodsFlag.Checked = true; } else { ServicesFlag.Checked = true; } SeasonFlag.Checked = ca.SeasonFlag; AgentsFlag.Checked = ca.AgentsFlag; ExciseFlag.Checked = ca.ExciseFlag; AutonomousFlag.Checked = ca.AutonomousFlag; FFD12Flag.Checked = ca.FFD12Flag; RNMSerial.MaxLength = (int)kkts.MaxSerialNumberLength; RNMSerial.Text = ca.KKTSerial; RNMUserINN.Text = ca.UserINN; RNMValue.Text = ca.RNMKKT; RNMSerial_TextChanged(null, null); // Для протяжки пустых полей OFDINN.Text = ca.OFDINN; OFDNalogSite.Text = OFD.FNSSite; OFDDNSNameK.Text = OFD.OKPSite; OFDIPK.Text = OFD.OKPIP; OFDPortK.Text = OFD.OKPPort; OFDYaDNS1.Text = OFD.YandexDNSReq; OFDYaDNS2.Text = OFD.YandexDNSAlt; LowLevelCommand.SelectedIndex = (int)ca.LowLevelCode; try { KKTListForCodes.SelectedIndex = (int)ca.KKTForCodes; } catch { } TextToConvert.Text = ca.CodesText; KKTListForManuals.Items.AddRange(um.GetKKTList().ToArray()); KKTListForManuals.SelectedIndex = (int)ca.KKTForManuals; OperationsListForManuals.Items.AddRange(um.OperationTypes); try { OperationsListForManuals.SelectedIndex = (int)ca.OperationForManuals; } catch { OperationsListForManuals.SelectedIndex = 0; } BarcodeData.MaxLength = (int)BarCodes.MaxSupportedDataLength; BarcodeData.Text = ca.BarcodeData; CableType.SelectedIndex = (int)ca.CableType; TLV_FFDCombo.Items.Add("ФФД 1.05"); TLV_FFDCombo.Items.Add("ФФД 1.1"); TLV_FFDCombo.Items.Add("ФФД 1.2"); TLV_FFDCombo.SelectedIndex = (int)ca.FFDForTLV; TLVFind.Text = ca.TLVData; TLV_ObligationBasic.Text = TLVTags.ObligationBasic; TLVButton_Click(null, null); // Блокировка расширенных функций при необходимости RNMGenerate.Visible = RNMFromFNReader.Visible = LowLevelTab.Enabled = TLVTab.Enabled = ConnectorsTab.Enabled = OFDFromFNReader.Visible = ca.AllowExtendedFunctionsLevel2; CodesTab.Enabled = ca.AllowExtendedFunctionsLevel1; RNMTip.Text = "Индикатор ФФД: красный – поддержка не планируется; зелёный – поддерживается; " + "жёлтый – планируется; синий – нет сведений\n(на момент релиза этой версии приложения)"; if (ca.AllowExtendedFunctionsLevel2) { RNMTip.Text += ("\n\nПервые 10 цифр РН являются порядковым номером ККТ в реестре и могут быть указаны " + "вручную при генерации"); } else { RNMLabel.Text = "Укажите регистрационный номер для проверки:"; UnlockField.Visible = UnlockLabel.Visible = true; UnlockLabel.Text = ca.LockMessage; FNReader.Enabled = false; } // Настройка иконки в трее ni.Icon = Properties.TextToKKMResources.TextToKKTTray; ni.Text = ProgramDescription.AssemblyVisibleName; ni.Visible = true; ni.ContextMenu = new ContextMenu(); ni.ContextMenu.MenuItems.Add(new MenuItem("FNReader", FNReader_Click)); ni.ContextMenu.MenuItems[0].Enabled = FNReader.Enabled; ni.ContextMenu.MenuItems.Add(new MenuItem("В&ыход", CloseService)); ni.MouseDown += ReturnWindow; ni.ContextMenu.MenuItems[1].DefaultItem = true; if (!File.Exists(RDGenerics.AutorunLinkPath)) { ni.ContextMenu.MenuItems.Add(new MenuItem("Добавить в &автозапуск", AddToStartup)); } // Запуск файла дампа, если представлен if (ca.AllowExtendedFunctionsLevel2 && (DumpFileForFNReader != "")) { CallFNReader(DumpFileForFNReader); } }
public static void Main(string[] args) { // Загрузка конфигурации ConfigAccessor ca = new ConfigAccessor(); // Проверка запуска единственной копии bool result; Mutex instance = new Mutex(true, ProgramDescription.AssemblyTitle, out result); if (!result) { MessageBox.Show(string.Format(Localization.GetText("ProgramLaunchedError", ca.InterfaceLanguage), ProgramDescription.AssemblyTitle), ProgramDescription.AssemblyTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } // Запуск программы в случае уникальности Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // Отображение справки и запроса на принятие Политики if (!ProgramDescription.AcceptEULA()) { return; } ProgramDescription.ShowAbout(true); // Передача параметра и предполагаемого типа файла if (args.Length > 0) { // Справка по командной строке if (args[0].Contains("?")) { MessageBox.Show(Localization.GetText("CommandLineHelp", ca.InterfaceLanguage), ProgramDescription.AssemblyTitle, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Входной файл DataInputTypes inputType = DataInputTypes.Unknown; // Извлечение по умолчанию if (args[0].Length >= 5) // Расширение (не менее 3-х символов) + '.' + имя (не менее одного символа) { switch (args[0].Substring(args[0].Length - 4).ToLower()) { case "." + ProgramDescription.AppDataExtension: inputType = DataInputTypes.GDD; break; case "xlsx": case ".xls": inputType = DataInputTypes.XLS; break; case ".csv": inputType = DataInputTypes.CSV; break; } } // Только открытие файла if (args.Length == 1) { Application.Run(new GeomagDataDrawerForm(args[0], inputType)); return; } // Определение параметров для консольной обработки uint skippedLinesCount = ca.SkippedLinesCount; uint expectedColumnsCount = ca.ExpectedColumnsCount; if (args.Length > 2) { uint.TryParse(args[2], out skippedLinesCount); if (skippedLinesCount > ConfigAccessor.MaxSkippedLinesCount) { skippedLinesCount = ConfigAccessor.MaxSkippedLinesCount; } if (args.Length > 3) { uint.TryParse(args[3], out expectedColumnsCount); if (expectedColumnsCount > ConfigAccessor.MaxExpectedColumnsCount) { expectedColumnsCount = ConfigAccessor.MaxExpectedColumnsCount; } if (expectedColumnsCount < 2) { expectedColumnsCount = 2; } } } // Выходной файл int outputType = (int)DataOutputTypes.ANY; // По умолчанию - файл свободной топологии if (args[1].Length >= 5) { switch (args[1].Substring(args[1].Length - 4).ToLower()) { // Файлы данных case "." + ProgramDescription.AppDataExtension: outputType = (int)DataOutputTypes.GDD; break; /*case "xlsx": * case ".xls": * outputType = DataOutputTypes.XLS; * break;*/ case ".csv": outputType = (int)DataOutputTypes.CSV; break; // Файлы изображений case ".png": outputType = (int)ImageOutputTypes.PNG; break; case ".svg": outputType = (int)ImageOutputTypes.SVG; break; /*case ".emf": * outputType = (int)ImageOutputTypes.EMF; * break;*/ } } // Запуск интерпретации DiagramData dd; if (inputType == DataInputTypes.Unknown) { dd = new DiagramData(args[0], expectedColumnsCount, skippedLinesCount); } else { dd = new DiagramData(args[0], inputType, skippedLinesCount); } // Контроль результата if (dd.InitResult != DiagramDataInitResults.Ok) { MessageBox.Show(string.Format(Localization.GetText("DataFileLoadError", ca.InterfaceLanguage), args[0], DiagramDataInitResultsMessage.ErrorMessage(dd.InitResult, ca.InterfaceLanguage)), ProgramDescription.AssemblyTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } // Запись файла данных if (outputType < 4) { if (dd.SaveDataFile(args[1], (DataOutputTypes)outputType, true) < 0) { MessageBox.Show(Localization.GetText("DataFileSaveError", ca.InterfaceLanguage), ProgramDescription.AssemblyTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } } // Запись изображения else { // Применение шаблона отображения ColumnsAdderCmd cad = new ColumnsAdderCmd(dd.DataColumnsCount, true, ca.InterfaceLanguage); if (!cad.LoadParametersFile(RDGenerics.AppStartupPath + ConfigAccessor.LineParametersFileName)) { if (!cad.CreateParametersFile(RDGenerics.AppStartupPath + ConfigAccessor.LineParametersFileName)) { return; } cad.LoadParametersFile(RDGenerics.AppStartupPath + ConfigAccessor.LineParametersFileName); } // Добавление кривых for (int i = 0; i < cad.XColumnNumber.Count; i++) { int res = dd.AddDiagram(cad.XColumnNumber[i], cad.YColumnNumber[i]); if (res < 0) { continue; } dd.GetStyle(i).DiagramImageWidth = cad.ImageWidth[i]; dd.GetStyle(i).DiagramImageHeight = cad.ImageHeight[i]; dd.GetStyle(i).DiagramImageLeftOffset = cad.ImageLeft[i]; dd.GetStyle(i).DiagramImageTopOffset = cad.ImageTop[i]; if (!cad.AutoNameOffset[i]) { dd.GetStyle(i).LineName = cad.LineName[i]; dd.GetStyle(i).LineNameLeftOffset = cad.LineNameLeftOffset[i]; dd.GetStyle(i).LineNameTopOffset = cad.LineNameTopOffset[i]; } } // Сохранение изображения SavePicture sp = new SavePicture(dd, ca.InterfaceLanguage, true); sp.SaveImage(args[1], (ImageOutputTypes)outputType); } // Завершено } else { // Случай загрузки backup-файла Application.Run(new GeomagDataDrawerForm("", DataInputTypes.Unspecified)); } }