Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        private void UpdateDirtiness(DirectoryBaseViewModel dir, bool isDirty)
        {
            if (dir.IsDirty)
            {
                ((IDirtiable)dir).UpdateDirtiness(isDirty);
            }

            foreach (var subdir in dir.SubDirectories)
            {
                UpdateDirtiness(subdir, isDirty);
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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);
        }