Beispiel #1
0
        public NewItemDialogViewModel(IProjectFolder folder) : base("New Item")
        {
            var shell           = IoC.Get <IShell>();
            var templateManager = IoC.Get <TemplateManager>();

            templates = new ObservableCollection <TemplateViewModel>(templateManager.ListItemTemplates("").Select(t => new TemplateViewModel(t)).ToList());

            SelectedTemplate = templates.FirstOrDefault();

            this.folder = folder;

            OKCommand = ReactiveCommand.Create(async() =>
            {
                await templateManager.CreateTemplate(
                    SelectedTemplate.Template,
                    folder.LocationDirectory,
                    SelectedTemplate.Parameters
                    .Where(p => !string.IsNullOrEmpty(p.Value.Trim()))
                    .Select(p => (p.Name.ToLower(), p.Value))
                    .ToArray());

                Close();
            });

            UpdateTemplatesCommand = ReactiveCommand.Create(() =>
            {
                Task.Run(() =>
                {
                    templateManager.UpdateDefaultTemplates();
                });
            });
        }
		public static Task<ISourceFile> Create(IProjectFolder parent, string name, string text = "")
		{
            if(parent.Project == null)
            {
                throw new ArgumentNullException("parent.Project");
            }

            var filePath = Path.Combine(parent.LocationDirectory, name);

            TaskCompletionSource<ISourceFile> fileAddedCompletionSource = new TaskCompletionSource<ISourceFile>();

            EventHandler fileAddedHandler = (sender, e) =>
            {
                var newFile = parent.Project.FindFile(filePath);

                if(newFile != null)
                {
                    fileAddedCompletionSource.SetResult(newFile);
                }
            };

            parent.Project.FileAdded += fileAddedHandler;
			
			var file = System.IO.File.CreateText(filePath);
			file.Write(text);
			file.Close();

            fileAddedCompletionSource.Task.ContinueWith((f) =>
            {
                parent.Project.FileAdded -= fileAddedHandler;
            });

            return fileAddedCompletionSource.Task;
		}
        private static bool TryGetOrCreateProjectFolder(
            RelativePath relativeFilePath,
            IProject project,
            IProjectModelTransactionCookie transaction,
            out IProjectFolder projectFolder)
        {
            RelativePath subFolderRelativePath =
                SolutionFilePathHelpers.GetProjectSubFolderRelativePath(relativeFilePath, project);

            if (!SolutionFilePathHelpers.TryGetProjectFolder(subFolderRelativePath, project, out projectFolder))
            {
                string message =
                    $"There is not folder '{subFolderRelativePath}' in project '{project.Name}'.{Environment.NewLine}" +
                    "Do you want to create it?";

                if (!MessageBox.ShowYesNo(message))
                {
                    return(false);
                }

                FileSystemPath fileSystemPath = subFolderRelativePath.MakeAbsoluteBasedOn(project.Location);
                projectFolder = project.GetOrCreateProjectFolder(fileSystemPath, transaction);
            }

            return(true);
        }
        private async Task <IProjectFolder> GetSubFoldersAsync(IProjectFolder parent, string path)
        {
            var result = new FileSystemFolder(path);

            try
            {
                var folders = Directory.GetDirectories(path);

                if (folders.Count() > 0)
                {
                    foreach (var folder in folders.Where(f => !IsExcluded(f)))
                    {
                        result.Items.InsertSorted(await GetSubFoldersAsync(result, folder));
                    }
                }

                await PopulateFilesAsync(result);

                Folders.InsertSorted(result);
                result.Parent  = parent;
                result.Project = this;
            }
            catch (Exception)
            {
            }

            return(result);
        }
Beispiel #5
0
        public override bool IsAvailableCore()
        {
            this.TableName = Helpers.GetTableName(this.Class);

            if (this.TableName == null)
            {
                return(false);
            }

            IProjectFolder migrationsFolder =
                this.DataProvider.Project.GetSubFolders().FirstOrDefault(x => x.Name == "Migrations");

            if (migrationsFolder == null)
            {
                return(false);
            }

            IList <IProjectFile> migrationFiles = migrationsFolder.GetSubFiles();

            foreach (IProjectFile migrationFile in migrationFiles)
            {
                if (int.TryParse(migrationFile.Name.SubstringAfter("M").SubstringBefore("_"), out int migrationNumber))
                {
                    this.MigrationNumber = Math.Max(this.MigrationNumber, migrationNumber + 1);
                }
            }

            return(true);
        }
