Exemplo n.º 1
0
 /// <summary>
 /// Конструктор
 /// </summary>
 public CyclogramFile()
 {
     // !_curLine = 0;
     _wasError = false;
     _availableCommands = null;
     _curCommand = new CyclogramLine();
     commands = new ObservableCollection<CyclogramLine>();
 }
Exemplo n.º 2
0
        /// <summary>
        /// загружаем файл циклограмм
        /// Даже в случае ошибки, команда добавляется в список команд, но выставляется признак наличия ошибки
        /// </summary>
        /// <param name="cycFName">Путь к файлу циклограмм</param>
        /// <param name="availableCommands">Список доступных команд</param>
        public void TryLoad(string cycFName, CyclogramCommands availableCommands)
        {
            Debug.Assert(availableCommands != null, "Список доступных команд циклограммы пуст!");
            string cycLine;
            int curLineNum = 0;

            _availableCommands = availableCommands;
            _wasError = false;
            if (!File.Exists(cycFName))
            {
                _wasError = true;
                CyclogramParsingException exc = new CyclogramParsingException("Файл " + cycFName + " не существует!");
                throw exc;
            }

            FileName = cycFName;
            commands.Clear();
            using (StreamReader sr = new StreamReader(cycFName))
            {
                // читам файл по строкам
                while (sr.Peek() >= 0)
                {
                    cycLine = sr.ReadLine();
                    try
                    {
                        TryParseString(cycLine);
                    }
                    catch (CyclogramParsingException e)
                    {
                        _wasError = true;
                        _curCommand.ErrorInCommand += e.Message + "\t";
                    }
                    catch
                    {
                        _wasError = true;
                        _curCommand.ErrorInCommand += " Общая ошибка проверки команды.";
                    }
                    finally
                    {
                        _curCommand.Line = curLineNum;
                        commands.Add(_curCommand);

                        // начинаем "собирать" новую команду
                        _curCommand = new CyclogramLine();
                    }
                    curLineNum++;
                }
            }
        }
Exemplo n.º 3
0
 public CyclogramLine SetToLine(int lineNum, bool findFirst = false)
 {
     _curCmd = null;
     foreach (CyclogramLine cl in _cFile.commands.Where(l => (l.IsCommand)))
     {
         if (findFirst)
         {
             if (cl.Line >= lineNum)
             {
                 CurCmd = cl;
                 return CurCmd;
             }
         }
         else if (cl.Line == lineNum)
         {
             CurCmd = cl;
             return CurCmd;
         }
     }
     return null;
 }
Exemplo n.º 4
0
        private void onNewCmd(CyclogramLine cycCommand)
        {
            if (cycCommand == null) return;

            DG.Dispatcher.Invoke(new Action(delegate
            {
                DG.SelectedItem = cycCommand;
                if (IsTracingMode)
                {
                    DG.ScrollIntoView(cycCommand);
                }
            }));
        }