Example #1
0
        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();
        }
Example #2
0
        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
                }
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
                }
            }
        }
Example #5
0
        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);
                }
            });
        }
Example #6
0
 void SolutionEvents_AfterClosing()
 {
     QtProject.ClearInstances();
     QtProjectTracker.Reset();
     QtProjectTracker.SolutionPath = string.Empty;
 }
Example #7
0
        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;
            }
        }
Example #8
0
        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;
            }
        }
Example #9
0
 void IProjectTracker.AddProject(Project project)
 {
     ThreadHelper.ThrowIfNotOnUIThread();
     QtProjectTracker.Add(project);
 }
Example #10
0
        void IProjectTracker.AddProject(Project project)
        {
#if VS2017 || VS2019
            QtProjectTracker.AddProject(project);
#endif
        }