void OpenFolderImpl(DirectoryInfo folder) { var userPrefs = new PersistedUserPreferences(); var fileNameHandler = new FileNameHandler(userPrefs); OpenFolderImpl(n => fileNameHandler.FileMatch(n, includeSmalls: false), folder, fileNameHandler, userPrefs.ShelfName); userPrefs.Save(); }
public void GetFilePathForEnvironment_ValidEnvironment_CorrectPath(string path, string env, string expected) { // Arrange var handler = new FileNameHandler(); // Act var pathWithEnv = handler.GetFilePathForEnvironment(path, env); // Assert pathWithEnv.Should().Be(expected); }
public ImageHost(FileNameHandler fileNameHandler, string shelfName, FileInfo fileInfo) { _images = new Image[3]; _imageNamesGetters = new Func <FileInfo>[] { () => FileInfo, () => GetSmallFile(), () => GetRightFile() }; FileNameHandler = fileNameHandler; ShelfName = shelfName; FileInfo = fileInfo; }
static void Main(string[] args) { var form = new FormImportPictures(); if (form.ShowDialog() != DialogResult.OK) { Console.WriteLine("User has canceled"); return; } Console.WriteLine("Processing settings..."); var userPrefs = new PersistedUserPreferences(); Func <string, string> largeFileNameMaker = s => new Regex(@"(.*\.)(small|right)\.(jpg|jpeg)$", RegexOptions.IgnoreCase).Replace(s, "$1.$3"); Func <string, string> smallFileNameMaker = s => new Regex(@"\.(jpg|jpeg)$", RegexOptions.IgnoreCase).Replace(largeFileNameMaker(s), ".small.$1"); Func <string, string> rightFileNameMaker = s => new Regex(@"\.(jpg|jpeg)$", RegexOptions.IgnoreCase).Replace(largeFileNameMaker(s), ".right.$1"); var fileNameMaker = new FileNameHandler( userPrefs.IncludeFiles, userPrefs.ExcludeFolders, @"\.small\.((jpeg)|(jpg))$", smallFileNameMaker, rightFileNameMaker, largeFileNameMaker ); var folderWalker = new FolderNavigator( userPrefs.FolderImportStart, userPrefs.FolderImportEnd, fileNameMaker, null ); folderWalker.StartingFolder += FolderWalker_StartingFolder; folderWalker.EndingFolder += FolderWalker_EndingFolder; folderWalker.FoundAFile += FolderWalker_FoundAFile; folderWalker.Run(); }
void OpenFolderImpl(Func <string, bool> fileNameMatcher, DirectoryInfo selectedPath, FileNameHandler fileNameHandler, string shelf) { _shelvedFiles.Clear(); buttonUndo.Enabled = false; _currentDirectory = selectedPath; Text = _currentDirectory.FullName; _currentFiles = new LinkedList <ImageHost>( _currentDirectory .EnumerateFiles("*", SearchOption.TopDirectoryOnly) .Where(f => fileNameMatcher(f.Name)) .OrderBy(f => f.Name) .Select(f => new ImageHost(fileNameHandler, shelf, f)) ); _currentFiles.ForEach(ih => ih.Parent = _currentFiles); switch (_currentFiles.Count) { case 0: // MessageBox.Show($"There are no pictures to sort in folder {selectedPath}", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); _fileIndex = new NodesTuple(null, null); return; case 1: _fileIndex = LoadPictures(new NodesTuple(_currentFiles.First, _currentFiles.First), 0, 0, noRelease: true); break; default: _fileIndex = LoadPictures(new NodesTuple(_currentFiles.First, _currentFiles.First.Next), 0, 0, noRelease: true); break; } buttonShelfLeft.Image = buttonShelfRight.Image = _currentDirectory.Name.Equals(shelf, StringComparison.InvariantCultureIgnoreCase) ? Properties.Resources.SmallUnshelve : Properties.Resources.SmallShelve; Focus(); }
FileInfo GetRightFile() { var rightFile = new FileInfo(FileNameHandler.RightFileNameMaker(FileInfo.FullName)); return(rightFile); }
FileInfo GetSmallFile() { var smallFile = new FileInfo(FileNameHandler.SmallFileNameMaker(FileInfo.FullName)); return(smallFile); }