internal static void FillStorage(RegionsStorage storage, IList<string[]> fileNamesParts, RegionSuffixRegexes regionSuffixRegexes) { foreach (string[] fileNameStrings in fileNamesParts) { AddOrAppendRegion(storage, fileNameStrings, regionSuffixRegexes); } }
private RegionsStorage CreateRegionsStorage() { DirectoryInfo di = new DirectoryInfo(SelectedFolderPath); var files = di.GetFiles("*.png"); RegionsStorage storage = new RegionsStorage(); storage.Regions.AddRange(files.Select(file => new Region(file.Name) {ThumbnailImageName = file.FullName})); return storage; }
/// <summary> /// Сгенерировать хранилище регионов из изображений /// </summary> /// <param name="path">Путь к папке с изображениями</param> /// <param name="regionSuffixRegexes">Набор регулярных выражений для парсинга названий</param> /// <returns>Хранидище регионов</returns> public static RegionsStorage Generate(string path, RegionSuffixRegexes regionSuffixRegexes) { if (!Directory.Exists(path)) { return DefaultStorage; } folder = path; var storage = new RegionsStorage(); FileInfo[] files = (new DirectoryInfo(folder)).GetFiles("*_*.png"); var sortedFileNames = files.Select(file => file.Name).ToList(); sortedFileNames.Sort(); var separtedFileNames = sortedFileNames.Select(file=>file.Split(regionSuffixRegexes.Separator)).ToList(); FillStorage(storage, separtedFileNames, regionSuffixRegexes); return storage; }
private static void AddOrAppendRegion(RegionsStorage storage, string[] fileNameParts, RegionSuffixRegexes regionSuffixRegexes) { var region = storage.FindRegion(fileNameParts[0]); if (region == null) { region = new Region(fileNameParts[0]); storage.Regions.Add(region); } FillRegion(region, fileNameParts[1], regionSuffixRegexes); }