Beispiel #6
0
        protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress)
        {
            var projectFile = (IProjectFile)_highlight.OffendingProjectItem;

            using (var cookie = solution.CreateTransactionCookie(DefaultAction.Rollback, this.GetType().Name, progress))
            {
                IProjectFolder newFolder = (IProjectFolder)_highlight.TargetProject.FindProjectItemByLocation(_highlight.TargetFolder)
                                           ?? _highlight.TargetProject.GetOrCreateProjectFolder(_highlight.TargetFolder, cookie);

                var            workflow     = new MoveToFolderWorkflow(solution, "ManualMoveToFolderQuickFix");
                IProjectFolder targetFolder = newFolder ?? _highlight.TargetProject;

                var dataProvider = new MoveToFolderDataProvider(true, false, targetFolder, new List <string>(), new List <string>());
                workflow.SetDataProvider(dataProvider);

                Lifetimes.Using(
                    (lifetime => WorkflowExecuter.ExecuteWithCustomHost(
                         Shell.Instance.GetComponent <IActionManager>()
                         .DataContexts.CreateWithoutDataRules(lifetime
                                                              , DataRules.AddRule(DataRules.AddRule("ManualMoveToFolderQuickFix"
                                                                                                    , JetBrains.ProjectModel.DataContext.ProjectModelDataConstants.PROJECT_MODEL_ELEMENTS, new IProjectModelElement[] { projectFile })
                                                                                  , "ManualMoveToFolderQuickFix"
                                                                                  , JetBrains.ProjectModel.DataContext.ProjectModelDataConstants.SOLUTION, solution))
                         , workflow, new SimpleWorkflowHost())));

                cookie.Commit(progress);
            }

            return(null);
        }
        public void RemoveFolder(IProjectFolder folder)
        {
            folder.Parent.Items.Remove(folder);
            RemoveFiles(this, folder);

            Folders.Remove(folder);
        }
        public static Task <ISourceFile> Create(IProjectFolder parent, string name, string text = "")
        {
            if (parent.Project == null)
            {
                throw new ArgumentNullException("parent.Project");
            }

            var filePath = Path.Combine(parent.LocationDirectory, name);

            TaskCompletionSource <ISourceFile> fileAddedCompletionSource = new TaskCompletionSource <ISourceFile>();

            EventHandler fileAddedHandler = (sender, e) =>
            {
                var newFile = parent.Project.FindFile(filePath);

                if (newFile != null)
                {
                    fileAddedCompletionSource.SetResult(newFile);
                }
            };

            parent.Project.FileAdded += fileAddedHandler;

            using (var file = System.IO.File.CreateText(filePath))
            {
                file.Write(text);
            }

            fileAddedCompletionSource.Task.ContinueWith((f) =>
            {
                parent.Project.FileAdded -= fileAddedHandler;
            });

            return(fileAddedCompletionSource.Task);
        }
Beispiel #9
0
 private void RecurseReadFolders(XmlTextReader reader, ref IProjectFolder folder)
 {
     if (reader.IsEmptyElement)
     {
         return;
     }
     while (reader.Read())
     {
         if (reader.NodeType == XmlNodeType.EndElement)
         {
             return;
         }
         if (reader.Name == "Folder")
         {
             IProjectFolder subFolder = new ProjectFolder(this, reader.GetAttribute("Name"));
             folder.AddFolder(subFolder);
             RecurseReadFolders(reader, ref subFolder);
         }
         else if (reader.Name == "File")
         {
             IProjectFile file = new ProjectFile(this, reader.GetAttribute("Path"));
             folder.AddFile(file);
         }
         else
         {
             return;
         }
     }
 }
