Skip to content

Commit bea5957

Browse files
author
Samir Boulema
committed
feat: Add TGit's menus to the file tab context menu and the file content menu in solution explorer #65
1 parent 83535ee commit bea5957

File tree

5 files changed

+76
-11
lines changed

5 files changed

+76
-11
lines changed

.github/workflows/workflow.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
- 'feature/**'
88

99
env:
10-
version: '5.1.${{ github.run_number }}'
10+
version: '5.2.${{ github.run_number }}'
1111
repoUrl: ${{ github.server_url }}/${{ github.repository }}
1212

1313
jobs:

TGit/Helpers/FileHelper.cs

+33-7
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,17 @@ namespace SamirBoulema.TGit.Helpers
1212
public static class FileHelper
1313
{
1414
public static string GetTortoiseGitProc()
15-
{
16-
return (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseGit", "ProcPath", @"C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe");
17-
}
15+
=> (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\TortoiseGit",
16+
"ProcPath", @"C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe");
1817

1918
public static string GetTortoiseGitPlink()
20-
{
21-
return (string)Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\TortoiseGit", "ProcPath", @"C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe");
22-
}
19+
=> (string)Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\TortoiseGit",
20+
"ProcPath", @"C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe");
2321

2422
public static string GetMSysGit()
2523
{
26-
var regPath = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\TortoiseGit", "MSysGit", @"C:\Program Files (x86)\Git\bin\git.exe");
24+
var regPath = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\TortoiseGit",
25+
"MSysGit", @"C:\Program Files (x86)\Git\bin\git.exe");
2726
return Path.Combine(regPath, "git.exe");
2827
}
2928

@@ -146,8 +145,35 @@ public static string GetExactPathName(string pathName)
146145
return di.Name.ToUpper();
147146
}
148147

148+
/// <summary>
149+
/// Get the path of the file on which to act upon.
150+
/// This can be different depending on where the TGit context menu was used
151+
/// </summary>
152+
/// <returns>File path</returns>
149153
public static async Task<string> GetActiveDocumentFilePath()
150154
{
155+
var windowFrame = await VS.Windows.GetCurrentWindowAsync();
156+
var solutionExplorerIsActive = windowFrame.Guid == new Guid(WindowGuids.SolutionExplorer);
157+
158+
// Context menu in the Solution Explorer
159+
if (solutionExplorerIsActive)
160+
{
161+
var selectedItem = await VS.Solutions.GetActiveItemAsync();
162+
163+
if (selectedItem != null)
164+
{
165+
if (selectedItem.Type == SolutionItemType.Project ||
166+
selectedItem.Type == SolutionItemType.Solution)
167+
{
168+
return Path.GetDirectoryName(selectedItem.FullPath);
169+
}
170+
else if (selectedItem.Type == SolutionItemType.PhysicalFile)
171+
{
172+
return selectedItem.FullPath;
173+
}
174+
}
175+
}
176+
151177
var documentView = await VS.Documents.GetActiveDocumentViewAsync();
152178
return documentView?.FilePath;
153179
}

TGit/TGIT.vsct

+35
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,26 @@
2222
<ButtonText>TGit</ButtonText>
2323
</Strings>
2424
</Menu>
25+
26+
<!--Solution Explorer Context Menu-->
27+
<Menu guid="guidTGitCmdSet" id="TGitContextMenu" priority="0x0200" type="Menu">
28+
<Parent guid="VSMainMenu" id="SolutionNode.SourceControlGroup" />
29+
<Strings>
30+
<ButtonText>TGit</ButtonText>
31+
</Strings>
32+
</Menu>
33+
<Menu guid="guidTGitCmdSet" id="TGitContextMenu" priority="0x0200" type="Menu">
34+
<Parent guid="VSMainMenu" id="ProjectNode.SourceControlGroup" />
35+
<Strings>
36+
<ButtonText>TGit</ButtonText>
37+
</Strings>
38+
</Menu>
39+
<Menu guid="guidTGitCmdSet" id="TGitContextMenu" priority="0x0200" type="Menu">
40+
<Parent guid="VSMainMenu" id="Node.SourceControlGroup" />
41+
<Strings>
42+
<ButtonText>TGit</ButtonText>
43+
</Strings>
44+
</Menu>
2545

