Beispiel #1
0
        public void OnBuildProjConfigBegin(string projectName, string projectConfig, string platform, string solutionConfig)
        {
            if (currentBuildAction != vsBuildAction.vsBuildActionBuild &&
                currentBuildAction != vsBuildAction.vsBuildActionRebuildAll)
            {
                return;     // Don't do anything, if we're not building.
            }

            Project project = null;

            foreach (var p in HelperFunctions.ProjectsInSolution(dte))
            {
                if (p.UniqueName == projectName)
                {
                    project = p;
                    break;
                }
            }
            if (project == null || !HelperFunctions.IsQtProject(project))
            {
                return;
            }

            if (QtProject.GetFormatVersion(project) >= Resources.qtMinFormatVersion_Settings)
            {
                return;
            }

            var qtpro          = QtProject.Create(project);
            var versionManager = QtVersionManager.The();
            var qtVersion      = versionManager.GetProjectQtVersion(project, platform);

            if (qtVersion == null)
            {
                Messages.DisplayCriticalErrorMessage(SR.GetString("ProjectQtVersionNotFoundError", projectName, projectConfig, platform));
                dte.ExecuteCommand("Build.Cancel", "");
                return;
            }

            if (!QtVSIPSettings.GetDisableAutoMocStepsUpdate())
            {
                if (qtpro.ConfigurationRowNamesChanged)
                {
                    qtpro.UpdateMocSteps(QtVSIPSettings.GetMocDirectory(project));
                }
            }

            // Solution config is given to function to get QTDIR property
            // set correctly also during batch build
            qtpro.SetQtEnvironment(qtVersion, solutionConfig, true);
            if (QtVSIPSettings.GetLUpdateOnBuild(project))
            {
                Translation.RunlUpdate(project);
            }
        }
Beispiel #2
0
        private void execHandler(object sender, EventArgs e)
        {
            var command = sender as OleMenuCommand;

            if (command == null)
            {
                return;
            }

            switch (command.CommandID.ID)
            {
            case lUpdateOnItemId:
                Translation.RunlUpdate(HelperFunctions.GetSelectedFiles(Vsix.Instance.Dte),
                                       HelperFunctions.GetSelectedQtProject(Vsix.Instance.Dte));
                break;

            case lReleaseOnItemId:
                Translation.RunlRelease(HelperFunctions.GetSelectedFiles(Vsix.Instance.Dte));
                break;
            }
        }
Beispiel #3
0
        private void execHandler(object sender, EventArgs e)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            var command = sender as OleMenuCommand;

            if (command == null)
            {
                return;
            }

            switch (command.CommandID.ID)
            {
            case lUpdateOnItemId:
                Translation.RunlUpdate(HelperFunctions.GetSelectedFiles(QtVsToolsPackage.Instance.Dte));
                break;

            case lReleaseOnItemId:
                Translation.RunlRelease(HelperFunctions.GetSelectedFiles(QtVsToolsPackage.Instance.Dte));
                break;
            }
        }
Beispiel #4
0
        private void execHandler(object sender, EventArgs e)
        {
            var command = sender as OleMenuCommand;

            if (command == null)
            {
                return;
            }

            switch (command.CommandID.ID)
            {
            case lUpdateOnSolutionId:
                Translation.RunlUpdate(Vsix.Instance.Dte.Solution);
                break;

            case lReleaseOnSolutionId:
                Translation.RunlRelease(Vsix.Instance.Dte.Solution);
                break;

            case ChangeSolutionQtVersionId:
                var newQtVersion = string.Empty;
                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 = Vsix.Instance.Dte.Solution.SolutionBuild
                                  .ActiveConfiguration as SolutionConfiguration2;
                    currentPlatform = config2.PlatformName;
                } catch { }
                if (string.IsNullOrEmpty(currentPlatform))
                {
                    return;
                }

                var dte = Vsix.Instance.Dte;
                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);
                        qtProject.ChangeQtVersion(OldQtVersion, newQtVersion, ref created);
                    }
                }
                QtVersionManager.The().SaveSolutionQtVersion(dte.Solution, newQtVersion);
                break;
            }
        }
