/// <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);
            }
        }
Beispiel #2
0
        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));
            }
        }