| | |
| | | /****************************************************************************
|
| | | **
|
| | | ** 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 EnvDTE;
|
| | | using Microsoft.VisualStudio.Shell;
|
| | | using QtVsTools.Core;
|
| | | using QtVsTools.VisualStudio;
|
| | | using System;
|
| | | using System.ComponentModel.Design;
|
| | | using System.Windows.Forms;
|
| | | using Microsoft.VisualStudio.Shell;
|
| | | using EnvDTE;
|
| | |
|
| | | namespace QtVsTools
|
| | | {
|
| | | using Core;
|
| | | using VisualStudio;
|
| | |
|
| | | /// <summary>
|
| | | /// Command handler
|
| | | /// </summary>
|
| | |
| | | /// <summary>
|
| | | /// Command menu group (command set GUID).
|
| | | /// </summary>
|
| | | public static readonly Guid MainMenuGuid = new Guid("58f83fff-d39d-4c66-810b-2702e1f04e73");
|
| | | private static readonly Guid MainMenuGuid = new Guid("58f83fff-d39d-4c66-810b-2702e1f04e73");
|
| | |
|
| | | /// <summary>
|
| | | /// Gets the instance of the command.
|
| | | /// </summary>
|
| | | public static QtMainMenu Instance
|
| | | private static QtMainMenu 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 QtMainMenu(package);
|
| | | Instance = new QtMainMenu();
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | {
|
| | | QtVersionId = 0x0500,
|
| | | ViewQtHelpId = 0x0501,
|
| | | ViewGettingStartedId = 0x0503,
|
| | | LaunchDesignerId = 0x0100,
|
| | | LaunchLinguistId = 0x0101,
|
| | | OpenProFileId = 0x0102,
|
| | | ImportPriFileId = 0x0103,
|
| | | ExportPriFileId = 0x0104,
|
| | | ExportProFileId = 0x0105,
|
| | | CreateNewTsFileId = 0x0107,
|
| | | ConvertToQtMsBuild = 0x0130,
|
| | | ConvertToQtId = 0x0124,
|
| | | ConvertToQmakeId = 0x0108,
|
| | | QtProjectSettingsId = 0x0109,
|
| | | ChangeProjectQtVersionId = 0x0126,
|
| | | QtOptionsId = 0x0110,
|
| | |
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// VS Package that provides this command, not null.
|
| | | /// </summary>
|
| | | private readonly Package m_package;
|
| | |
|
| | | /// <summary>
|
| | | /// 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 QtMainMenu(Package package)
|
| | | private QtMainMenu()
|
| | | {
|
| | | if (package == null)
|
| | | throw new ArgumentNullException("package");
|
| | |
|
| | | m_package = package;
|
| | |
|
| | | var commandService = VsServiceProvider
|
| | | .GetService<IMenuCommandService, OleMenuCommandService>();
|
| | | if (commandService == null)
|
| | |
| | |
|
| | | 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.ViewQtHelpId:
|
| | | VsShellUtilities.OpenSystemBrowser("https://www.qt.io/developers");
|
| | | break;
|
| | | case CommandId.ViewGettingStartedId:
|
| | | VsShellUtilities.OpenSystemBrowser("https://doc.qt.io/qtvstools/qtvstools-getting-started.html");
|
| | | break;
|
| | | case CommandId.LaunchDesignerId:
|
| | | QtVsToolsPackage.Instance.QtDesigner.Start(hideWindow: false);
|
| | |
| | | case CommandId.ExportProFileId:
|
| | | ExtLoader.ExportProFile();
|
| | | break;
|
| | | case CommandId.CreateNewTsFileId:
|
| | | Translation.CreateNewTranslationFile(HelperFunctions.GetSelectedQtProject(QtVsToolsPackage
|
| | | .Instance.Dte));
|
| | | break;
|
| | | case CommandId.ConvertToQtId:
|
| | | case CommandId.ConvertToQmakeId: {
|
| | | 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.ConvertToQtMsBuild: {
|
| | | QtMsBuildConverter.SolutionToQtMsBuild();
|
| | | }
|
| | | case CommandId.ConvertToQtMsBuild:
|
| | | QtMsBuildConverter.SolutionToQtMsBuild();
|
| | | break;
|
| | | case CommandId.QtProjectSettingsId: {
|
| | | var pro = HelperFunctions.GetSelectedQtProject(QtVsToolsPackage.Instance.Dte);
|
| | |
| | | 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);
|
| | | }
|
| | | Legacy.QtMenu.ShowFormProjectQtSettings(pro);
|
| | | } else {
|
| | | MessageBox.Show(SR.GetString("NoProjectOpened"));
|
| | | }
|
| | | }
|
| | | break;
|
| | | case CommandId.ChangeProjectQtVersionId: {
|
| | | 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);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | case CommandId.ChangeProjectQtVersionId:
|
| | | Legacy.QtMenu.ShowFormChangeProjectQtVersion();
|
| | | break;
|
| | | case CommandId.QtOptionsId:
|
| | | QtVsToolsPackage.Instance.ShowOptionPage(typeof(Options.QtOptionsPage));
|
| | |
| | |
|
| | | private void beforeQueryStatus(object sender, EventArgs e)
|
| | | {
|
| | | ThreadHelper.ThrowIfNotOnUIThread();
|
| | |
|
| | | var command = sender as OleMenuCommand;
|
| | | if (command == null)
|
| | | return;
|
| | |
|
| | | var project = HelperFunctions.GetSelectedProject(QtVsToolsPackage.Instance.Dte);
|
| | |
|
| | | switch ((CommandId)command.CommandID.ID) {
|
| | | case CommandId.ViewQtHelpId:
|
| | | case CommandId.ViewGettingStartedId:
|
| | | command.Visible = command.Enabled = true;
|
| | | break;
|
| | | case CommandId.QtVersionId:
|
| | |
| | | case CommandId.ImportPriFileId:
|
| | | case CommandId.ExportPriFileId:
|
| | | case CommandId.ExportProFileId:
|
| | | case CommandId.CreateNewTsFileId: {
|
| | | command.Visible = true;
|
| | | command.Enabled = HelperFunctions.IsQtProject(HelperFunctions
|
| | | .GetSelectedProject(QtVsToolsPackage.Instance.Dte));
|
| | | }
|
| | | command.Visible = true;
|
| | | command.Enabled = HelperFunctions.IsVsToolsProject(project);
|
| | | break;
|
| | | // TODO: Fix these functionality and re-enable the menu items
|
| | | case CommandId.ConvertToQtId:
|
| | | case CommandId.ConvertToQmakeId: {
|
| | | command.Visible = false;
|
| | | }
|
| | | break;
|
| | | //case CommandId.ConvertToQmakeId:
|
| | | case CommandId.QtProjectSettingsId: {
|
| | | var status = vsCommandStatus.vsCommandStatusSupported;
|
| | | var project = HelperFunctions.GetSelectedProject(QtVsToolsPackage.Instance.Dte);
|
| | | if (project != null) {
|
| | | if (HelperFunctions.IsQtProject(project))
|
| | | if (HelperFunctions.IsVsToolsProject(project))
|
| | | status |= vsCommandStatus.vsCommandStatusEnabled;
|
| | | else if (HelperFunctions.IsQMakeProject(project))
|
| | | else if (HelperFunctions.IsQtProject(project))
|
| | | status |= vsCommandStatus.vsCommandStatusInvisible;
|
| | | }
|
| | | command.Enabled = ((status & vsCommandStatus.vsCommandStatusEnabled) != 0);
|
| | | command.Visible = ((status & vsCommandStatus.vsCommandStatusInvisible) == 0);
|
| | | }
|
| | | break;
|
| | | //case CommandId.ConvertToQtId:
|
| | | case CommandId.ChangeProjectQtVersionId: {
|
| | | var status = vsCommandStatus.vsCommandStatusSupported;
|
| | | var project = HelperFunctions.GetSelectedProject(QtVsToolsPackage.Instance.Dte);
|
| | | if ((project == null) || HelperFunctions.IsQtProject(project))
|
| | | if ((project == null) || HelperFunctions.IsVsToolsProject(project))
|
| | | status |= vsCommandStatus.vsCommandStatusInvisible;
|
| | | else if (HelperFunctions.IsQMakeProject(project))
|
| | | else if (HelperFunctions.IsQtProject(project))
|
| | | status |= vsCommandStatus.vsCommandStatusEnabled;
|
| | | else
|
| | | status |= vsCommandStatus.vsCommandStatusInvisible;
|