Beispiel #10
0
        public IProjectFolder AddFolder(string dirName, IProjectFolder parentFolder)
        {
            IProjectFolder folder = new ProjectFolder(this, dirName);

            parentFolder.AddFolder(folder);
            return(folder);
        }
        public static IProjectFolder GetSubFolders(FileSystemProject project, IProjectFolder parent, string path)
        {
            var result = new StandardProjectFolder(path);

            try
            {
                var folders = Directory.GetDirectories(path);

                if (folders.Count() > 0)
                {
                    foreach (var folder in folders.Where(f => !IsExcluded(project.ExcludedFiles, project.CurrentDirectory.MakeRelativePath(f).ToAvalonPath())))
                    {
                        result.Items.InsertSorted(GetSubFolders(project, result, folder));
                    }
                }

                PopulateFiles(project, result);

                project.Folders.InsertSorted(result);
                result.Parent  = parent;
                result.Project = project;
            }
            catch (Exception)
            {
            }

            return(result);
        }
Beispiel #12
0
        public IProjectFile AddFile(IProjectFolder parentFolder, string fullPath)
        {
            IProjectFile file = new ProjectFile(this, fullPath);

            parentFolder.AddFile(file);
            return(file);
        }
        private void ExcludePackageRootFolderFromNamespace(ISettingsStorageMountPoint mountPoint,
                                                           IProjectFolder folder, string path)
        {
            ExcludeFolderFromNamespace(mountPoint, path);

            // Is it a package folder? Exclude Scripts, Runtime, Scripts/Runtime and Runtime/Scripts
            if (folder.Location.Combine("package.json").ExistsFile)
            {
                // The folder will be linked if the project's files belong to a package that is external to the solution
                // folder. With a linked folder, the namespace provider must be the actual path, relative to the parent
                // folder, rather than the visible path in the Solution Explorer
                //
                // NOTE: KEEP UP TO DATE WITH ExternalPackageCustomNamespaceProvider!
                if (folder.IsLinked && folder.ParentFolder != null)
                {
                    path = folder.Location.ConvertToRelativePath(folder.ParentFolder.Location).FullPath;
                }
                ExcludeFolderFromNamespace(mountPoint, path + @"\Runtime");
                ExcludeFolderFromNamespace(mountPoint, path + @"\Scripts");
                ExcludeFolderFromNamespace(mountPoint, path + @"\Runtime\Scripts");
                ExcludeFolderFromNamespace(mountPoint, path + @"\Scripts\Runtime");
                return;
            }

            // Recurse until we hit the package root
            ExcludePackageSubFoldersFromNamespace(mountPoint, folder, path);
        }