Beispiel #5
0
        private void execHandler(object sender, EventArgs e)
        {
            var command = sender as OleMenuCommand;

            if (command == null)
            {
                return;
            }

            switch ((CommandId)command.CommandID.ID)
            {
            case CommandId.ImportPriFileProjectId:
                ExtLoader.ImportPriFile(HelperFunctions.GetSelectedQtProject(Vsix.Instance.Dte));
                break;

            case CommandId.ExportPriFileProjectId:
                ExtLoader.ExportPriFile();
                break;

            case CommandId.ExportProFileProjectId:
                ExtLoader.ExportProFile();
                break;

            case CommandId.CreateNewTsFileProjectId:
                Translation.CreateNewTranslationFile(HelperFunctions.GetSelectedQtProject(Vsix
                                                                                          .Instance.Dte));
                break;

            case CommandId.lUpdateOnProjectId:
                Translation.RunlUpdate(HelperFunctions.GetSelectedQtProject(Vsix.Instance.Dte));
                break;

            case CommandId.lReleaseOnProjectId:
                Translation.RunlRelease(HelperFunctions.GetSelectedQtProject(Vsix.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(Vsix
                                                                                         .Instance.Dte));
                }
            }
            break;

            case CommandId.QtProjectSettingsProjectId:
            {
                var pro = HelperFunctions.GetSelectedQtProject(Vsix.Instance.Dte);
                if (pro != null)
                {
                    using (var formProjectQtSettings = new FormProjectQtSettings()) {
                        formProjectQtSettings.SetProject(pro);
                        formProjectQtSettings.StartPosition = FormStartPosition.CenterParent;
                        var ww = new MainWinWrapper(Vsix.Instance.Dte);
                        formProjectQtSettings.ShowDialog(ww);
                    }
                }
                else
                {
                    MessageBox.Show(SR.GetString("NoProjectOpened"));
                }
            }
            break;

            case CommandId.ChangeProjectQtVersionProjectId:
            {
                var pro = HelperFunctions.GetSelectedQtProject(Vsix.Instance.Dte);
                if (HelperFunctions.IsQMakeProject(pro))
                {
                    using (var formChangeQtVersion = new FormChangeQtVersion()) {
                        formChangeQtVersion.UpdateContent(ChangeFor.Project);
                        var ww = new MainWinWrapper(Vsix.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.ProjectAddNewQtClassProjectId:
            {
                try {
                    var project = HelperFunctions.GetSelectedProject(Vsix.Instance.Dte);
                    if (!HelperFunctions.IsQtProject(project))
                    {
                        return;
                    }

                    var vcProject = project.Object as VCProject;
                    if (vcProject == null)
                    {
                        return;
                    }

                    var loop = true;
                    do
                    {
                        var classWizard = new AddClassWizard();
                        loop = classWizard.Run(Vsix.Instance.Dte, vcProject.Name,
                                               vcProject.ProjectDirectory) == WizardResult.Exception;
                    } while (loop);
                } catch {
                    // Deliberately ignore any kind of exception but close the dialog.
                }
            }
            break;
            }
        }
Beispiel #6
0
        public void ProjectItemsEvents_ItemAdded(ProjectItem projectItem)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            var project = HelperFunctions.GetSelectedQtProject(QtVsToolsPackage.Instance.Dte);
            var qtPro   = QtProject.Create(project);

            if (!HelperFunctions.IsQtProject(project))
            {
                return;
            }

            var vcFile = GetVCFileFromProject(projectItem.Name, qtPro.VCProject);

            if (vcFile == null)
            {
                return;
            }

            try {
                if (HelperFunctions.IsSourceFile(vcFile.Name))
                {
                    if (vcFile.Name.StartsWith("moc_", StringComparison.OrdinalIgnoreCase))
                    {
                        return;
                    }
                    if (vcFile.Name.StartsWith("qrc_", StringComparison.OrdinalIgnoreCase))
                    {
                        // Do not use precompiled headers with these files
                        QtProject.SetPCHOption(vcFile, pchOption.pchNone);
                        return;
                    }
                    var pcHeaderThrough = qtPro.GetPrecompiledHeaderThrough();
                    if (pcHeaderThrough != null)
                    {
                        var pcHeaderCreator = pcHeaderThrough.Remove(pcHeaderThrough.LastIndexOf('.')) + ".cpp";
                        if (vcFile.Name.EndsWith(pcHeaderCreator, StringComparison.OrdinalIgnoreCase) &&
                            HelperFunctions.CxxFileContainsNotCommented(vcFile, "#include \"" + pcHeaderThrough + "\"", StringComparison.OrdinalIgnoreCase, false))
                        {
                            //File is used to create precompiled headers
                            QtProject.SetPCHOption(vcFile, pchOption.pchCreateUsingSpecific);
                            return;
                        }
                    }
                    if (HelperFunctions.HasQObjectDeclaration(vcFile))
                    {
                        if (!qtPro.IsQtMsBuildEnabled())
                        {
                            HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
                        }
                        qtPro.AddMocStep(vcFile);
                    }
                }
                else if (HelperFunctions.IsHeaderFile(vcFile.Name))
                {
                    if (vcFile.Name.StartsWith("ui_", StringComparison.OrdinalIgnoreCase))
                    {
                        return;
                    }
                    if (HelperFunctions.HasQObjectDeclaration(vcFile))
                    {
                        if (!qtPro.IsQtMsBuildEnabled())
                        {
                            HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
                        }
                        qtPro.AddMocStep(vcFile);
                    }
                }
                else if (HelperFunctions.IsUicFile(vcFile.Name))
                {
                    if (!qtPro.IsQtMsBuildEnabled())
                    {
                        HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
                    }
                    qtPro.AddUic4BuildStep(vcFile);
                    QtProjectIntellisense.Refresh(project);
                }
                else if (HelperFunctions.IsQrcFile(vcFile.Name))
                {
                    if (!qtPro.IsQtMsBuildEnabled())
                    {
                        HelperFunctions.EnsureCustomBuildToolAvailable(projectItem);
                    }
                    qtPro.UpdateRccStep(vcFile, null);
                }
                else if (HelperFunctions.IsTranslationFile(vcFile.Name))
                {
                    Translation.RunlUpdate(vcFile);
                }
            } catch { }
        }
        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;
            }
        }
Beispiel #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;
            }
        }