예제 #1
0
        public int OnAfterRenameDirectories(int cProjects, int cDirs, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgszMkOldNames, string[] rgszMkNewNames, VSRENAMEDIRECTORYFLAGS[] rgFlags)
        {
            if (rgszMkNewNames == null || rgpProjects == null || rgszMkOldNames == null)
                return VSConstants.E_POINTER;

            int iDirectory = 0;

            for (int i = 0; i < cDirs; i++)
            {
                string s = rgszMkOldNames[i];
                if (!string.IsNullOrEmpty(s))
                    StatusCache.MarkDirty(s);

                s = rgszMkNewNames[i];
                if (!string.IsNullOrEmpty(s))
                    StatusCache.MarkDirty(s);
            }

            for (int iProject = 0; (iProject < cProjects) && (iDirectory < cDirs); iProject++)
            {
                int iLastDirectoryThisProject = (iProject < cProjects - 1) ? rgFirstIndices[iProject + 1] : cDirs;

                IVsSccProject2 sccProject = rgpProjects[iProject] as IVsSccProject2;

                bool track = SccProvider.TrackProjectChanges(sccProject);

                for (; iDirectory < iLastDirectoryThisProject; iDirectory++)
                {
                    if (sccProject == null || !track)
                        continue; // Not handled by our provider

                    SccProvider.OnProjectDirectoryRenamed(sccProject,
                        GitTools.GetNormalizedFullPath(rgszMkOldNames[iDirectory]),
                        GitTools.GetNormalizedFullPath(rgszMkNewNames[iDirectory]), rgFlags[iDirectory]);
                }
            }

            return VSConstants.S_OK;
        }
        /// <summary>
        /// Notifies the environment that directories have been renamed.
        /// </summary>
        /// <param name="oldPaths">The paths to the old directories.</param>
        /// <param name="newPaths">The paths to the new directories.</param>
        public void OnDirectoriesRenamed(string[] oldPaths, string[] newPaths)
        {
            Tracer.VerifyNonNullArgument(oldPaths, "oldPaths");
            Tracer.VerifyNonNullArgument(newPaths, "newPaths");

            if (oldPaths.Length != newPaths.Length)
            {
                throw new ArgumentException("The old and new path arrays must match in size.", "oldPaths");
            }

            int length = oldPaths.Length;

            // If the arrays are zero-length, then there's nothing to do.
            if (length == 0)
            {
                return;
            }

            // Fill in the flags array (since there are no flags yet, we can leave the array at its default value).
            VSRENAMEDIRECTORYFLAGS[] flags = new VSRENAMEDIRECTORYFLAGS[length];
            int hr = this.Tracker.OnAfterRenameDirectories(this.project, length, oldPaths, newPaths, flags);

            NativeMethods.ThrowOnFailure(hr);
        }
 int IVsTrackProjectDocumentsEvents2.OnAfterRenameDirectories(
     int cProjects,
     int cDirs,
     IVsProject[] rgpProjects,
     int[] rgFirstIndices,
     string[] rgszMkOldNames,
     string[] rgszMkNewNames,
     VSRENAMEDIRECTORYFLAGS[] rgFlags)
 {
     return VSConstants.S_OK;
 }
예제 #4
0
 public int OnAfterRenameDirectories(int cProjects, int cDirs, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgszMkOldNames, string[] rgszMkNewNames, VSRENAMEDIRECTORYFLAGS[] rgFlags)
 {
     renaimng_in_progress = false;
     return VSConstants.S_OK;
 }
 public virtual int OnAfterRenameDirectories(int cProjects, int cDirs, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgszMkOldNames, string[] rgszMkNewNames, VSRENAMEDIRECTORYFLAGS[] rgFlags)
 {
     return VSConstants.E_NOTIMPL;
 }
예제 #6
0
파일: Builder.cs 프로젝트: bholl/zeroc-ice
 public int OnAfterRenameDirectories(int cProjects, int cDirs, IVsProject[] rgpProjects, int[] rgFirstIndices,
                                     string[] rgszMkOldNames, string[] rgszMkNewNames,
                                     VSRENAMEDIRECTORYFLAGS[] rgFlags)
 {
     return 0;
 }
예제 #7
0
        void IAnkhSccProviderEvents.OnProjectDirectoryRenamed(IVsSccProject2 sccProject, string oldName, string newName, VSRENAMEDIRECTORYFLAGS vSRENAMEDIRECTORYFLAGS)
        {
            SccProjectData data;

            ProjectMap.EnsureSccProject(sccProject, out data);
            OnProjectDirectoryRenamed(data, oldName, newName);
        }