Beispiel #14
0
        public void CreateScript(ProjectItem folder)
        {
            string name = m_project.GetUniqueName(m_localization.GetString("ID_RTScripting_ScriptsManager_Script", "Script"), Ext, folder, true);

            string           nl     = Environment.NewLine;
            RuntimeTextAsset csFile = ScriptableObject.CreateInstance <RuntimeTextAsset>();

            csFile.name = name;
            csFile.Ext  = Ext;
            csFile.Text =
                "using System.Collections;" + nl +
                "using System.Collections.Generic;" + nl +
                "using UnityEngine;" + nl + nl +

                "public class " + name + " : MonoBehaviour" + nl +
                "{" + nl +
                "    // Start is called before the first frame update" + nl +
                "    void Start()" + nl +
                "    {" + nl +
                "    }" + nl + nl +

                "    // Update is called once per frame" + nl +
                "    void Update()" + nl +
                "    {" + nl +
                "    }" + nl +
                "}";

            IProjectFolder projectFolder = IOC.Resolve <IProjectFolder>();

            projectFolder.CreateAsset(csFile, folder);
        }
        public void CreateFileWithinProject([NotNull] TestCopProjectItem projectItem, [NotNull] string targetFile)
        {
            var desiredTemplateName = LookupTemplateName(projectItem.Project);
            var boundSettingsStore  = _settingsStore.BindToContextTransient(ContextRange.ApplicationWide);

            var context = _dataContexts.CreateOnActiveControl(_lifetime);

            var applicableFileTemplateScopes = _scopeManager.EnumerateRealScopePoints(new TemplateAcceptanceContext(new ProjectFolderWithLocation(projectItem.Project)));

            applicableFileTemplateScopes = applicableFileTemplateScopes.Distinct().Where(s => s is InLanguageSpecificProject).ToList();

            var classTemplate = _storedTemplatesProvider.EnumerateTemplates(boundSettingsStore, TemplateApplicability.File)
                                .Where(x => x.Description == desiredTemplateName &&
                                       TemplateScopeManager.TemplateIsAvailable(x, applicableFileTemplateScopes))
                                .Select(x => x)
                                .FirstOrDefault();

            if (classTemplate == null)
            {
                ResharperHelper.AppendLineToOutputWindow(string.Format("File Template for '{0}' not found with default to 'Class'", desiredTemplateName));
                classTemplate = LoadTemplateFromQuickList(context, "Class");
            }
            IProjectFolder folder = (IProjectFolder)projectItem.Project.FindProjectItemByLocation(projectItem.SubNamespaceFolder)
                                    ?? GetOrCreateProjectFolder(projectItem);

            if (folder == null)
            {
                ResharperHelper.AppendLineToOutputWindow("Error failed to create/location project folder" + projectItem.SubNamespaceFolder);
                return;
            }

            string extension = Enumerable.First(_fileExtensions.GetExtensions(projectItem.Project.ProjectProperties.DefaultLanguage.DefaultProjectFileType));

            FileTemplatesManager.Instance.CreateFileFromTemplate(targetFile + extension, new ProjectFolderWithLocation(folder), classTemplate);
        }
        private void Unsubscribe()
        {
            if (m_wm != null)
            {
                m_wm.WindowCreated   -= OnWindowCreated;
                m_wm.WindowDestroyed -= OnWindowDestroyed;
                m_wm = null;
            }

            if (m_scriptManager != null)
            {
                m_scriptManager.Loading   -= OnScriptManagerLoading;
                m_scriptManager.Loaded    -= OnScriptManagerLoaded;
                m_scriptManager.Compiling -= OnScriptManagerCompiling;
                m_scriptManager.Complied  -= OnScriptManagerCompiled;
            }

            if (m_projectFolder != null)
            {
                m_projectFolder.ItemOpen -= OnProjectFolderItemOpen;
                m_projectFolder.ValidateContextMenuOpenCommand -= OnProjectFolderValidateContextMenuOpenCommand;
                m_projectFolder.ContextMenu -= OnProjectFolderContextMenu;
                m_projectFolder              = null;
            }
        }
Beispiel #17
0
        private void Init()
        {
            IProjectFolder projectFolder = IOC.Resolve <IProjectFolder>();
            IProjectTree   projectTree   = IOC.Resolve <IProjectTree>();

            if (m_projectFolder != projectFolder)
            {
                m_projectFolder = projectFolder;

                if (m_projectFolder != null)
                {
                    m_projectFolder.ItemsDeleting   += OnItemsDeleting;
                    m_projectFolder.ItemDataBinding += OnItemDataBinding;
                    m_projectFolder.Destroyed       += OnDestroyed;
                }
            }

            if (m_projectTree != projectTree)
            {
                m_projectTree = projectTree;

                if (m_projectTree != null)
                {
                    m_projectTree.ItemsDeleting   += OnItemsDeleting;
                    m_projectTree.ItemDataBinding += OnItemDataBinding;
                    m_projectTree.Destroyed       += OnDestroyed;
                }
            }
        }
		public NewItemDialogViewModel(IProjectFolder folder) : base("New Item")
		{
			var shell = IoC.Get<IShell>();
			templates = new ObservableCollection<ICodeTemplate>();

			var compatibleTemplates = shell.CodeTemplates.Where(t => t.IsCompatible(folder.Project));

			foreach (var template in compatibleTemplates)
			{
				templates.Add(template);
			}

			SelectedTemplate = templates.FirstOrDefault();

			this.folder = folder;

			OKCommand = ReactiveCommand.Create();

			OKCommand.Subscribe(_ =>
			{
				if (SelectedTemplate != null)
				{
				}

				Close();
			});
		}
