Example #1
0
 public int OnQueryAddFiles(IVsProject project, int length, string[] files,
                            VSQUERYADDFILEFLAGS[] rgFlags, VSQUERYADDFILERESULTS[] pSummaryResult,
                            VSQUERYADDFILERESULTS[] rgResults)
 {
     try
     {
         if (files.Any(f => ProjectUtil.IsSliceFileName(f)))
         {
             if (project.IsMSBuildIceBuilderInstalled())
             {
                 for (int i = 0; i < length; ++i)
                 {
                     if (ProjectUtil.IsSliceFileName(files[i]))
                     {
                         if (!ProjectUtil.CheckGenerateFileIsValid(project, files[i]))
                         {
                             rgResults[i]      = VSQUERYADDFILERESULTS.VSQUERYADDFILERESULTS_AddNotOK;
                             pSummaryResult[i] = VSQUERYADDFILERESULTS.VSQUERYADDFILERESULTS_AddNotOK;
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Package.UnexpectedExceptionWarning(ex);
     }
     return(0);
 }
Example #2
0
 public int OnQueryRenameFiles(IVsProject project, int filesLength, string[] oldNames, string[] newNames,
                               VSQUERYRENAMEFILEFLAGS[] rgFlags, VSQUERYRENAMEFILERESULTS[] pSummaryResult,
                               VSQUERYRENAMEFILERESULTS[] rgResults)
 {
     try
     {
         if (project.IsMSBuildIceBuilderInstalled())
         {
             for (int i = 0; i < filesLength; ++i)
             {
                 if (ProjectUtil.IsSliceFileName(newNames[i]))
                 {
                     if (!ProjectUtil.CheckGenerateFileIsValid(project, newNames[i]))
                     {
                         rgResults[i]      = VSQUERYRENAMEFILERESULTS.VSQUERYRENAMEFILERESULTS_RenameNotOK;
                         pSummaryResult[i] = VSQUERYRENAMEFILERESULTS.VSQUERYRENAMEFILERESULTS_RenameNotOK;
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Package.UnexpectedExceptionWarning(ex);
     }
     return(0);
 }
Example #3
0
 public int OnAfterSave(uint docCookie)
 {
     ThreadHelper.JoinableTaskFactory.Run(async() =>
     {
         await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
         try
         {
             if (Package.Instance.AutoBuilding)
             {
                 IVsProject project = null;
                 uint item          = 0;
                 string path        = null;
                 GetDocumentInfo(docCookie, ref project, ref item, ref path);
                 if (ProjectUtil.IsSliceFileName(path) && project.IsMSBuildIceBuilderInstalled())
                 {
                     Package.Instance.QueueProjectsForBuilding(new List <IVsProject>(new IVsProject[] { project }));
                 }
             }
         }
         catch (Exception ex)
         {
             Package.UnexpectedExceptionWarning(ex);
         }
     });
     return(0);
 }
Example #4
0
 public int OnAfterRenameFiles(int projectsLength, int filesLength, IVsProject[] projects, int[] indices,
                               string[] oldNames, string[] newNames, VSRENAMEFILEFLAGS[] rgFlags)
 {
     try
     {
         for (int i = 0; i < projectsLength; ++i)
         {
             IVsProject project = projects[i];
             if (project.IsMSBuildIceBuilderInstalled())
             {
                 int j = indices[i];
                 int k = i < (projectsLength - 1) ? indices[i + 1] : filesLength;
                 for (; j < k; ++j)
                 {
                     string oldPath = oldNames[i];
                     string newPath = newNames[j];
                     if (ProjectUtil.IsSliceFileName(oldPath) || ProjectUtil.IsSliceFileName(newPath))
                     {
                         ProjectUtil.SetupGenerated(project);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Package.UnexpectedExceptionWarning(ex);
     }
     return(0);
 }
Example #5
0
 public int OnQueryRenameFiles(IVsProject project, int filesLength, string[] oldNames, string[] newNames,
                               VSQUERYRENAMEFILEFLAGS[] rgFlags, VSQUERYRENAMEFILERESULTS[] pSummaryResult,
                               VSQUERYRENAMEFILERESULTS[] rgResults)
 {
     ThreadHelper.JoinableTaskFactory.Run(async() =>
     {
         await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
         try
         {
             if (project.IsMSBuildIceBuilderInstalled())
             {
                 for (int i = 0; i < filesLength; ++i)
                 {
                     if (ProjectUtil.IsSliceFileName(newNames[i]))
                     {
                         if (!ProjectUtil.CheckGenerateFileIsValid(project, newNames[i]))
                         {
                             rgResults[i]      = VSQUERYRENAMEFILERESULTS.VSQUERYRENAMEFILERESULTS_RenameNotOK;
                             pSummaryResult[i] = VSQUERYRENAMEFILERESULTS.VSQUERYRENAMEFILERESULTS_RenameNotOK;
                         }
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             Package.UnexpectedExceptionWarning(ex);
         }
     });
     return(0);
 }
Example #6
0
 public int OnAfterRemoveFiles(int projectsLength, int filesLength, IVsProject[] projects, int[] indices,
                               string[] names, VSREMOVEFILEFLAGS[] rgFlags)
 {
     ThreadHelper.JoinableTaskFactory.Run(async() =>
     {
         await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
         try
         {
             for (int i = 0; i < projectsLength; ++i)
             {
                 IVsProject project = projects[i];
                 if (project.IsMSBuildIceBuilderInstalled())
                 {
                     int j = indices[i];
                     int k = i < (projectsLength - 1) ? indices[i + 1] : filesLength;
                     for (; j < k; ++j)
                     {
                         string path = names[i];
                         if (ProjectUtil.IsSliceFileName(path))
                         {
                             ProjectUtil.SetupGenerated(project);
                             break;
                         }
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             Package.UnexpectedExceptionWarning(ex);
         }
     });
     return(0);
 }
Example #7
0
 public int OnAfterAddFilesEx(int projectsLength, int filesLength, IVsProject[] projects, int[] indices,
                              string[] names, VSADDFILEFLAGS[] rgFlags)
 {
     ThreadHelper.JoinableTaskFactory.Run(async() =>
     {
         await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
         try
         {
             for (int i = 0; i < projectsLength; ++i)
             {
                 IVsProject project = projects[i];
                 if (project.IsMSBuildIceBuilderInstalled())
                 {
                     int j = indices[i];
                     int k = i < (projectsLength - 1) ? indices[i + 1] : filesLength;
                     for (; j < k; ++j)
                     {
                         string path = names[i];
                         if (ProjectUtil.IsSliceFileName(path))
                         {
                             //
                             // Ensure the .ice file item has SliceCompile ItemType
                             //
                             var projectItem = project.GetProjectItem(path);
                             if (projectItem != null)
                             {
                                 project.EnsureIsCheckout();
                                 var property = projectItem.Properties.Item("ItemType");
                                 if (property != null && !property.Value.Equals("SliceCompile"))
                                 {
                                     property.Value = "SliceCompile";
                                 }
                             }
                             ProjectUtil.AddGeneratedFiles(project, path);
                             break;
                         }
                     }
                 }
             }
         }
         catch (OperationCanceledException)
         {
             // Ignore, this could happen if the project is reloaded
         }
         catch (Exception ex)
         {
             Package.UnexpectedExceptionWarning(ex);
         }
     });
     return(0);
 }
 public void InitializeProject(IVsProject project)
 {
     if (project.IsMSBuildIceBuilderInstalled())
     {
         if (project.IsCppProject())
         {
             VCUtil.SetupSliceFilter(project.GetDTEProject());
         }
         else
         {
             if (project is IVsAggregatableProject)
             {
                 project.AddProjectFlavorIfNotExists(IceBuilderNewFlavor);
             }
         }
     }
 }
Example #9
0
 public int OnAfterAddFilesEx(int projectsLength, int filesLength, IVsProject[] projects, int[] indices,
                              string[] names, VSADDFILEFLAGS[] rgFlags)
 {
     try
     {
         for (int i = 0; i < projectsLength; ++i)
         {
             IVsProject project = projects[i];
             if (project.IsMSBuildIceBuilderInstalled())
             {
                 int j = indices[i];
                 int k = i < (projectsLength - 1) ? indices[i + 1] : filesLength;
                 for (; j < k; ++j)
                 {
                     string path = names[i];
                     if (ProjectUtil.IsSliceFileName(path))
                     {
                         //
                         // Ensure the .ice file item has SliceCompile ItemType
                         //
                         var projectItem = project.GetProjectItem(path);
                         if (projectItem != null)
                         {
                             project.EnsureIsCheckout();
                             var property = projectItem.Properties.Item("ItemType");
                             if (property != null && !property.Value.Equals("SliceCompile"))
                             {
                                 property.Value = "SliceCompile";
                             }
                         }
                         ProjectUtil.AddGeneratedFiles(project, path);
                         break;
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Package.UnexpectedExceptionWarning(ex);
     }
     return(0);
 }
Example #10
0
 public int OnAfterSave(uint docCookie)
 {
     try
     {
         if (Package.Instance.AutoBuilding)
         {
             IVsProject project = null;
             uint       item    = 0;
             string     path    = null;
             GetDocumentInfo(docCookie, ref project, ref item, ref path);
             if (ProjectUtil.IsSliceFileName(path) && project.IsMSBuildIceBuilderInstalled())
             {
                 Package.Instance.QueueProjectsForBuilding(new List <IVsProject>(new IVsProject[] { project }));
             }
         }
     }
     catch (Exception ex)
     {
         Package.UnexpectedExceptionWarning(ex);
     }
     return(0);
 }