feature: add a context menu item to open all repositories in a group (#179)

This commit is contained in:
leo 2024-06-18 11:07:48 +08:00
parent 4217d62f47
commit 06245320a9
No known key found for this signature in database
GPG key ID: B528468E49CD0E58
4 changed files with 34 additions and 0 deletions

View file

@ -92,6 +92,26 @@ namespace SourceGit.ViewModels
var menu = new ContextMenu();
var hasRepo = Preference.FindRepository(node.Id) != null;
if (!node.IsRepository && node.SubNodes.Count > 0)
{
var openAll = new MenuItem();
openAll.Header = App.Text("Welcome.OpenAllInNode");
openAll.Icon = App.CreateMenuIcon("Icons.Folder.Open");
openAll.Click += (_, e) =>
{
if (App.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
var launcher = desktop.MainWindow.DataContext as Launcher;
OpenAllInNode(launcher, node);
}
e.Handled = true;
};
menu.Items.Add(openAll);
menu.Items.Add(new MenuItem() { Header = "-" });
}
var edit = new MenuItem();
edit.Header = App.Text("Welcome.Edit");
edit.Icon = App.CreateMenuIcon("Icons.Edit");
@ -201,6 +221,17 @@ namespace SourceGit.ViewModels
}
}
private void OpenAllInNode(Launcher launcher, RepositoryNode node)
{
foreach (var subNode in node.SubNodes)
{
if (subNode.IsRepository)
launcher.OpenRepositoryInTab(subNode, null);
else if (subNode.SubNodes.Count > 0)
OpenAllInNode(launcher, subNode);
}
}
private static Welcome _instance = new Welcome();
private string _searchFilter = string.Empty;
}