Beispiel #19
0
 public ProjectFile(string path, IProjectFolder parentFolder)
 {
     Name         = System.IO.Path.GetFileName(path);
     Extension    = System.IO.Path.GetExtension(path);
     Path         = path;
     ParentFolder = parentFolder;
 }
Beispiel #20
0
        public NewItemDialogViewModel(IProjectFolder folder) : base("New Item")
        {
            var shell = IoC.Get <IShell>();

            templates = new ObservableCollection <ICodeTemplate>();

            var compatibleTemplates = shell.CodeTemplates.Where(t => t.IsCompatible(folder.Project));

            foreach (var template in compatibleTemplates)
            {
                templates.Add(template);
            }

            SelectedTemplate = templates.FirstOrDefault();

            this.folder = folder;

            OKCommand = ReactiveCommand.Create(() =>
            {
                if (SelectedTemplate != null)
                {
                }

                Close();
            });
        }
Beispiel #21
0
        private static IEnumerable <IProjectFile> GetNetCoreJsonConfigFiles(IProjectFolder project)
        {
            var additionalConfigurationFiles = project.GetSolution().GetAdditionalConfigurationFiles();

            return(project.GetAllProjectFiles(
                       file => file.LanguageType.Is <JsonProjectFileType>() &&
                       (file.Name.Equals(FileNames.NetCoreAppSettingsJson, StringComparison.OrdinalIgnoreCase) ||
                        additionalConfigurationFiles.Contains(file.GetPersistentID()))));
        }
 private void ExcludePackageSubFoldersFromNamespace(ISettingsStorageMountPoint mountPoint,
                                                    IProjectFolder thisFolder, string thisPath)
 {
     foreach (var subFolder in thisFolder.GetSubFolders())
     {
         var path = thisPath + @"\" + subFolder.Name;
         ExcludePackageRootFolderFromNamespace(mountPoint, subFolder, path);
     }
 }
Beispiel #23
0
        public override void ExcludeFolder(IProjectFolder folder)
        {
            folder.Parent.Items.Remove(folder);

            ExcludedFiles.Add(folder.Project.CurrentDirectory.MakeRelativePath(folder.Location).ToAvalonPath());

            RemoveFiles(this, folder);

            Save();
        }
        private static IProjectFile FindTestFileInProject(IProjectFolder testProject, string fileName)
        {
            if (fileName.Contains('.'))
            {
                fileName = fileName.Split('.').First();
            }
            var projectFiles = testProject.GetAllProjectFiles();

            return(projectFiles.FirstOrDefault(file => file.Name.Contains(fileName)));
        }
Beispiel #25
0
        public override bool Equals(object obj)
        {
            IProjectFolder folder = obj as IProjectFolder;

            if (folder == null)
            {
                return(base.Equals(obj));
            }
            return(Name.Equals(folder.Name));
        }
Beispiel #26
0
        public void SetUp()
        {
            _temporaryDirectory = new TemporaryDirectory();

            var projectName     = Path.GetRandomFileName();
            var projectLocation = _temporaryDirectory.Path;
            var project         = Project.Create(projectName, projectLocation);

            _folder = project.AddFolder("FolderUnderTest");
        }
