public PackageContentItemViewModel(PackageContentItem packageContentItem, PackageViewModel package) : base(packageContentItem) { _package = package; _package.PropertyChanged += Package_PropertyChanged; }
private static bool SelectTarget(PackageContentItem model, string target) { bool found = false; PackageFileContentItem file = model as PackageFileContentItem; PackageFolderContentItem folder = model as PackageFolderContentItem; if (file != null && file.ID == target) { file.IsSelected = true; found = true; } else if (folder != null) { foreach (PackageContentItem child in folder.Contents) { if (SelectTarget(child, target)) { found = true; break; } } } return(found); }
/// <summary> /// If the chosen item is a file then the Select Button is enabled, and the correct path is set. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Windows.RoutedPropertyChangedEventArgs<System.Object>"/> instance containing the event data.</param> private void PkgFileChooser_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { var file = PackageFileChooser.SelectedItem as PackageFileContentItem; if (file != null) { SelectButton.IsEnabled = true; PackageViewModel package = null; // Get the Package parent PackageContentItem parent = file.Parent; package = parent as PackageViewModel; while (package == null && parent != null) { parent = parent.Parent; package = parent as PackageViewModel; } if (package != null) { TraceLabSDK.PackageSystem.IPackageReference reference = new TraceLab.Core.PackageSystem.PackageReference(package.Package); var path = new TraceLab.Core.Components.TraceLabFilePath(); path.Init(reference, file.ID); Path = path; } } else { SelectButton.IsEnabled = false; } }
/// <summary> /// If the chosen item is a Package or Folder then the Select Button is enabled, and the correct /// path is set. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Windows.RoutedPropertyChangedEventArgs<System.Object>"/> instance containing the event data.</param> private void PkgFolderChooser_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { bool enableButton = false; PackageFolderContentItem folder = PackageFileChooser.SelectedItem as PackageFolderContentItem; if (folder != null && !(folder is PackageViewModel)) { Stack <string> subDirs = new Stack <string>(); subDirs.Push(folder.Label); PackageContentItem parent = folder.Parent; while (parent.Parent != null) { subDirs.Push(parent.Label); parent = parent.Parent; } PackageViewModel package = parent as PackageViewModel; if (package != null) { string subDirectory = ""; while (subDirs.Count > 0) { subDirectory = System.IO.Path.Combine(subDirectory, subDirs.Pop()); } if (Directory.Exists(System.IO.Path.Combine(package.Package.Location, subDirectory))) { TraceLabSDK.PackageSystem.IPackageReference reference = new TraceLab.Core.PackageSystem.PackageReference(package.Package); TraceLabDirectoryPath path = new TraceLabDirectoryPath(); path.Init(reference, subDirectory); Path = path; enableButton = true; } } } else if (folder != null && folder is PackageViewModel) { PackageViewModel package = folder as PackageViewModel; if (Directory.Exists(package.Package.Location)) { TraceLabSDK.PackageSystem.IPackageReference reference = new TraceLab.Core.PackageSystem.PackageReference(package.Package); TraceLabDirectoryPath path = new TraceLabDirectoryPath(); path.Init(reference, "."); Path = path; enableButton = true; } } SelectButton.IsEnabled = enableButton; }
internal void FreezeSelectedPackages() { using (new UndoManager.EventGroupScope()) { // Take each selected package resulting items and put them in the adding items foreach (PackageViewModel package in Packages.Where(p => p.IsSelected)) { List <ContentItemViewModelReference> items = package.ResultingItems.ToList(); package.Package.Items.RemoveAll(); foreach (ContentItemViewModelReference item in items) { PackageContentItem packageItem = new PackageContentItem(item.ContentItem.Id, item.ContentItem.Language, item.ContentItem.FileName); switch (item.ContentItem.FileType) { case FileType.SoundBank: packageItem.InclusionMode = InclusionMode.Bank; break; case FileType.StreamedFile: packageItem.InclusionMode = InclusionMode.Streams; break; case FileType.ExternalSource: packageItem.InclusionMode = InclusionMode.External; break; case FileType.LooseMedia: packageItem.InclusionMode = InclusionMode.LooseMedia; break; } package.Package.Items.Add(packageItem); } // Then ensure no assignation rule uses those packages RemovePackageFromAssignations(package.Id); } } }
private PackageContentItemViewModel CreatePackageContentItemViewModel(PackageContentItem packageContentItem) { return(new PackageContentItemViewModel(packageContentItem, this)); }