public IItemTemplateDialog CreateAddAssetDialog(SessionViewModel session, DirectoryBaseViewModel directory) { // TODO: We can't share session.ActiveAssetView.AddAssetTemplateCollection view model (used for Add asset popup) with the add asset context menu // because they are fighting each other, probably due to two-way bindings (on the SearchToken?) //var addAssetWindow = new AddItemWindow(session.ServiceProvider, session.ActiveAssetView.AddAssetTemplateCollection); var addAssetWindow = new AddItemWindow(session.ServiceProvider, new AddAssetTemplateCollectionViewModel(session)); return(addAssetWindow); }
private void UpdateDirtiness(DirectoryBaseViewModel dir, bool isDirty) { if (dir.IsDirty) { ((IDirtiable)dir).UpdateDirtiness(isDirty); } foreach (var subdir in dir.SubDirectories) { UpdateDirtiness(subdir, isDirty); } }
public DirectoryBaseViewModel GetOrCreateProjectDirectory(string projectDirectory, bool canUndoRedoCreation) { DirectoryBaseViewModel result = Code; if (!string.IsNullOrEmpty(projectDirectory)) { var directories = projectDirectory.Split(new[] { DirectoryBaseViewModel.Separator }, StringSplitOptions.RemoveEmptyEntries).Skip(1); result = directories.Aggregate(result, (current, next) => current.SubDirectories.FirstOrDefault(x => x.Name == next) ?? new DirectoryViewModel(next, current, canUndoRedoCreation)); } return(result); }
/// <summary> /// Enumerate assets. /// </summary> /// <param name="dir"></param> /// <param name="list"></param> /// <returns>Returns true if any of the (sub)directories is dirty.</returns> private static bool GetAssets(DirectoryBaseViewModel dir, List <AssetViewModel> list) { bool dirDirty = dir.IsDirty; foreach (var directory in dir.SubDirectories) { dirDirty |= GetAssets(directory, list); } //is dirty check is necessary to avoid unsaved scripts to be deleted list.AddRange(dir.Assets.Where(x => x.Asset is IProjectAsset)); return(dirDirty); }
private static void ExpandDirectories([NotNull] TreeView treeView, DirectoryBaseViewModel directory) { treeView.Dispatcher.BeginInvoke(new Action(() => { var item = treeView.GetTreeViewItemFor(directory); if (item == null) { return; } item.IsExpanded = true; foreach (var subDirectory in directory.SubDirectories) { ExpandDirectories(treeView, subDirectory); } }), DispatcherPriority.ApplicationIdle); }
protected override string UpdateNameFromSelectedTemplate() { var selectedTemplate = SelectedTemplate?.GetTemplate() as TemplateAssetDescription; if (selectedTemplate == null || !selectedTemplate.RequireName) { return(null); } // If the mount point of the current folder does not support this type of asset, try to select the first mount point that support it. var assetType = selectedTemplate.GetAssetType(); TargetDirectory = AssetViewModel.FindValidCreationLocation(assetType, CurrentDirectory); if (TargetDirectory == null) { return(null); } var baseName = selectedTemplate.DefaultOutputName ?? selectedTemplate.AssetTypeName; var name = NamingHelper.ComputeNewName(baseName, TargetDirectory.Assets, x => x.Name, "{0}{1}"); return(name); }
public IItemTemplateDialog CreateAssetTemplatesDialog(SessionViewModel session, DirectoryBaseViewModel directory, int fileCount, IEnumerable <KeyValuePair <TemplateAssetDescription, int> > templates) { var viewModel = new AssetTemplatesViewModel(session.ServiceProvider, fileCount, templates); var window = new ItemTemplatesWindow(viewModel); return(window); }