feature: supports commit template (#264)

This commit is contained in:
leo 2024-08-15 18:59:35 +08:00
parent 9acd8519f6
commit b3327ebeb5
No known key found for this signature in database
12 changed files with 215 additions and 35 deletions

View file

@ -1127,34 +1127,62 @@ namespace SourceGit.ViewModels
public ContextMenu CreateContextMenuForCommitMessages()
{
var menu = new ContextMenu();
if (_repo.Settings.CommitMessages.Count == 0)
var templateCount = _repo.Settings.CommitTemplates.Count;
if (templateCount == 0)
{
var empty = new MenuItem();
empty.Header = App.Text("WorkingCopy.NoCommitHistories");
empty.IsEnabled = false;
menu.Items.Add(empty);
return menu;
menu.Items.Add(new MenuItem()
{
Header = App.Text("WorkingCopy.NoCommitTemplates"),
Icon = App.CreateMenuIcon("Icons.Code"),
IsEnabled = false
});
}
else
{
for (int i = 0; i < templateCount; i++)
{
var template = _repo.Settings.CommitTemplates[i];
var item = new MenuItem();
item.Header = new Views.NameHighlightedTextBlock("WorkingCopy.UseCommitTemplate", template.Name);
item.Icon = App.CreateMenuIcon("Icons.Code");
item.Click += (_, e) =>
{
CommitMessage = template.Content;
e.Handled = true;
};
menu.Items.Add(item);
}
}
var tip = new MenuItem();
tip.Header = App.Text("WorkingCopy.HasCommitHistories");
tip.IsEnabled = false;
menu.Items.Add(tip);
menu.Items.Add(new MenuItem() { Header = "-" });
foreach (var message in _repo.Settings.CommitMessages)
var historiesCount = _repo.Settings.CommitMessages.Count;
if (historiesCount == 0)
{
var dump = message;
var item = new MenuItem();
item.Header = dump;
item.Click += (_, e) =>
menu.Items.Add(new MenuItem()
{
CommitMessage = dump;
e.Handled = true;
};
Header = App.Text("WorkingCopy.NoCommitHistories"),
Icon = App.CreateMenuIcon("Icons.Histories"),
IsEnabled = false
});
}
else
{
for (int i = 0; i < historiesCount; i++)
{
var message = _repo.Settings.CommitMessages[i];
var item = new MenuItem();
item.Header = message;
item.Icon = App.CreateMenuIcon("Icons.Histories");
item.Click += (_, e) =>
{
CommitMessage = message;
e.Handled = true;
};
menu.Items.Add(item);
menu.Items.Add(item);
}
}
return menu;