Beispiel #27
0
 private void RecurseAddFiles(ref IList <IProjectFile> files, IProjectFolder folder)
 {
     foreach (IProjectFolder subFolder in folder.Folders)
     {
         RecurseAddFiles(ref files, subFolder);
     }
     foreach (IProjectFile file in folder.Files)
     {
         files.Add(file);
     }
 }
        public static void PopulateFiles(FileSystemProject project, IProjectFolder folder)
        {
            var files = Directory.EnumerateFiles(folder.Location);

            files = files.Where(f =>!IsExcluded(project.ExcludedFiles, project.CurrentDirectory.MakeRelativePath(f).ToAvalonPath()) && f != project.Location);

            foreach (var file in files)
            {
                var sourceFile = File.FromPath(project, folder, file.ToPlatformPath());
                project.SourceFiles.InsertSorted(sourceFile);
                folder.Items.InsertSorted(sourceFile);
            }
        }
        public FolderViewModel(IProjectFolder folder, IProjectExplorerItemViewModelFactory factory,
                               IAddContextMenuItemFactory addContextMenuItemFactory) : base(folder.FolderName)
        {
            _folder  = folder;
            _factory = factory;

            UpdateItems(_factory.Create(_folder.Folders, _folder.Files));

            ContextMenuItems.Add(addContextMenuItemFactory.Create(folder));

            folder.FolderAdded += OnFolderItemsChanged;
            folder.FileAdded   += OnFolderItemsChanged;
        }
        public void BuildProjTree()
        {
            projViewer.Items.Clear();
            //projViewer.TreeViewNodeSorter = new NodeSorter();
            IProjectFolder folder = projectService.CurrentProject.MainFolder;

            RecurseAddNodes(folder, null);
            if (projViewer.Items.Count > 0)
            {
                (projViewer.Items[0] as TreeViewItem).ExpandSubtree();
            }
            //projViewer.Sort();
        }
        private void RecurseAddNodes(IProjectFolder folder, TreeViewItem parentNode)
        {
            var nodeAdded = AddFolder(folder, parentNode);

            foreach (IProjectFolder subFolder in folder.Folders)
            {
                RecurseAddNodes(subFolder, nodeAdded);
            }
            foreach (IProjectFile file in folder.Files)
            {
                AddFile(file, nodeAdded);
            }
        }
        public static void PopulateFiles(FileSystemProject project, IProjectFolder folder)
        {
            var files = Directory.EnumerateFiles(folder.Location);

            files = files.Where(f => !IsExcluded(project.ExcludedFiles, project.CurrentDirectory.MakeRelativePath(f).ToAvalonPath()) && f != project.Location);

            foreach (var file in files)
            {
                var sourceFile = File.FromPath(project, folder, file.ToPlatformPath().NormalizePath());
                project.SourceFiles.InsertSorted(sourceFile);
                folder.Items.InsertSorted(sourceFile);
            }
        }
Beispiel #33
0
        private static string CalculateNamespaceForProjectFromRootFolder(
            [CanBeNull] IProject project, IProjectFolder rootFolder, LanguageService languageService)
        {
            if (project == null || !rootFolder.IsLinked || rootFolder.Path == null)
            {
                return(null);
            }

            var calculatedNamespace = project.GetData(ourCalculatedDefaultNamespaceKey);

            if (calculatedNamespace != null)
            {
                return(calculatedNamespace);
            }

            var location             = rootFolder.Path.ReferencedFolderPath;
            var packageJsonDirectory = FileSystemUtil.TryGetDirectoryNameOfFileAbove(location, "package.json");

            if (packageJsonDirectory != null)
            {
                var path = location.MakeRelativeTo(packageJsonDirectory);

                // MAKE SURE TO KEEP UP TO DATE WITH THE RULES IN NamespaceProviderProjectSettingsProvider
                if (path.StartsWith("Runtime/Scripts"))
                {
                    path = path.RemovePrefix("Runtime/Scripts");
                }
                else if (path.StartsWith("Scripts/Runtime"))
                {
                    path = path.RemovePrefix("Scripts/Runtime");
                }
                else if (path.StartsWith("Runtime"))
                {
                    path = path.RemovePrefix("Runtime");
                }
                else if (path.StartsWith("Scripts"))
                {
                    path = path.RemovePrefix("Scripts");
                }

                foreach (var pathComponent in path.Components)
                {
                    var name = NamespaceFolderUtil.MakeValidQualifiedName(pathComponent.ToString(), languageService);
                    calculatedNamespace = calculatedNamespace.IsNullOrEmpty() ? name : $"{calculatedNamespace}.{name}";
                }
            }

            project.PutData(ourCalculatedDefaultNamespaceKey, calculatedNamespace);

            return(calculatedNamespace);
        }
        protected IFile GetFile(string testSrc, IProjectFolder project)
        {
            var item = (IProjectFile) project.GetSubItem(testSrc);
            Assert.NotNull(item);

            IPsiSourceFile sourceFile = item.ToSourceFile();

            Assert.IsNotNull(sourceFile);

            Assert.True(sourceFile.IsValid());

            IFile file = sourceFile.EnumeratePsiFiles().First();
            return file;
        }
		public async Task Generate(IProjectFolder folder)
		{
			await Task.Factory.StartNew(async () =>
			{
				var name = _settings.ClassName;

				var sourceTemplate = new CPlusPlusClassTemplate(name, _settings.GenerateHeader);
				var headerTemplate = new CPlusPlusClassHeaderTemplate(name);

				if (_settings.GenerateHeader)
				{
					await SourceFile.Create(folder, $"{(name.Contains('.') ? name : name + ".h")}", headerTemplate.TransformText());
				}

				if (_settings.GenerateClass)
				{
                    await SourceFile.Create(folder, $"{name}.cpp", sourceTemplate.TransformText());
				}
			});
		}
        public static IProjectFolder GetSubFolders(FileSystemProject project, IProjectFolder parent, string path)
        {
            var result = new StandardProjectFolder(path);

            var folders = Directory.GetDirectories(path);

            if (folders.Count() > 0)
            {                
                foreach (var folder in folders.Where(f => !IsExcluded(project.ExcludedFiles, project.CurrentDirectory.MakeRelativePath(f).ToAvalonPath())))
                {
                    result.Items.InsertSorted(GetSubFolders(project, result, folder));
                }
            }

            PopulateFiles(project, result);

            project.Folders.InsertSorted(result);
            result.Parent = parent;
            result.Project = project;

            return result;
        }
 public abstract int CompareTo(IProjectFolder other);
 public abstract void ExcludeFolder(IProjectFolder folder);
