public void buildEvents_OnBuildDone(vsBuildScope Scope, vsBuildAction Action) { foreach (var buildDoneEvent in buildDoneEvents) { string projectName = buildDoneEvent[0]; string configId = buildDoneEvent[1]; Project project = null; foreach (var p in HelperFunctions.ProjectsInSolution(dte)) { if (p.UniqueName == projectName) { project = p; break; } } if (project == null || !HelperFunctions.IsQtProject(project)) { continue; } #if VS2017 || VS2019 QtProjectTracker.RefreshIntelliSense(project, configId); #endif } buildDoneEvents.Clear(); }
void SolutionEvents_Opened() { foreach (var p in HelperFunctions.ProjectsInSolution(Vsix.Instance.Dte)) { if (HelperFunctions.IsQtProject(p)) { InitializeVCProject(p); #if VS2017 || VS2019 QtProjectTracker.AddProject(p); #endif } } }
void SolutionEvents_ProjectAdded(Project project) { ThreadHelper.ThrowIfNotOnUIThread(); if (HelperFunctions.IsQMakeProject(project)) { InitializeVCProject(project); QtProjectTracker.Add(project); var vcpro = project.Object as VCProject; VCFilter filter = null; foreach (VCFilter f in vcpro.Filters as IVCCollection) { if (f.Name == Filters.HeaderFiles().Name) { filter = f; break; } } if (filter != null) { foreach (VCFile file in filter.Files as IVCCollection) { foreach (VCFileConfiguration config in file.FileConfigurations as IVCCollection) { var tool = new QtCustomBuildTool(config); var commandLine = tool.CommandLine; if (!string.IsNullOrEmpty(commandLine) && commandLine.Contains("moc.exe")) { var matches = Regex.Matches(commandLine, "[^ ^\n]+moc\\.(exe\"|exe)"); string qtDir; if (matches.Count != 1) { var vm = QtVersionManager.The(); qtDir = vm.GetInstallPath(vm.GetDefaultVersion()); } else { qtDir = matches[0].ToString().Trim('"'); qtDir = qtDir.Remove(qtDir.LastIndexOf('\\')); qtDir = qtDir.Remove(qtDir.LastIndexOf('\\')); } qtDir = qtDir.Replace("_(QTDIR)", "$(QTDIR)"); HelperFunctions.SetDebuggingEnvironment(project, "PATH=" + Path.Combine(qtDir, "bin") + ";$(PATH)", false, config.Name); } } } } QtProjectIntellisense.Refresh(project); } }
public void SolutionEvents_Opened() { ThreadHelper.ThrowIfNotOnUIThread(); QtProjectTracker.SolutionPath = QtVsToolsPackage.Instance.Dte.Solution.FullName; foreach (var p in HelperFunctions.ProjectsInSolution(QtVsToolsPackage.Instance.Dte)) { if (HelperFunctions.IsQtProject(p)) { InitializeVCProject(p); QtProjectTracker.Add(p); } } }
protected override void OnStart(Process process) { ThreadHelper.ThrowIfNotOnUIThread(); base.OnStart(process); var document = VsShell.GetDocument(Context, ItemId); if (document == null) { return; } var project = document.ProjectItem?.ContainingProject; if (project == null || !QtProjectTracker.IsTracked(project.FullName)) { return; } string filePath = document.FullName; string[] itemId = new[] { document.ProjectItem?.Name }; var lastWriteTime = File.GetLastWriteTime(filePath); _ = Task.Run(() => { while (!process.WaitForExit(1000)) { var latestWriteTime = File.GetLastWriteTime(filePath); if (lastWriteTime != latestWriteTime) { lastWriteTime = latestWriteTime; QtProjectIntellisense.Refresh(project, selectedFiles: itemId); } } if (lastWriteTime != File.GetLastWriteTime(filePath)) { QtProjectIntellisense.Refresh(project, selectedFiles: itemId); } }); }
void SolutionEvents_AfterClosing() { QtProject.ClearInstances(); QtProjectTracker.Reset(); QtProjectTracker.SolutionPath = string.Empty; }
private void execHandler(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); var command = sender as OleMenuCommand; if (command == null) { return; } var dte = QtVsToolsPackage.Instance.Dte; switch (command.CommandID.ID) { case (int)CommandId.lUpdateOnSolutionId: Translation.RunlUpdate(QtVsToolsPackage.Instance.Dte.Solution); break; case (int)CommandId.lReleaseOnSolutionId: Translation.RunlRelease(QtVsToolsPackage.Instance.Dte.Solution); break; case (int)CommandId.ChangeSolutionQtVersionId: string newQtVersion = null; using (var formChangeQtVersion = new FormChangeQtVersion()) { formChangeQtVersion.UpdateContent(ChangeFor.Solution); if (formChangeQtVersion.ShowDialog() != DialogResult.OK) { return; } newQtVersion = formChangeQtVersion.GetSelectedQtVersion(); } if (newQtVersion == null) { return; } string currentPlatform = null; try { var config2 = QtVsToolsPackage.Instance.Dte.Solution.SolutionBuild .ActiveConfiguration as SolutionConfiguration2; currentPlatform = config2.PlatformName; } catch { } if (string.IsNullOrEmpty(currentPlatform)) { return; } foreach (var project in HelperFunctions.ProjectsInSolution(dte)) { if (HelperFunctions.IsQtProject(project)) { var OldQtVersion = QtVersionManager.The().GetProjectQtVersion(project, currentPlatform); if (OldQtVersion == null) { OldQtVersion = QtVersionManager.The().GetDefaultVersion(); } var created = false; var qtProject = QtProject.Create(project); if (qtProject.PromptChangeQtVersion(OldQtVersion, newQtVersion)) { qtProject.ChangeQtVersion(OldQtVersion, newQtVersion, ref created); } } } QtVersionManager.The().SaveSolutionQtVersion(dte.Solution, newQtVersion); break; case (int)CommandId.SolutionConvertToQtMsBuild: { QtMsBuildConverter.SolutionToQtMsBuild(); } break; case (int)CommandId.SolutionEnableProjectTracking: { foreach (var project in HelperFunctions.ProjectsInSolution(dte)) { if (HelperFunctions.IsQtProject(project)) { QtProjectTracker.Get(project, project.FullName); } } } break; } }
private void execHandler(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); var command = sender as OleMenuCommand; if (command == null) { return; } switch ((CommandId)command.CommandID.ID) { case CommandId.ImportPriFileProjectId: ExtLoader.ImportPriFile(HelperFunctions.GetSelectedQtProject(QtVsToolsPackage.Instance.Dte)); break; case CommandId.ExportPriFileProjectId: ExtLoader.ExportPriFile(); break; case CommandId.ExportProFileProjectId: ExtLoader.ExportProFile(); break; case CommandId.lUpdateOnProjectId: Translation.RunlUpdate(HelperFunctions.GetSelectedQtProject(QtVsToolsPackage.Instance.Dte)); break; case CommandId.lReleaseOnProjectId: Translation.RunlRelease(HelperFunctions.GetSelectedQtProject(QtVsToolsPackage.Instance.Dte)); break; case CommandId.ConvertToQtProjectId: case CommandId.ConvertToQmakeProjectId: { var caption = SR.GetString("ConvertTitle"); var text = SR.GetString("ConvertConfirmation"); if (MessageBox.Show(text, caption, MessageBoxButtons.YesNo) == DialogResult.Yes) { HelperFunctions.ToggleProjectKind(HelperFunctions.GetSelectedProject(QtVsToolsPackage .Instance.Dte)); } } break; case CommandId.QtProjectSettingsProjectId: { var pro = HelperFunctions.GetSelectedQtProject(QtVsToolsPackage.Instance.Dte); int projectVersion = QtProject.GetFormatVersion(pro); if (projectVersion >= Resources.qtMinFormatVersion_Settings) { QtVsToolsPackage.Instance.Dte.ExecuteCommand("Project.Properties"); } else if (pro != null) { using (var formProjectQtSettings = new FormProjectQtSettings()) { formProjectQtSettings.SetProject(pro); formProjectQtSettings.StartPosition = FormStartPosition.CenterParent; var ww = new MainWinWrapper(QtVsToolsPackage.Instance.Dte); formProjectQtSettings.ShowDialog(ww); } } else { MessageBox.Show(SR.GetString("NoProjectOpened")); } } break; case CommandId.ChangeProjectQtVersionProjectId: { var pro = HelperFunctions.GetSelectedQtProject(QtVsToolsPackage.Instance.Dte); if (HelperFunctions.IsQMakeProject(pro)) { using (var formChangeQtVersion = new FormChangeQtVersion()) { formChangeQtVersion.UpdateContent(ChangeFor.Project); var ww = new MainWinWrapper(QtVsToolsPackage.Instance.Dte); if (formChangeQtVersion.ShowDialog(ww) == DialogResult.OK) { var qtVersion = formChangeQtVersion.GetSelectedQtVersion(); HelperFunctions.SetDebuggingEnvironment(pro, "PATH=" + QtVersionManager .The().GetInstallPath(qtVersion) + @"\bin;$(PATH)", true); } } } } break; case CommandId.ProjectConvertToQtMsBuild: { QtMsBuildConverter.ProjectToQtMsBuild( HelperFunctions.GetSelectedProject(QtVsToolsPackage.Instance.Dte)); } break; case CommandId.ProjectRefreshIntelliSense: { var selectedProject = HelperFunctions.GetSelectedProject(QtVsToolsPackage.Instance.Dte); var tracker = QtProjectTracker.Get(selectedProject, selectedProject.FullName); QtProjectIntellisense.Refresh(tracker.Project); } break; } }
void IProjectTracker.AddProject(Project project) { ThreadHelper.ThrowIfNotOnUIThread(); QtProjectTracker.Add(project); }
void IProjectTracker.AddProject(Project project) { #if VS2017 || VS2019 QtProjectTracker.AddProject(project); #endif }