public void AddFile(PackageFile file, bool makeCopy = false) { if (file == null) { throw new ArgumentNullException("file"); } if (Contains(file)) { return; } PackagePart newFile; if (makeCopy) { string fileCopyPath; using (Stream originalFileStream = file.GetStream()) { fileCopyPath = FileHelper.CreateTempFile(file.Name, originalFileStream); } string newTargetPath = this.Path + "\\" + file.Name; var physicalFile = new PhysicalPackageFile(isTempFile: true, originalPath: fileCopyPath, targetPath: newTargetPath); newFile = new PackageFile(physicalFile, file.Name, this); } else { // detach from current parent if (file.Parent != null) { file.Parent.Detach(file); } newFile = file; } Attach(newFile); newFile.IsSelected = true; IsExpanded = true; PackageViewModel.NotifyChanges(); }
private void WatchPhysicalFile(PhysicalPackageFile physicalFile) { string folderPath = System.IO.Path.GetDirectoryName(physicalFile.OriginalPath); string fileName = System.IO.Path.GetFileName(physicalFile.OriginalPath); _watcher = new FileSystemWatcher(folderPath, fileName) { IncludeSubdirectories = false, EnableRaisingEvents = true }; _watcher.Changed += OnFileChanged; _watcher.Deleted += OnFileDeleted; _watcher.Renamed += OnFileDeleted; }
public PackageFile AddFile(string filePath, bool isTempFile) { if (!File.Exists(filePath)) { throw new ArgumentException("File does not exist.", "filePath"); } string newFileName = System.IO.Path.GetFileName(filePath); if (ContainsFolder(newFileName)) { PackageViewModel.UIServices.Show(Resources.FileNameConflictWithExistingDirectory, MessageLevel.Error); return null; } bool showingRemovedFile = false; if (ContainsFile(newFileName)) { bool confirmed = PackageViewModel.UIServices.Confirm( Resources.ConfirmToReplaceExsitingFile_Title, String.Format(CultureInfo.CurrentCulture, Resources.ConfirmToReplaceExsitingFile, newFileName), isWarning: true); if (confirmed) { var part = this[newFileName] as PackageFile; showingRemovedFile = PackageViewModel.IsShowingFileContent(part); // remove the existing file before adding the new one RemoveChildByName(newFileName); } else { return null; } } string newTargetPath = this.Path + "\\" + newFileName; var physicalFile = new PhysicalPackageFile(isTempFile, filePath, newTargetPath); var newFile = new PackageFile(physicalFile, newFileName, this); Children.Add(newFile); newFile.IsSelected = true; IsExpanded = true; PackageViewModel.NotifyChanges(); if (showingRemovedFile) { PackageViewModel.ShowFileContent(newFile); } return newFile; }