mirror of
https://fastgit.cc/github.com/sourcegit-scm/sourcegit
synced 2026-04-21 21:30:37 +08:00
feature: supports to hide AUTHOR and SHA columns in HISTORY (#2097)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
@@ -15,13 +15,25 @@ namespace SourceGit.Models
|
||||
set;
|
||||
} = HistoryShowFlags.None;
|
||||
|
||||
public bool EnableTopoOrderInHistories
|
||||
public bool IsAuthorColumnVisibleInHistory
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = true;
|
||||
|
||||
public bool IsSHAColumnVisibleInHistory
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = true;
|
||||
|
||||
public bool EnableTopoOrderInHistory
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = false;
|
||||
|
||||
public bool OnlyHighlightCurrentBranchInHistories
|
||||
public bool OnlyHighlightCurrentBranchInHistory
|
||||
{
|
||||
get;
|
||||
set;
|
||||
@@ -386,7 +398,7 @@ namespace SourceGit.Models
|
||||
|
||||
var builder = new StringBuilder();
|
||||
|
||||
if (EnableTopoOrderInHistories)
|
||||
if (EnableTopoOrderInHistory)
|
||||
builder.Append("--topo-order ");
|
||||
else
|
||||
builder.Append("--date-order ");
|
||||
|
||||
@@ -474,6 +474,7 @@
|
||||
<x:String x:Key="Text.Histories.Header.SHA" xml:space="preserve">SHA</x:String>
|
||||
<x:String x:Key="Text.Histories.Header.Time" xml:space="preserve">COMMIT TIME</x:String>
|
||||
<x:String x:Key="Text.Histories.Selected" xml:space="preserve">SELECTED {0} COMMITS</x:String>
|
||||
<x:String x:Key="Text.Histories.ShowColumns" xml:space="preserve">SHOW COLUMNS</x:String>
|
||||
<x:String x:Key="Text.Histories.Tips" xml:space="preserve">Hold 'Ctrl' or 'Shift' to select multiple commits.</x:String>
|
||||
<x:String x:Key="Text.Histories.Tips.MacOS" xml:space="preserve">Hold ⌘ or ⇧ to select multiple commits.</x:String>
|
||||
<x:String x:Key="Text.Histories.Tips.Prefix" xml:space="preserve">TIPS:</x:String>
|
||||
|
||||
@@ -478,6 +478,7 @@
|
||||
<x:String x:Key="Text.Histories.Header.SHA" xml:space="preserve">提交指纹</x:String>
|
||||
<x:String x:Key="Text.Histories.Header.Time" xml:space="preserve">提交时间</x:String>
|
||||
<x:String x:Key="Text.Histories.Selected" xml:space="preserve">已选中 {0} 项提交</x:String>
|
||||
<x:String x:Key="Text.Histories.ShowColumns" xml:space="preserve">显示列</x:String>
|
||||
<x:String x:Key="Text.Histories.Tips" xml:space="preserve">可以按住 Ctrl 或 Shift 键选择多个提交</x:String>
|
||||
<x:String x:Key="Text.Histories.Tips.MacOS" xml:space="preserve">可以按住 ⌘ 或 ⇧ 键选择多个提交</x:String>
|
||||
<x:String x:Key="Text.Histories.Tips.Prefix" xml:space="preserve">小提示:</x:String>
|
||||
|
||||
@@ -478,6 +478,7 @@
|
||||
<x:String x:Key="Text.Histories.Header.SHA" xml:space="preserve">提交編號</x:String>
|
||||
<x:String x:Key="Text.Histories.Header.Time" xml:space="preserve">提交時間</x:String>
|
||||
<x:String x:Key="Text.Histories.Selected" xml:space="preserve">已選取 {0} 項提交</x:String>
|
||||
<x:String x:Key="Text.Histories.ShowColumns" xml:space="preserve">顯示欄位</x:String>
|
||||
<x:String x:Key="Text.Histories.Tips" xml:space="preserve">可以按住 Ctrl 或 Shift 鍵選擇多個提交</x:String>
|
||||
<x:String x:Key="Text.Histories.Tips.MacOS" xml:space="preserve">可以按住 ⌘ 或 ⇧ 鍵選擇多個提交</x:String>
|
||||
<x:String x:Key="Text.Histories.Tips.Prefix" xml:space="preserve">小提示:</x:String>
|
||||
|
||||
@@ -18,6 +18,32 @@ namespace SourceGit.ViewModels
|
||||
set => SetProperty(ref _isLoading, value);
|
||||
}
|
||||
|
||||
public bool IsAuthorColumnVisible
|
||||
{
|
||||
get => _repo.UIStates.IsAuthorColumnVisibleInHistory;
|
||||
set
|
||||
{
|
||||
if (_repo.UIStates.IsAuthorColumnVisibleInHistory != value)
|
||||
{
|
||||
_repo.UIStates.IsAuthorColumnVisibleInHistory = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsSHAColumnVisible
|
||||
{
|
||||
get => _repo.UIStates.IsSHAColumnVisibleInHistory;
|
||||
set
|
||||
{
|
||||
if (_repo.UIStates.IsSHAColumnVisibleInHistory != value)
|
||||
{
|
||||
_repo.UIStates.IsSHAColumnVisibleInHistory = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<Models.Commit> Commits
|
||||
{
|
||||
get => _commits;
|
||||
|
||||
@@ -79,14 +79,14 @@ namespace SourceGit.ViewModels
|
||||
set => SetProperty(ref _selectedView, value);
|
||||
}
|
||||
|
||||
public bool EnableTopoOrderInHistories
|
||||
public bool EnableTopoOrderInHistory
|
||||
{
|
||||
get => _uiStates.EnableTopoOrderInHistories;
|
||||
get => _uiStates.EnableTopoOrderInHistory;
|
||||
set
|
||||
{
|
||||
if (value != _uiStates.EnableTopoOrderInHistories)
|
||||
if (value != _uiStates.EnableTopoOrderInHistory)
|
||||
{
|
||||
_uiStates.EnableTopoOrderInHistories = value;
|
||||
_uiStates.EnableTopoOrderInHistory = value;
|
||||
RefreshCommits();
|
||||
}
|
||||
}
|
||||
@@ -105,14 +105,14 @@ namespace SourceGit.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
public bool OnlyHighlightCurrentBranchInHistories
|
||||
public bool OnlyHighlightCurrentBranchInHistory
|
||||
{
|
||||
get => _uiStates.OnlyHighlightCurrentBranchInHistories;
|
||||
get => _uiStates.OnlyHighlightCurrentBranchInHistory;
|
||||
set
|
||||
{
|
||||
if (value != _uiStates.OnlyHighlightCurrentBranchInHistories)
|
||||
if (value != _uiStates.OnlyHighlightCurrentBranchInHistory)
|
||||
{
|
||||
_uiStates.OnlyHighlightCurrentBranchInHistories = value;
|
||||
_uiStates.OnlyHighlightCurrentBranchInHistory = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
<DataGridTemplateColumn MinWidth="80" CanUserResize="True" IsReadOnly="True">
|
||||
<DataGridTemplateColumn MinWidth="80" CanUserResize="True" IsReadOnly="True" IsVisible="{Binding IsAuthorColumnVisible, Mode=OneWay}">
|
||||
<DataGridTemplateColumn.Width>
|
||||
<Binding Source="{x:Static vm:Preferences.Instance}"
|
||||
Path="Layout.AuthorColumnWidth"
|
||||
@@ -198,7 +198,7 @@
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
<DataGridTemplateColumn MinWidth="100" CanUserResize="False" IsReadOnly="True">
|
||||
<DataGridTemplateColumn MinWidth="100" CanUserResize="False" IsReadOnly="True" IsVisible="{Binding IsSHAColumnVisible, Mode=OneWay}">
|
||||
<DataGridTemplateColumn.Header>
|
||||
<TextBlock Classes="table_header" Text="{DynamicResource Text.Histories.Header.SHA}" HorizontalAlignment="Center"/>
|
||||
</DataGridTemplateColumn.Header>
|
||||
|
||||
@@ -216,13 +216,16 @@ namespace SourceGit.Views
|
||||
|
||||
private void OnCommitListContextRequested(object sender, ContextRequestedEventArgs e)
|
||||
{
|
||||
if (sender is DataGrid { SelectedItems: { } selected } dataGrid &&
|
||||
e.Source is Control { DataContext: Models.Commit })
|
||||
if (e.Source is Control { DataContext: Models.Commit })
|
||||
{
|
||||
var repoView = this.FindAncestorOfType<Repository>();
|
||||
if (repoView is not { DataContext: ViewModels.Repository repo })
|
||||
return;
|
||||
|
||||
var selected = CommitListContainer.SelectedItems;
|
||||
if (selected is not { Count: > 0 })
|
||||
return;
|
||||
|
||||
var commits = new List<Models.Commit>();
|
||||
for (var i = selected.Count - 1; i >= 0; i--)
|
||||
{
|
||||
@@ -233,14 +236,54 @@ namespace SourceGit.Views
|
||||
if (selected.Count > 1)
|
||||
{
|
||||
var menu = CreateContextMenuForMultipleCommits(repo, commits);
|
||||
menu.Open(dataGrid);
|
||||
menu.Open(CommitListContainer);
|
||||
}
|
||||
else if (selected.Count == 1)
|
||||
{
|
||||
var menu = CreateContextMenuForSingleCommit(repo, commits[0]);
|
||||
menu.Open(dataGrid);
|
||||
menu.Open(CommitListContainer);
|
||||
}
|
||||
}
|
||||
else if (e.Source is Control elem)
|
||||
{
|
||||
var headersPresenter = CommitListContainer.FindDescendantOfType<DataGridColumnHeadersPresenter>();
|
||||
if (!headersPresenter.IsVisualAncestorOf(elem))
|
||||
return;
|
||||
|
||||
if (DataContext is not ViewModels.Histories vm)
|
||||
return;
|
||||
|
||||
var columnsHeader = new MenuItem();
|
||||
columnsHeader.Header = App.Text("Histories.ShowColumns");
|
||||
columnsHeader.IsEnabled = false;
|
||||
|
||||
var authorColumn = new MenuItem();
|
||||
authorColumn.Header = App.Text("Histories.Header.Author");
|
||||
if (vm.IsAuthorColumnVisible)
|
||||
authorColumn.Icon = App.CreateMenuIcon("Icons.Check");
|
||||
authorColumn.Click += (_, ev) =>
|
||||
{
|
||||
vm.IsAuthorColumnVisible = !vm.IsAuthorColumnVisible;
|
||||
ev.Handled = true;
|
||||
};
|
||||
|
||||
var shaColumn = new MenuItem();
|
||||
shaColumn.Header = App.Text("Histories.Header.SHA");
|
||||
if (vm.IsSHAColumnVisible)
|
||||
shaColumn.Icon = App.CreateMenuIcon("Icons.Check");
|
||||
shaColumn.Click += (_, ev) =>
|
||||
{
|
||||
vm.IsSHAColumnVisible = !vm.IsSHAColumnVisible;
|
||||
ev.Handled = true;
|
||||
};
|
||||
|
||||
var menu = new ContextMenu();
|
||||
menu.Items.Add(columnsHeader);
|
||||
menu.Items.Add(new MenuItem() { Header = "-" });
|
||||
menu.Items.Add(authorColumn);
|
||||
menu.Items.Add(shaColumn);
|
||||
menu.Open(CommitListContainer);
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
Classes="line_path"
|
||||
Width="26" Height="26"
|
||||
Background="Transparent"
|
||||
IsChecked="{Binding OnlyHighlightCurrentBranchInHistories, Mode=TwoWay}"
|
||||
IsChecked="{Binding OnlyHighlightCurrentBranchInHistory, Mode=TwoWay}"
|
||||
ToolTip.Tip="{DynamicResource Text.Repository.OnlyHighlightCurrentBranchInGraph}">
|
||||
<Path Width="12" Height="12" Data="{StaticResource Icons.LightOn}"/>
|
||||
</ToggleButton>
|
||||
@@ -851,7 +851,7 @@
|
||||
<v:Histories CurrentBranch="{Binding $parent[v:Repository].((vm:Repository)DataContext).CurrentBranch}"
|
||||
Bisect="{Binding Bisect}"
|
||||
IssueTrackers="{Binding $parent[v:Repository].((vm:Repository)DataContext).IssueTrackers}"
|
||||
OnlyHighlightCurrentBranch="{Binding $parent[v:Repository].((vm:Repository)DataContext).OnlyHighlightCurrentBranchInHistories}"
|
||||
OnlyHighlightCurrentBranch="{Binding $parent[v:Repository].((vm:Repository)DataContext).OnlyHighlightCurrentBranchInHistory}"
|
||||
NavigationId="{Binding NavigationId}"/>
|
||||
</DataTemplate>
|
||||
|
||||
|
||||
@@ -407,22 +407,22 @@ namespace SourceGit.Views
|
||||
var dateOrder = new MenuItem();
|
||||
dateOrder.Header = App.Text("Repository.HistoriesOrder.ByDate");
|
||||
dateOrder.Tag = "--date-order";
|
||||
if (!repo.EnableTopoOrderInHistories)
|
||||
if (!repo.EnableTopoOrderInHistory)
|
||||
dateOrder.Icon = App.CreateMenuIcon("Icons.Check");
|
||||
dateOrder.Click += (_, ev) =>
|
||||
{
|
||||
repo.EnableTopoOrderInHistories = false;
|
||||
repo.EnableTopoOrderInHistory = false;
|
||||
ev.Handled = true;
|
||||
};
|
||||
|
||||
var topoOrder = new MenuItem();
|
||||
topoOrder.Header = App.Text("Repository.HistoriesOrder.Topo");
|
||||
topoOrder.Tag = "--topo-order";
|
||||
if (repo.EnableTopoOrderInHistories)
|
||||
if (repo.EnableTopoOrderInHistory)
|
||||
topoOrder.Icon = App.CreateMenuIcon("Icons.Check");
|
||||
topoOrder.Click += (_, ev) =>
|
||||
{
|
||||
repo.EnableTopoOrderInHistories = true;
|
||||
repo.EnableTopoOrderInHistory = true;
|
||||
ev.Handled = true;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user