| | |
| | | /****************************************************************************
|
| | | **
|
| | | ** Copyright (C) 2016 The Qt Company Ltd.
|
| | | ** Copyright (C) 2022 The Qt Company Ltd.
|
| | | ** Contact: https://www.qt.io/licensing/
|
| | | **
|
| | | ** This file is part of the Qt VS Tools.
|
| | |
| | | **
|
| | | ****************************************************************************/
|
| | |
|
| | | using EnvDTE80;
|
| | | using Microsoft.VisualStudio.Shell;
|
| | | using QtVsTools.Core;
|
| | | using QtVsTools.VisualStudio;
|
| | | using System;
|
| | | using System.ComponentModel.Design;
|
| | | using System.Windows.Forms;
|
| | | using Microsoft.VisualStudio.Shell;
|
| | |
|
| | | namespace QtVsTools
|
| | | {
|
| | | using Core;
|
| | | using QtMsBuild;
|
| | | using VisualStudio;
|
| | |
|
| | | /// <summary>
|
| | | /// Command handler
|
| | |
| | | /// <summary>
|
| | | /// Command menu group (command set GUID).
|
| | | /// </summary>
|
| | | public static readonly Guid SolutionContextMenuGuid = new Guid("6dcda34f-4d22-4d6a-a176-5507069c5a3e");
|
| | | private static readonly Guid SolutionContextMenuGuid = new Guid("6dcda34f-4d22-4d6a-a176-5507069c5a3e");
|
| | |
|
| | | /// <summary>
|
| | | /// Gets the instance of the command.
|
| | | /// </summary>
|
| | | public static QtSolutionContextMenu Instance
|
| | | private static QtSolutionContextMenu Instance
|
| | | {
|
| | | get;
|
| | | private set;
|
| | | set;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// Initializes the singleton instance of the command.
|
| | | /// </summary>
|
| | | /// <param name="package">Owner package, not null.</param>
|
| | | public static void Initialize(Package package)
|
| | | public static void Initialize()
|
| | | {
|
| | | Instance = new QtSolutionContextMenu(package);
|
| | | Instance = new QtSolutionContextMenu();
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// VS Package that provides this command, not null.
|
| | | /// </summary>
|
| | | private readonly Package m_package;
|
| | |
|
| | | /// <summary>
|
| | | /// Command ID.
|
| | |
| | | /// Initializes a new instance of the <see cref="QtMainMenu"/> class.
|
| | | /// Adds our command handlers for menu (commands must exist in the command table file)
|
| | | /// </summary>
|
| | | /// <param name="package">Owner package, not null.</param>
|
| | | private QtSolutionContextMenu(Package package)
|
| | | private QtSolutionContextMenu()
|
| | | {
|
| | | if (package == null)
|
| | | throw new ArgumentNullException("package");
|
| | |
|
| | | m_package = package;
|
| | |
|
| | | var commandService = VsServiceProvider
|
| | | .GetService<IMenuCommandService, OleMenuCommandService>();
|
| | | if (commandService == null)
|
| | |
| | | var command = sender as OleMenuCommand;
|
| | | if (command == null)
|
| | | return;
|
| | | command.Enabled = command.Visible = true;
|
| | |
|
| | | switch (command.CommandID.ID) {
|
| | | case (int)CommandId.ChangeSolutionQtVersionId:
|
| | | var projects = HelperFunctions.ProjectsInSolution(QtVsToolsPackage.Instance.Dte);
|
| | | foreach (var project in projects) {
|
| | | if (!HelperFunctions.IsVsToolsProject(project)
|
| | | && HelperFunctions.IsQtProject(project)) {
|
| | | command.Enabled = command.Visible = true;
|
| | | return;
|
| | | }
|
| | | }
|
| | | command.Enabled = command.Visible = false;
|
| | | break;
|
| | | default:
|
| | | command.Enabled = command.Visible = true;
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | 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:
|
| | | switch ((CommandId)command.CommandID.ID) {
|
| | | case CommandId.lUpdateOnSolutionId:
|
| | | Translation.RunlUpdate(QtVsToolsPackage.Instance.Dte.Solution);
|
| | | break;
|
| | | case (int)CommandId.lReleaseOnSolutionId:
|
| | | case 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);
|
| | | case CommandId.ChangeSolutionQtVersionId:
|
| | | Legacy.QtMenu.ShowFormChangeSolutionQtVersion();
|
| | | break;
|
| | | case (int)CommandId.SolutionConvertToQtMsBuild: {
|
| | | QtMsBuildConverter.SolutionToQtMsBuild();
|
| | | }
|
| | | case CommandId.SolutionConvertToQtMsBuild:
|
| | | QtMsBuildConverter.SolutionToQtMsBuild();
|
| | | break;
|
| | | case (int)CommandId.SolutionEnableProjectTracking: {
|
| | | case CommandId.SolutionEnableProjectTracking: {
|
| | | foreach (var project in HelperFunctions.ProjectsInSolution(dte)) {
|
| | | if (HelperFunctions.IsQtProject(project))
|
| | | QtProjectTracker.Get(project);
|
| | | if (HelperFunctions.IsVsToolsProject(project))
|
| | | QtProjectTracker.Get(project, project.FullName);
|
| | | }
|
| | | }
|
| | | break;
|