예제 #8
0
 public int OnAfterRenameDirectories(IVsProject pProject, int cDirs, string[] rgszMkOldNames, string[] rgszMkNewNames, VSRENAMEDIRECTORYFLAGS[] rgFlags) {
     return VSConstants.S_OK;
 }
        /// <summary>
        /// Called when a directory in a project is renamed
        /// </summary>
        /// <param name="project">The SCC project.</param>
        /// <param name="oldName">The old name.</param>
        /// <param name="newName">The new name.</param>
        /// <param name="flags">The flags.</param>
        internal void OnProjectDirectoryRenamed(IVsSccProject2 project, string oldName, string newName, VSRENAMEDIRECTORYFLAGS flags)
        {
            SccProjectData data;
            if (!_projectMap.TryGetValue(project, out data))
                return; // Not managed by us

            if (!IsActive)
                return;

            Debug.Assert(!Directory.Exists(oldName));
            Debug.Assert(Directory.Exists(newName));
            GC.KeepAlive(newName);
            GC.KeepAlive(oldName);
        }
예제 #10
0
 int IVsTrackProjectDocumentsEvents2.OnAfterRenameDirectories(int cProjects, int cDirs, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgszMkOldNames, string[] rgszMkNewNames, VSRENAMEDIRECTORYFLAGS[] rgFlags)
 {
     GenerateEvents(rgpProjects, rgFirstIndices, rgszMkNewNames, DirectoryRenamed, new ProjectDocumentsChangeEventArgs());
     return NativeMethods.S_OK;
 }
 public int OnAfterRenameDirectories(IVsProject pProject, int cDirs, string[] rgszMkOldNames, string[] rgszMkNewNames, VSRENAMEDIRECTORYFLAGS[] rgFlags)
 {
     throw new NotImplementedException();
 }
 public int OnAfterRenameDirectories(int cProjects, int cDirs, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgszMkOldNames, string[] rgszMkNewNames, VSRENAMEDIRECTORYFLAGS[] rgFlags)
 {
     TraceAdviseEvent("OnAfterRenameDirectories", rgszMkOldNames);
     return VSConstants.E_NOTIMPL;
 }
        /// <summary>
        /// Notifies the environment that directories have been renamed.
        /// </summary>
        /// <param name="oldPaths">The paths to the old directories.</param>
        /// <param name="newPaths">The paths to the new directories.</param>
        public void OnDirectoriesRenamed(string[] oldPaths, string[] newPaths)
        {
            Tracer.VerifyNonNullArgument(oldPaths, "oldPaths");
            Tracer.VerifyNonNullArgument(newPaths, "newPaths");

            if (oldPaths.Length != newPaths.Length)
            {
                throw new ArgumentException("The old and new path arrays must match in size.", "oldPaths");
            }

            int length = oldPaths.Length;

            // If the arrays are zero-length, then there's nothing to do.
            if (length == 0)
            {
                return;
            }

            // Fill in the flags array (since there are no flags yet, we can leave the array at its default value).
            VSRENAMEDIRECTORYFLAGS[] flags = new VSRENAMEDIRECTORYFLAGS[length];
            int hr = this.Tracker.OnAfterRenameDirectories(this.project, length, oldPaths, newPaths, flags);
            NativeMethods.ThrowOnFailure(hr);
        }
 public int OnAfterRenameDirectories(int cProjects, int cDirs, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgszMkOldNames, string[] rgszMkNewNames, VSRENAMEDIRECTORYFLAGS[] rgFlags) {
     for (int i = 0; i < rgszMkOldNames.Length; i++) {
         DocumentEvents.Add("OnAfterRenameDirectories " + rgszMkOldNames[i] + " " + rgszMkNewNames[i] + " " + rgFlags[i]);
         CodeDocumentEvents.Add("OnAfterRenameDirectories(" + GetRelativePath(rgpProjects[0], rgszMkOldNames[i]) + ", " + GetRelativePath(rgpProjects[0], rgszMkNewNames[i]) + ", " + GetEnum(rgFlags[i]) + ")");
     }
     return VSConstants.S_OK;
 }
예제 #15
0
 int IVsTrackProjectDocumentsEvents2.OnAfterRenameDirectories(int cProjects, int cDirs, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgszMkOldNames, string[] rgszMkNewNames, VSRENAMEDIRECTORYFLAGS[] rgFlags)
 {
     _flavoredProjectBase.GenerateEvents(rgpProjects, rgFirstIndices, rgszMkNewNames, _flavoredProjectBase.DirectoryRenamed, new ProjectDocumentsChangeEventArgs());
     return VSConstants.S_OK;
 }