//~ Methods .......................................................... // ------------------------------------------------------ public int OnAfterAddDirectoriesEx(int cProjects, int cDirectories, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { CxxTestPackage.Instance.TryToRefreshTestSuitesWindow(); return VSConstants.S_OK; }
int IVsTrackProjectDocumentsEvents2.OnAfterAddDirectoriesEx(int cProjects, int cDirectories, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { return VSConstants.S_OK; }
/// <summary> /// Notify the environment about a folder just added /// </summary> internal void OnFolderAdded(string folder, VSADDDIRECTORYFLAGS flag) { if ((this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerTrackerEvents) == 0) { ErrorHandler.ThrowOnFailure(this.GetIVsTrackProjectDocuments2().OnAfterAddDirectoriesEx( this.projectMgr.GetOuterInterface <IVsProject>(), 1, new string[1] { folder }, new VSADDDIRECTORYFLAGS[1] { flag })); } }
public int OnAfterAddDirectoriesEx(int cProjects, int cDirectories, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { var args = new PostProjectAddDirectoriesEventArgs(this.events); //VSQUERYADDFILERESULTS.VSQUERYADDFILERESULTS_AddOK; //VSQUERYADDFILERESULTS.VSQUERYADDFILERESULTS_AddNotOK; this.events.TriggerPostProjectAddDirectories(args); return VSConstants.S_OK; }
public void NotifyAddDirectory(IVsProject project, string[] directories) { VSADDDIRECTORYFLAGS[] addFlags = new VSADDDIRECTORYFLAGS[directories.Length]; for (int i = 0; i < directories.Length; i++) { addFlags[i] = VSADDDIRECTORYFLAGS.VSADDDIRECTORYFLAGS_NoFlags; } _eventSink.OnAfterAddDirectoriesEx( 1, directories.Length, new[] { project }, new[] { 0 }, directories, addFlags); }
public void NotifyAddDirectory(IVsProject project, string[] directories) { var addFlags = new VSADDDIRECTORYFLAGS[directories.Length]; for (int i = 0; i < directories.Length; i++) { addFlags[i] = VSADDDIRECTORYFLAGS.VSADDDIRECTORYFLAGS_NoFlags; } _eventSink.OnAfterAddDirectoriesEx( 1, directories.Length, new[] { project }, new[] { 0 }, directories, addFlags); }
public virtual int OnAfterAddDirectoriesEx(int cProjects, int cDirectories, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { return VSConstants.E_NOTIMPL; }
public int OnAfterAddDirectoriesEx(int cProjects, int cDirectories, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { return 0; }
public int OnAfterAddDirectoriesEx(IVsProject pProject, int cDirectories, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { return VSConstants.S_OK; }
/// We subscribes to IVsTrackProjectDocumentsEvents and trigger the /// corresponding event once per file per event. /// We filters the events to only reports those related to our project. /// This is NOT required for flavoring, but simplify the work the /// derived classes have to do when subscribing to these events int IVsTrackProjectDocumentsEvents2.OnAfterAddDirectoriesEx(int cProjects, int cDirectories, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { GenerateEvents(rgpProjects, rgFirstIndices, rgpszMkDocuments, DirectoryAdded, new ProjectDocumentsChangeEventArgs()); return NativeMethods.S_OK; }
/// <summary> /// Called when a directory is added to a project /// </summary> /// <param name="project">The project.</param> /// <param name="directoryname">The directoryname.</param> /// <param name="flags">The flags.</param> internal void OnProjectDirectoryAdded(IVsSccProject2 project, string directoryname, VSADDDIRECTORYFLAGS flags) { SccProjectData data; if (!_projectMap.TryGetValue(project, out data)) return; // Not managed by us // Add a directory like a folder but with an ending '\' data.AddPath(GitTools.GetNormalizedFullPath(directoryname).TrimEnd('\\') + '\\'); if (!IsActive) return; if (!data.IsWebSite) { // Do nothing } else { // Websites don't contain a real file mapping; reload to load new files // and directories recursively data.Reload(); } }
public int OnAfterAddDirectoriesEx(IVsProject pProject, int cDirectories, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { throw new NotImplementedException(); }
/// <summary> /// /// </summary> /// <param name="cProjects"></param> /// <param name="cDirectories"></param> /// <param name="rgpProjects"></param> /// <param name="rgFirstIndices"></param> /// <param name="rgpszMkDocuments"></param> /// <param name="rgFlags"></param> /// <returns></returns> /// <remarks>Deny a query only if allowing the operation would compromise your stable state</remarks> public int OnAfterAddDirectoriesEx(int cProjects, int cDirectories, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { if (rgpProjects == null || rgpszMkDocuments == null) return VSConstants.E_POINTER; for (int i = 0; i < cDirectories; i++) { string dir = rgpszMkDocuments[i]; if (string.IsNullOrEmpty(dir) || !SvnItem.IsValidPath(dir)) continue; dir = SvnTools.GetNormalizedFullPath(dir); StatusCache.MarkDirty(dir); SvnItem item = StatusCache[dir]; if (!item.Exists || !item.IsDirectory || !SvnTools.IsManagedPath(dir)) continue; if ((DateTime.UtcNow - GetCreated(item)) > new TimeSpan(0, 1, 0)) continue; // Directory is older than one minute.. Not just copied using (SvnSccContext svn = new SvnSccContext(Context)) { // Ok; we have a 'new' directory here.. Lets check if VS broke the subversion working copy SvnWorkingCopyEntryEventArgs entry = svn.SafeGetEntry(dir); if (entry != null && entry.NodeKind == SvnNodeKind.Directory) // Entry exists, valid dir continue; // VS Added a versioned dir below our project -> Unversion the directory to allow adding files // Don't unversion the directory if the parent is not versioned string parentDir = SvnTools.GetNormalizedDirectoryName(dir); if (parentDir == null || !SvnTools.IsManagedPath(parentDir)) continue; svn.UnversionRecursive(dir); } } for (int iProject = 0, iDir=0; (iProject < cProjects) && (iDir < cDirectories); iProject++) { int iLastDirectoryThisProject = (iProject < cProjects - 1) ? rgFirstIndices[iProject + 1] : cDirectories; IVsSccProject2 sccProject = rgpProjects[iProject] as IVsSccProject2; bool track = SccProvider.TrackProjectChanges(sccProject); for (; iDir < iLastDirectoryThisProject; iDir++) { if (!track) continue; string dir = rgpszMkDocuments[iDir]; if (string.IsNullOrEmpty(dir) || !SvnItem.IsValidPath(dir)) continue; dir = SvnTools.GetNormalizedFullPath(dir); if (sccProject != null) SccProvider.OnProjectDirectoryAdded(sccProject, dir, rgFlags[iDir]); } } return VSConstants.S_OK; }
public int OnAfterAddDirectoriesEx(int cProjects, int cDirectories, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { foreach (var dir in rgpszMkDocuments) { DocumentEvents.Add("OnAfterAddDirectoriesEx " + dir); CodeDocumentEvents.Add("OnAfterAddDirectoriesEx(" + GetRelativePath(rgpProjects[0], dir) + ")"); } return VSConstants.S_OK; }
/// <summary> /// Notify the environment about a folder just added /// </summary> internal void OnFolderAdded(string folder, VSADDDIRECTORYFLAGS flag) { if ((this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerTrackerEvents) == 0) { ErrorHandler.ThrowOnFailure(this.GetIVsTrackProjectDocuments2().OnAfterAddDirectoriesEx( projectMgr.GetOuterInterface<IVsProject>(), 1, new string[1] { folder }, new VSADDDIRECTORYFLAGS[1] { flag })); } }
/// We subscribes to IVsTrackProjectDocumentsEvents and trigger the /// corresponding event once per file per event. /// We filters the events to only reports those related to our project. /// This is NOT required for flavoring, but simplify the work the /// derived classes have to do when subscribing to these events int IVsTrackProjectDocumentsEvents2.OnAfterAddDirectoriesEx(int cProjects, int cDirectories, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSADDDIRECTORYFLAGS[] rgFlags) { _flavoredProjectBase.GenerateEvents(rgpProjects, rgFirstIndices, rgpszMkDocuments, _flavoredProjectBase.DirectoryAdded, new ProjectDocumentsChangeEventArgs()); return VSConstants.S_OK; }