aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMiguel Costa <miguel.costa@qt.io>2021-05-27 10:06:00 +0200
committerMiguel Costa <miguel.costa@qt.io>2021-06-08 10:49:52 +0000
commit4b49853cadfeb03a65e1b22987cbe11f418e3940 (patch)
tree5ef80df9368558e9ab44af41934c0a8a24dad85a /src
parentd764498a59fd895bb4a53bf17396a3fec2873b7a (diff)
Add 'Refresh Intellisense' context menu option
Added an option to force a background build of Qt targets in order to refresh IntelliSense information. This is useful if the option to track project changes is disabled but the user wants to keep specific projects up-to-date. Task-number: QTVSADDINBUG-890 Change-Id: Ibc762085632789c55399af20c0c29de3f4eebfa5 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/qtvstools/QtMenus.vsct_TT56
-rw-r--r--src/qtvstools/QtProjectContextMenu.cs15
-rw-r--r--src/qtvstools/QtSolutionContextMenu.cs55
3 files changed, 96 insertions, 30 deletions
diff --git a/src/qtvstools/QtMenus.vsct_TT b/src/qtvstools/QtMenus.vsct_TT
index 8c213922..1db1c35d 100644
--- a/src/qtvstools/QtMenus.vsct_TT
+++ b/src/qtvstools/QtMenus.vsct_TT
@@ -81,8 +81,15 @@
</Strings>
</Menu>
- <Menu guid="ProjectContextMenuGuid" id="QtSubMenu" priority="0x0100" type="Menu">
- <Parent guid="ProjectContextMenuGuid" id="QtSubMenuGroup" />
+ <Menu guid="ProjectContextMenuGuid" id="QtProjectSubMenu" priority="0x0100" type="Menu">
+ <Parent guid="ProjectContextMenuGuid" id="QtProjectSubMenuGroup" />
+ <Strings>
+ <ButtonText>Qt</ButtonText>
+ </Strings>
+ </Menu>
+
+ <Menu guid="SolutionContextMenuGuid" id="QtSolutionSubMenu" priority="0x0100" type="Menu">
+ <Parent guid="SolutionContextMenuGuid" id="QtSolutionSubMenuGroup" />
<Strings>
<ButtonText>Qt</ButtonText>
</Strings>
@@ -119,28 +126,31 @@
<!-- Region Solution context menu groups -->
- <Group guid="SolutionContextMenuGuid" id="SolutionContextTsMenuGroup" priority="0x0600">
+ <Group guid="SolutionContextMenuGuid" id="QtSolutionSubMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_SOLNNODE" />
</Group>
<Group guid="SolutionContextMenuGuid" id="SolutionContextQtMenuGroup" priority="0x0600">
- <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_SOLNNODE" />
+ <Parent guid="SolutionContextMenuGuid" id="QtSolutionSubMenu"/>
+ </Group>
+ <Group guid="SolutionContextMenuGuid" id="SolutionContextTsMenuGroup" priority="0x0600">
+ <Parent guid="SolutionContextMenuGuid" id="QtSolutionSubMenu" />
</Group>
<!-- Endregion Solution context menu groups -->
<!-- Region Project context menu groups -->
- <Group guid="ProjectContextMenuGuid" id="QtSubMenuGroup" priority="0x0600">
+ <Group guid="ProjectContextMenuGuid" id="QtProjectSubMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE" />
</Group>
<Group guid="ProjectContextMenuGuid" id="ProjectContextProjectMenuGroup" priority="0x0600">
- <Parent guid="ProjectContextMenuGuid" id="QtSubMenu"/>
+ <Parent guid="ProjectContextMenuGuid" id="QtProjectSubMenu"/>
</Group>
<Group guid="ProjectContextMenuGuid" id="ProjectContextTsMenuGroup" priority="0x0600">
- <Parent guid="ProjectContextMenuGuid" id="QtSubMenu"/>
+ <Parent guid="ProjectContextMenuGuid" id="QtProjectSubMenu"/>
</Group>
<Group guid="ProjectContextMenuGuid" id="ProjectContextOthersMenuGroup" priority="0x0600">
- <Parent guid="ProjectContextMenuGuid" id="QtSubMenu"/>
+ <Parent guid="ProjectContextMenuGuid" id="QtProjectSubMenu"/>
</Group>
<Group guid="ProjectContextMenuGuid" id="ProjectContextAddNewQtClassMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="cmdidShellWindowNavigate7"/>
@@ -396,6 +406,15 @@
<ButtonText>Convert custom build steps to Qt/MSBuild</ButtonText>
</Strings>
</Button>
+ <Button guid="SolutionContextMenuGuid" id="SolutionEnableProjectTracking" priority="0x0100" type="Button">
+ <Parent guid="SolutionContextMenuGuid" id="SolutionContextQtMenuGroup" />
+ <CommandFlag>DefaultDisabled</CommandFlag>
+ <CommandFlag>DefaultInvisible</CommandFlag>
+ <CommandFlag>DynamicVisibility</CommandFlag>
+ <Strings>
+ <ButtonText>Refresh project tracking</ButtonText>
+ </Strings>
+ </Button>
<!-- Endregion Solution context menu button -->
@@ -470,6 +489,16 @@
<ButtonText>Convert custom build steps to Qt/MSBuild</ButtonText>
</Strings>
</Button>
+ <Button guid="ProjectContextMenuGuid" id="ProjectRefreshIntelliSense" priority="0x0100" type="Button">
+ <Parent guid="ProjectContextMenuGuid" id="ProjectContextOthersMenuGroup" />
+ <CommandFlag>DefaultDisabled</CommandFlag>
+ <CommandFlag>DefaultInvisible</CommandFlag>
+ <CommandFlag>DynamicVisibility</CommandFlag>
+ <CommandFlag>TextChanges</CommandFlag>
+ <Strings>
+ <ButtonText>Refresh IntelliSense</ButtonText>
+ </Strings>
+ </Button>
<Button guid="ProjectContextMenuGuid" id="ConvertToQtProjectId" priority="0x0100" type="Button">
<Parent guid="ProjectContextMenuGuid" id="ProjectContextOthersMenuGroup" />
<CommandFlag>DefaultDisabled</CommandFlag>
@@ -607,13 +636,17 @@
<!-- Region Solution context menu button Ids -->
+ <IDSymbol name="QtSolutionSubMenuGroup" value="0x1026" />
+ <IDSymbol name="QtSolutionSubMenu" value="0x1127"/>
+
<IDSymbol name="SolutionContextTsMenuGroup" value="0x1025" />
<IDSymbol name="lUpdateOnSolutionId" value="0x0111" />
<IDSymbol name="lReleaseOnSolutionId" value="0x0112" />
- <IDSymbol name="SolutionContextQtMenuGroup" value="0x1026" />
+ <IDSymbol name="SolutionContextQtMenuGroup" value="0x1126" />
<IDSymbol name="ChangeSolutionQtVersionId" value="0x0113" />
<IDSymbol name="SolutionConvertToQtMsBuild" value="0x0130" />
+ <IDSymbol name="SolutionEnableProjectTracking" value="0x1130" />
<!-- Endregion Solution context menu button Ids -->
@@ -623,8 +656,8 @@
<!-- Region Project context menu button Ids -->
- <IDSymbol name="QtSubMenuGroup" value="0x1150"/>
- <IDSymbol name="QtSubMenu" value="0x1100"/>
+ <IDSymbol name="QtProjectSubMenuGroup" value="0x1150"/>
+ <IDSymbol name="QtProjectSubMenu" value="0x1100"/>
<IDSymbol name="ProjectContextProjectMenuGroup" value="0x1027" />
<IDSymbol name="ImportPriFileProjectId" value="0x0114" />
@@ -638,6 +671,7 @@
<IDSymbol name="ProjectContextOthersMenuGroup" value="0x1029" />
<IDSymbol name="ProjectConvertToQtMsBuild" value="0x0130" />
+ <IDSymbol name="ProjectRefreshIntelliSense" value="0x0131" />
<IDSymbol name="ConvertToQtProjectId" value="0x0120" />
<IDSymbol name="ConvertToQmakeProjectId" value="0x0121" />
<IDSymbol name="QtProjectSettingsProjectId" value="0x0122" />
diff --git a/src/qtvstools/QtProjectContextMenu.cs b/src/qtvstools/QtProjectContextMenu.cs
index 39715104..c4f35c28 100644
--- a/src/qtvstools/QtProjectContextMenu.cs
+++ b/src/qtvstools/QtProjectContextMenu.cs
@@ -39,6 +39,8 @@ using System.Windows.Forms;
namespace QtVsTools
{
+ using QtMsBuild;
+
/// <summary>
/// Command handler
/// </summary>
@@ -79,6 +81,7 @@ namespace QtVsTools
lUpdateOnProjectId = 0x0118,
lReleaseOnProjectId = 0x0119,
ProjectConvertToQtMsBuild = 0x0130,
+ ProjectRefreshIntelliSense = 0x0131,
ConvertToQtProjectId = 0x0120,
ConvertToQmakeProjectId = 0x0121,
QtProjectSettingsProjectId = 0x0122,
@@ -198,6 +201,13 @@ namespace QtVsTools
HelperFunctions.GetSelectedProject(Vsix.Instance.Dte));
}
break;
+ case CommandId.ProjectRefreshIntelliSense:
+ {
+ var selectedProject = HelperFunctions.GetSelectedProject(Vsix.Instance.Dte);
+ var tracker = QtProjectTracker.Get(selectedProject);
+ QtProjectIntellisense.Refresh(tracker.Project);
+ }
+ break;
case CommandId.ProjectAddNewQtClassProjectId:
{
try {
@@ -300,6 +310,11 @@ namespace QtVsTools
}
}
break;
+ case CommandId.ProjectRefreshIntelliSense:
+ {
+ command.Visible = command.Enabled = isQtMsBuildEnabled;
+ }
+ break;
}
if (project != null && isQtProject) {
diff --git a/src/qtvstools/QtSolutionContextMenu.cs b/src/qtvstools/QtSolutionContextMenu.cs
index b75d362a..eab20a2d 100644
--- a/src/qtvstools/QtSolutionContextMenu.cs
+++ b/src/qtvstools/QtSolutionContextMenu.cs
@@ -36,6 +36,8 @@ using System.Windows.Forms;
namespace QtVsTools
{
+ using QtMsBuild;
+
/// <summary>
/// Command handler
/// </summary>
@@ -72,10 +74,14 @@ namespace QtVsTools
/// <summary>
/// Command ID.
/// </summary>
- private const int lUpdateOnSolutionId = 0x0111;
- private const int lReleaseOnSolutionId = 0x0112;
- private const int SolutionConvertToQtMsBuild = 0x0130;
- private const int ChangeSolutionQtVersionId = 0x0113;
+ private enum CommandId
+ {
+ lUpdateOnSolutionId = 0x0111,
+ lReleaseOnSolutionId = 0x0112,
+ SolutionConvertToQtMsBuild = 0x0130,
+ SolutionEnableProjectTracking = 0x1130,
+ ChangeSolutionQtVersionId = 0x0113
+ }
/// <summary>
/// Gets the service provider from the owner package.
@@ -102,17 +108,20 @@ namespace QtVsTools
if (commandService == null)
return;
- commandService.AddCommand(new OleMenuCommand(execHandler,
- new CommandID(SolutionContextMenuGuid, lUpdateOnSolutionId)));
-
- commandService.AddCommand(new OleMenuCommand(execHandler,
- new CommandID(SolutionContextMenuGuid, lReleaseOnSolutionId)));
-
- commandService.AddCommand(new OleMenuCommand(execHandler,
- new CommandID(SolutionContextMenuGuid, ChangeSolutionQtVersionId)));
+ foreach (var id in Enum.GetValues(typeof(CommandId))) {
+ var command = new OleMenuCommand(execHandler,
+ new CommandID(SolutionContextMenuGuid, (int)id));
+ command.BeforeQueryStatus += beforeQueryStatus;
+ commandService.AddCommand(command);
+ }
+ }
- commandService.AddCommand(new OleMenuCommand(execHandler,
- new CommandID(SolutionContextMenuGuid, SolutionConvertToQtMsBuild)));
+ private void beforeQueryStatus(object sender, EventArgs e)
+ {
+ var command = sender as OleMenuCommand;
+ if (command == null)
+ return;
+ command.Enabled = command.Visible = true;
}
private void execHandler(object sender, EventArgs e)
@@ -121,14 +130,15 @@ namespace QtVsTools
if (command == null)
return;
+ var dte = Vsix.Instance.Dte;
switch (command.CommandID.ID) {
- case lUpdateOnSolutionId:
+ case (int)CommandId.lUpdateOnSolutionId:
Translation.RunlUpdate(Vsix.Instance.Dte.Solution);
break;
- case lReleaseOnSolutionId:
+ case (int)CommandId.lReleaseOnSolutionId:
Translation.RunlRelease(Vsix.Instance.Dte.Solution);
break;
- case ChangeSolutionQtVersionId:
+ case (int)CommandId.ChangeSolutionQtVersionId:
var newQtVersion = string.Empty;
using (var formChangeQtVersion = new FormChangeQtVersion()) {
formChangeQtVersion.UpdateContent(ChangeFor.Solution);
@@ -149,7 +159,6 @@ namespace QtVsTools
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,
@@ -165,11 +174,19 @@ namespace QtVsTools
}
QtVersionManager.The().SaveSolutionQtVersion(dte.Solution, newQtVersion);
break;
- case SolutionConvertToQtMsBuild:
+ 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);
+ }
+ }
+ break;
}
}
}