2646
<!--GitFlow Menu-->
2747
<Menu guid="guidTGitCmdSet" id="TGitGitFlowMenu" priority="0x0100" type="Menu">
@@ -144,6 +164,16 @@
144164
<Group guid="guidTGitCmdSet" id="sixthMenuGroup" priority="0x0600">
145165
<Parent guid="guidTGitCmdSet" id="Toolbar"/>
146166
</Group>
167+
168+
<!--Solution Explorer - Folder View - Context Menu-->
169+
<Group guid="guidTGitCmdSet" id="contextMenuGroup" priority="0x0200">
170+
<Parent guid="guidWorkspaceExplorerToolWindowCmdSet" id="idmWSE_ContextMenu" />
171+
</Group>
172+
173+
<!--Solution Explorer - Folder View - Context Menu-->
174+
<Group guid="guidTGitCmdSet" id="contextMenuGroup" priority="0x0600">
175+
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_EZDOCWINTAB" />
176+
</Group>
147177
</Groups>
148178

149179
<Buttons>
@@ -585,6 +615,11 @@
585615
<IDSymbol name="add" value="25" />
586616
</GuidSymbol>
587617

618+
<!-- Solution Explorer folder mode GUIDs and IDs. -->
619+
<GuidSymbol name="guidWorkspaceExplorerToolWindowCmdSet" value="{cfb400f1-5c60-4f3c-856e-180d28def0b7}">
620+
<IDSymbol name="idmWSE_ContextMenu" value="0x0002" />
621+
</GuidSymbol>
622+
588623
<!--Special Context Menus-->
589624
<GuidSymbol name="HTMLContext" value="{78F03954-2FB8-4087-8CE7-59D71710B3BB}">
590625
<IDSymbol name="HTMLContextMenu" value="0x0001"/>

TGit/TGit.cs

+4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ internal sealed partial class PackageGuids
1515
public const string guidImagesString = "fec49b6d-c04a-42bd-b021-b8b2e5cfb291";
1616
public static Guid guidImages = new Guid(guidImagesString);
1717

18+
public const string guidWorkspaceExplorerToolWindowCmdSetString = "cfb400f1-5c60-4f3c-856e-180d28def0b7";
19+
public static Guid guidWorkspaceExplorerToolWindowCmdSet = new Guid(guidWorkspaceExplorerToolWindowCmdSetString);
20+
1821
public const string HTMLContextString = "78f03954-2fb8-4087-8ce7-59d71710b3bb";
1922
public static Guid HTMLContext = new Guid(HTMLContextString);
2023

@@ -60,6 +63,7 @@ internal sealed partial class PackageIds
6063
public const int revgraph = 0x0017;
6164
public const int config = 0x0018;
6265
public const int add = 0x0019;
66+
public const int idmWSE_ContextMenu = 0x0002;
6367
public const int HTMLContextMenu = 0x0001;
6468
public const int CSSContextMenu = 0x0002;
6569
public const int ASPXContextMenu = 0x0035;

TGit/TGit.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -350,16 +350,16 @@
350350
</Page>
351351
</ItemGroup>
352352
<ItemGroup>
353-
<PackageReference Include="Community.VisualStudio.Toolkit">
354-
<Version>15.0.76.304</Version>
353+
<PackageReference Include="Community.VisualStudio.Toolkit.15">
354+
<Version>15.0.339</Version>
355355
</PackageReference>
356356
<PackageReference Include="Community.VisualStudio.VSCT">
357357
<Version>16.0.29.6</Version>
358358
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
359359
<PrivateAssets>all</PrivateAssets>
360360
</PackageReference>
361361
<PackageReference Include="Microsoft.VSSDK.BuildTools">
362-
<Version>17.0.4207-preview4</Version>
362+
<Version>17.0.5232</Version>
363363
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
364364
<PrivateAssets>all</PrivateAssets>
365365
</PackageReference>

0 commit comments

Comments
 (0)