mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-23 13:14:59 +00:00
feature: supports commit template (#264)
This commit is contained in:
parent
9acd8519f6
commit
b3327ebeb5
12 changed files with 215 additions and 35 deletions
|
@ -42,6 +42,17 @@ namespace SourceGit.ViewModels
|
|||
set => SetProperty(ref _httpProxy, value);
|
||||
}
|
||||
|
||||
public AvaloniaList<Models.CommitTemplate> CommitTemplates
|
||||
{
|
||||
get => _repo.Settings.CommitTemplates;
|
||||
}
|
||||
|
||||
public Models.CommitTemplate SelectedCommitTemplate
|
||||
{
|
||||
get => _selectedCommitTemplate;
|
||||
set => SetProperty(ref _selectedCommitTemplate, value);
|
||||
}
|
||||
|
||||
public AvaloniaList<Models.IssueTrackerRule> IssueTrackerRules
|
||||
{
|
||||
get => _repo.Settings.IssueTrackerRules;
|
||||
|
@ -77,6 +88,20 @@ namespace SourceGit.ViewModels
|
|||
HttpProxy = string.Empty;
|
||||
}
|
||||
|
||||
public void AddCommitTemplate()
|
||||
{
|
||||
var template = new Models.CommitTemplate() { Name = "New Template" };
|
||||
_repo.Settings.CommitTemplates.Add(template);
|
||||
SelectedCommitTemplate = template;
|
||||
}
|
||||
|
||||
public void RemoveSelectedCommitTemplate()
|
||||
{
|
||||
if (_selectedCommitTemplate != null)
|
||||
_repo.Settings.CommitTemplates.Remove(_selectedCommitTemplate);
|
||||
SelectedCommitTemplate = null;
|
||||
}
|
||||
|
||||
public void AddSampleGithubIssueTracker()
|
||||
{
|
||||
foreach (var remote in _repo.Remotes)
|
||||
|
@ -106,7 +131,8 @@ namespace SourceGit.ViewModels
|
|||
|
||||
public void RemoveSelectedIssueTracker()
|
||||
{
|
||||
_repo.Settings.RemoveIssueTracker(_selectedIssueTrackerRule);
|
||||
if (_selectedIssueTrackerRule != null)
|
||||
_repo.Settings.RemoveIssueTracker(_selectedIssueTrackerRule);
|
||||
SelectedIssueTrackerRule = null;
|
||||
}
|
||||
|
||||
|
@ -141,6 +167,7 @@ namespace SourceGit.ViewModels
|
|||
private readonly Repository _repo = null;
|
||||
private readonly Dictionary<string, string> _cached = null;
|
||||
private string _httpProxy;
|
||||
private Models.CommitTemplate _selectedCommitTemplate = null;
|
||||
private Models.IssueTrackerRule _selectedIssueTrackerRule = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue