Ejemplo n.º 1
0
        /// <summary>
        /// Метод для чтения текстого файла
        /// </summary>
        private void ReadFile()
        {
            try
            {
                if (string.IsNullOrEmpty(FilePath))
                {
                    _state   = LoadingState.Failed;
                    _message = "Вы не выбрали файл";
                    return;
                }

                using (var sr = new StreamReader(FilePath))
                {
                    string line;
                    Geometries = new ObservableCollection <GeometryBaseModel>();
                    while ((line = sr.ReadLine()) != null)
                    {
                        var numberLine = line.Split(' ');
                        var pointList  = new List <Point>();
                        var failFlag   = false;

                        for (var index = 0; index < numberLine.Length; index += 2)
                        {
                            if (!int.TryParse(numberLine[index], out var xNumber))
                            {
                                _state   = LoadingState.Partial;
                                failFlag = true;
                                break;
                            }

                            if (!int.TryParse(numberLine[index + 1], out var yNumber))
                            {
                                _state   = LoadingState.Partial;
                                failFlag = true;
                                break;
                            }

                            pointList.Add(new Point(xNumber, yNumber));
                        }

                        if (failFlag)
                        {
                            continue;
                        }

                        try
                        {
                            Geometries.Add(GeometrySpawner.Spawn(pointList));
                        }
                        catch (InvalidDataException)
                        {
                            _state = LoadingState.Partial;
                        }
                    }
                }

                ScaleValue     = 1;
                TransformValue = new Point(0, 0);
                CenterValue    = new Point(0, 0);
            }
            catch (FileNotFoundException)
            {
                _state   = LoadingState.Failed;
                _message = "Запрашиваемый файл не найден";
            }
            catch (UnauthorizedAccessException)
            {
                _state   = LoadingState.Failed;
                _message = "У вас нет доступа к этому файлу";
            }
            catch (Exception e)
            {
                _state   = LoadingState.Failed;
                _message = "Произошла неизвестная ошибка";
            }
        }