Beispiel #39
0
 public static File FromPath(IProject project, IProjectFolder parent, string filePath)
 {
     return new File { Project = project, Parent = parent, FilePath = filePath.ToPlatformPath() };
 }
 public static string TryGetSymbolFromOperand(IProjectFolder folder, string operand)
  {
      var programFolder = folder.Parent as S7ProgrammFolder;
      if(programFolder == null) return null;
      if (programFolder.SymbolTable == null) return null;
      var ste = programFolder.SymbolTable.GetEntryFromOperand(operand);
      return ste == null ? null : ste.Symbol;
  }
 public override void ExcludeFolder(IProjectFolder folder)
 {
     throw new NotImplementedException();
 }
 public override int CompareTo(IProjectFolder other)
 {
     return Location.CompareFilePath(other.Location);
 }
Beispiel #43
0
 public void ExcludeFolder(IProjectFolder folder)
 {
     Project.ExcludeFolder(folder);
 }
 public static string TryGetOperandFromSymbol(IProjectFolder folder, string symbol)
 {
     var programFolder = folder.Parent as S7ProgrammFolder;
     if (programFolder == null) return null;
     if (programFolder.SymbolTable == null) return null;
     var o = symbol.Replace("\"", "");
     var ste = programFolder.SymbolTable.GetEntryFromSymbol(o);
     return ste == null ? null : ste.Operand;
 }
        private void RemoveFiles(CPlusPlusProject project, IProjectFolder folder)
        {
            foreach (var item in folder.Items)
            {
                if (item is IProjectFolder)
                {
                    RemoveFiles(project, item as IProjectFolder);
                    project.Folders.Remove(item as IProjectFolder);
                }

                if (item is ISourceFile)
                {
                    project.SourceFiles.Remove(item as ISourceFile);
                }
            }
        }
        public override void ExcludeFolder(IProjectFolder folder)
        {
            folder.Parent.Items.Remove(folder);

            ExcludedFiles.Add(folder.Project.CurrentDirectory.MakeRelativePath(folder.Location).ToAvalonPath());

            RemoveFiles(this, folder);

            Save();
        }
Beispiel #47
0
        /// <summary>
        /// 移动项到文件夹
        /// </summary>
        public static bool MoveItem(IProjectItem item, IProjectFolder directory)
        {
            string newName = Path.Combine(directory.FileName, item.Name);

            if (FileService.RenameFile(item.FileName, newName, item is IProjectFolder))
            {
                return true;
            }

            return false;
        }
        public void RemoveFolder(IProjectFolder folder)
        {
            folder.Parent.Items.Remove(folder);
            RemoveFiles(this, folder);

            Folders.Remove(folder);
        }