Skip to content

Commit 1799de4

Browse files
committed
code_review: PR #1173
- rename c-style `file_arg` to `fileArg` - add missing translations for zh_CN and zh_TW - re-design conflict view and add tooltip for `USE THEIRS` and `USE MINE` - re-order unstaged toolbar buttons Signed-off-by: leo <[email protected]>
1 parent a99ab37 commit 1799de4

File tree

5 files changed

+111
-88
lines changed

5 files changed

+111
-88
lines changed

src/Commands/MergeTool.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ public static bool OpenForMerge(string repo, int toolType, string toolPath, stri
1414
cmd.RaiseError = true;
1515

1616
// NOTE: If no <file> names are specified, 'git mergetool' will run the merge tool program on every file with merge conflicts.
17-
var file_arg = string.IsNullOrEmpty(file) ? "" : $"\"{file}\"";
17+
var fileArg = string.IsNullOrEmpty(file) ? "" : $"\"{file}\"";
1818

1919
if (toolType == 0)
2020
{
21-
cmd.Args = $"mergetool {file_arg}";
21+
cmd.Args = $"mergetool {fileArg}";
2222
return cmd.Exec();
2323
}
2424

@@ -35,7 +35,7 @@ public static bool OpenForMerge(string repo, int toolType, string toolPath, stri
3535
return false;
3636
}
3737

38-
cmd.Args = $"-c mergetool.sourcegit.cmd=\"\\\"{toolPath}\\\" {supported.Cmd}\" -c mergetool.writeToTemp=true -c mergetool.keepBackup=false -c mergetool.trustExitCode=true mergetool --tool=sourcegit {file_arg}";
38+
cmd.Args = $"-c mergetool.sourcegit.cmd=\"\\\"{toolPath}\\\" {supported.Cmd}\" -c mergetool.writeToTemp=true -c mergetool.keepBackup=false -c mergetool.trustExitCode=true mergetool --tool=sourcegit {fileArg}";
3939
return cmd.Exec();
4040
}
4141

src/Resources/Locales/zh_CN.axaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -731,7 +731,11 @@
731731
<x:String x:Key="Text.WorkingCopy.CommitWithAutoStage" xml:space="preserve">自动暂存所有变更并提交</x:String>
732732
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithFilter" xml:space="preserve">当前有 {0} 个文件在暂存区中,但仅显示了 {1} 个文件({2} 个文件被过滤掉了),是否继续提交?</x:String>
733733
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">检测到冲突</x:String>
734+
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeTool" xml:space="preserve">打开合并工具</x:String>
735+
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeToolAllConflicts" xml:space="preserve">打开合并工具解决冲突</x:String>
734736
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">文件冲突已解决</x:String>
737+
<x:String x:Key="Text.WorkingCopy.Conflicts.UseMine" xml:space="preserve">使用 MINE</x:String>
738+
<x:String x:Key="Text.WorkingCopy.Conflicts.UseTheirs" xml:space="preserve">使用 THEIRS</x:String>
735739
<x:String x:Key="Text.WorkingCopy.IncludeUntracked" xml:space="preserve">显示未跟踪文件</x:String>
736740
<x:String x:Key="Text.WorkingCopy.NoCommitHistories" xml:space="preserve">没有提交信息记录</x:String>
737741
<x:String x:Key="Text.WorkingCopy.NoCommitTemplates" xml:space="preserve">没有可应用的提交信息模板</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,11 @@
730730
<x:String x:Key="Text.WorkingCopy.CommitWithAutoStage" xml:space="preserve">自動暫存全部變更並提交</x:String>
731731
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithFilter" xml:space="preserve">您已暫存 {0} 檔案,但只顯示 {1} 檔案 ({2} 檔案被篩選器隱藏)。您要繼續嗎?</x:String>
732732
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">檢測到衝突</x:String>
733+
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeTool" xml:space="preserve">使用外部合併工具開啟</x:String>
734+
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeToolAllConflicts" xml:space="preserve">使用外部合併工具開啟</x:String>
733735
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">檔案衝突已解決</x:String>
736+
<x:String x:Key="Text.WorkingCopy.Conflicts.UseMine" xml:space="preserve">使用 MINE</x:String>
737+
<x:String x:Key="Text.WorkingCopy.Conflicts.UseTheirs" xml:space="preserve">使用 THEIRS</x:String>
734738
<x:String x:Key="Text.WorkingCopy.IncludeUntracked" xml:space="preserve">顯示未追蹤檔案</x:String>
735739
<x:String x:Key="Text.WorkingCopy.NoCommitHistories" xml:space="preserve">沒有提交訊息記錄</x:String>
736740
<x:String x:Key="Text.WorkingCopy.NoCommitTemplates" xml:space="preserve">沒有可套用的提交訊息範本</x:String>

src/Views/Conflict.axaml

Lines changed: 90 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -12,83 +12,83 @@
1212
<Border Background="{DynamicResource Brush.Window}" BorderThickness="1" BorderBrush="{DynamicResource Brush.Border2}">
1313
<Grid VerticalAlignment="Center">
1414
<StackPanel Orientation="Vertical" IsVisible="{Binding !IsResolved}">
15-
<StackPanel.DataTemplates>
16-
<DataTemplate DataType="vm:ConflictSourceBranch">
17-
<StackPanel Orientation="Horizontal">
18-
<Path Width="12" Height="12" Data="{StaticResource Icons.Branch}"/>
19-
<TextBlock Margin="4,0,0,0" Text="{Binding Name}"/>
20-
<TextBlock Margin="4,0,0,0"
21-
Text="{Binding Head, Converter={x:Static c:StringConverters.ToShortSHA}}"
22-
Foreground="DarkOrange"
23-
TextDecorations="Underline"
24-
Cursor="Hand"
25-
PointerPressed="OnPressedSHA"
26-
ToolTip.Tip="{Binding Revision}"
27-
ToolTip.ShowDelay="0">
28-
<TextBlock.DataTemplates>
29-
<DataTemplate DataType="m:Commit">
30-
<StackPanel MinWidth="400" Orientation="Vertical">
31-
<Grid ColumnDefinitions="Auto,*,Auto">
32-
<v:Avatar Grid.Column="0" Width="16" Height="16" VerticalAlignment="Center" IsHitTestVisible="False" User="{Binding Author}"/>
33-
<TextBlock Grid.Column="1" Classes="primary" Text="{Binding Author.Name}" Margin="8,0,0,0"/>
34-
<TextBlock Grid.Column="2" Classes="primary" Text="{Binding CommitterTimeStr}" Foreground="{DynamicResource Brush.FG2}" Margin="8,0,0,0"/>
35-
</Grid>
15+
<Path Width="64" Height="64" Data="{StaticResource Icons.Conflict}" Fill="{DynamicResource Brush.FG2}" HorizontalAlignment="Center"/>
16+
<TextBlock Margin="0,16" FontSize="20" FontWeight="Bold" Text="{DynamicResource Text.WorkingCopy.Conflicts}" Foreground="{DynamicResource Brush.FG2}" HorizontalAlignment="Center"/>
3617

37-
<TextBlock Classes="primary" Margin="0,8,0,0" Text="{Binding Subject}" TextWrapping="Wrap"/>
38-
</StackPanel>
39-
</DataTemplate>
40-
</TextBlock.DataTemplates>
41-
</TextBlock>
42-
</StackPanel>
43-
</DataTemplate>
18+
<Border Margin="16,0" Padding="8" CornerRadius="4" BorderThickness="1" BorderBrush="{DynamicResource Brush.Border2}">
19+
<Border.DataTemplates>
20+
<DataTemplate DataType="vm:ConflictSourceBranch">
21+
<StackPanel Orientation="Horizontal">
22+
<Path Width="12" Height="12" Data="{StaticResource Icons.Branch}"/>
23+
<TextBlock Margin="4,0,0,0" Text="{Binding Name}"/>
24+
<TextBlock Margin="4,0,0,0"
25+
Text="{Binding Head, Converter={x:Static c:StringConverters.ToShortSHA}}"
26+
Foreground="DarkOrange"
27+
TextDecorations="Underline"
28+
Cursor="Hand"
29+
PointerPressed="OnPressedSHA"
30+
ToolTip.Tip="{Binding Revision}"
31+
ToolTip.ShowDelay="0">
32+
<TextBlock.DataTemplates>
33+
<DataTemplate DataType="m:Commit">
34+
<StackPanel MinWidth="400" Orientation="Vertical">
35+
<Grid ColumnDefinitions="Auto,*,Auto">
36+
<v:Avatar Grid.Column="0" Width="16" Height="16" VerticalAlignment="Center" IsHitTestVisible="False" User="{Binding Author}"/>
37+
<TextBlock Grid.Column="1" Classes="primary" Text="{Binding Author.Name}" Margin="8,0,0,0"/>
38+
<TextBlock Grid.Column="2" Classes="primary" Text="{Binding CommitterTimeStr}" Foreground="{DynamicResource Brush.FG2}" Margin="8,0,0,0"/>
39+
</Grid>
4440

45-
<DataTemplate DataType="m:Commit">
46-
<StackPanel Orientation="Horizontal">
47-
<Path Width="12" Height="12" Data="{StaticResource Icons.Commit}"/>
48-
<v:CommitRefsPresenter Margin="8,0,0,0"
49-
Foreground="{DynamicResource Brush.FG1}"
50-
FontFamily="{DynamicResource Fonts.Primary}"
51-
FontSize="11"
52-
VerticalAlignment="Center"
53-
UseGraphColor="False"/>
54-
<TextBlock Margin="4,0,0,0"
55-
Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}"
56-
Foreground="DarkOrange"
57-
TextDecorations="Underline"
58-
Cursor="Hand"
59-
PointerPressed="OnPressedSHA"
60-
ToolTip.Tip="{Binding}"
61-
ToolTip.ShowDelay="0">
62-
<TextBlock.DataTemplates>
63-
<DataTemplate DataType="m:Commit">
64-
<StackPanel MinWidth="400" Orientation="Vertical">
65-
<Grid ColumnDefinitions="Auto,*,Auto">
66-
<v:Avatar Grid.Column="0" Width="16" Height="16" VerticalAlignment="Center" IsHitTestVisible="False" User="{Binding Author}"/>
67-
<TextBlock Grid.Column="1" Classes="primary" Text="{Binding Author.Name}" Margin="8,0,0,0"/>
68-
<TextBlock Grid.Column="2" Classes="primary" Text="{Binding CommitterTimeStr}" Foreground="{DynamicResource Brush.FG2}" Margin="8,0,0,0"/>
69-
</Grid>
41+
<TextBlock Classes="primary" Margin="0,8,0,0" Text="{Binding Subject}" TextWrapping="Wrap"/>
42+
</StackPanel>
43+
</DataTemplate>
44+
</TextBlock.DataTemplates>
45+
</TextBlock>
46+
</StackPanel>
47+
</DataTemplate>
7048

71-
<TextBlock Classes="primary" Margin="0,8,0,0" Text="{Binding Subject}" TextWrapping="Wrap"/>
72-
</StackPanel>
73-
</DataTemplate>
74-
</TextBlock.DataTemplates>
75-
</TextBlock>
76-
<TextBlock Margin="4,0,0,0" Text="{Binding Subject}"/>
77-
</StackPanel>
78-
</DataTemplate>
49+
<DataTemplate DataType="m:Commit">
50+
<StackPanel Orientation="Horizontal">
51+
<Path Width="12" Height="12" Data="{StaticResource Icons.Commit}"/>
52+
<v:CommitRefsPresenter Margin="8,0,0,0"
53+
Foreground="{DynamicResource Brush.FG1}"
54+
FontFamily="{DynamicResource Fonts.Primary}"
55+
FontSize="11"
56+
VerticalAlignment="Center"
57+
UseGraphColor="False"/>
58+
<TextBlock Margin="4,0,0,0"
59+
Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}"
60+
Foreground="DarkOrange"
61+
TextDecorations="Underline"
62+
Cursor="Hand"
63+
PointerPressed="OnPressedSHA"
64+
ToolTip.Tip="{Binding}"
65+
ToolTip.ShowDelay="0">
66+
<TextBlock.DataTemplates>
67+
<DataTemplate DataType="m:Commit">
68+
<StackPanel MinWidth="400" Orientation="Vertical">
69+
<Grid ColumnDefinitions="Auto,*,Auto">
70+
<v:Avatar Grid.Column="0" Width="16" Height="16" VerticalAlignment="Center" IsHitTestVisible="False" User="{Binding Author}"/>
71+
<TextBlock Grid.Column="1" Classes="primary" Text="{Binding Author.Name}" Margin="8,0,0,0"/>
72+
<TextBlock Grid.Column="2" Classes="primary" Text="{Binding CommitterTimeStr}" Foreground="{DynamicResource Brush.FG2}" Margin="8,0,0,0"/>
73+
</Grid>
7974

80-
<DataTemplate DataType="x:String">
81-
<StackPanel Orientation="Horizontal">
82-
<Path Width="12" Height="12" Data="{StaticResource Icons.Changes}"/>
83-
<TextBlock Margin="4,0,0,0" Text="{Binding}"/>
84-
</StackPanel>
85-
</DataTemplate>
86-
</StackPanel.DataTemplates>
75+
<TextBlock Classes="primary" Margin="0,8,0,0" Text="{Binding Subject}" TextWrapping="Wrap"/>
76+
</StackPanel>
77+
</DataTemplate>
78+
</TextBlock.DataTemplates>
79+
</TextBlock>
80+
<TextBlock Margin="4,0,0,0" Text="{Binding Subject}"/>
81+
</StackPanel>
82+
</DataTemplate>
8783

88-
<Path Width="64" Height="64" Data="{StaticResource Icons.Conflict}" Fill="{DynamicResource Brush.FG2}" HorizontalAlignment="Center"/>
89-
<TextBlock Margin="0,16" FontSize="20" FontWeight="Bold" Text="{DynamicResource Text.WorkingCopy.Conflicts}" Foreground="{DynamicResource Brush.FG2}" HorizontalAlignment="Center"/>
90-
91-
<Border Margin="16,0" Padding="8" CornerRadius="4" BorderThickness="1" BorderBrush="{DynamicResource Brush.Border2}">
84+
<DataTemplate DataType="x:String">
85+
<StackPanel Orientation="Horizontal">
86+
<Path Width="12" Height="12" Data="{StaticResource Icons.Changes}"/>
87+
<TextBlock Margin="4,0,0,0" Text="{Binding}"/>
88+
</StackPanel>
89+
</DataTemplate>
90+
</Border.DataTemplates>
91+
9292
<Border.IsVisible>
9393
<MultiBinding Converter="{x:Static BoolConverters.And}">
9494
<Binding Path="Theirs" Converter="{x:Static ObjectConverters.IsNotNull}"/>
@@ -105,9 +105,24 @@
105105
</Border>
106106

107107
<StackPanel Margin="0,8,0,0" Orientation="Horizontal" HorizontalAlignment="Center">
108-
<Button Classes="flat" Margin="0,0,0,0" Content="{DynamicResource Text.WorkingCopy.Conflicts.UseTheirs}" Command="{Binding UseTheirs}"/>
109-
<Button Classes="flat" Margin="8,0,0,0" Content="{DynamicResource Text.WorkingCopy.Conflicts.UseMine}" Command="{Binding UseMine}"/>
110-
<Button Classes="flat" Margin="8,0,0,0" Content="{DynamicResource Text.WorkingCopy.Conflicts.OpenExternalMergeTool}" Command="{Binding OpenExternalMergeTool}"/>
108+
<Button Classes="flat" Margin="0,0,0,0" Command="{Binding UseTheirs}" ToolTip.Tip="git checkout --theirs">
109+
<StackPanel Orientation="Horizontal">
110+
<Path Width="12" Height="12" Data="{StaticResource Icons.Incoming}"/>
111+
<TextBlock Margin="6,0,0,0" Text="{DynamicResource Text.WorkingCopy.Conflicts.UseTheirs}" VerticalAlignment="Center"/>
112+
</StackPanel>
113+
</Button>
114+
<Button Classes="flat" Margin="8,0,0,0" Command="{Binding UseMine}" ToolTip.Tip="git checkout --theirs">
115+
<StackPanel Orientation="Horizontal">
116+
<Path Width="12" Height="12" Data="{StaticResource Icons.Local}"/>
117+
<TextBlock Margin="6,0,0,0" Text="{DynamicResource Text.WorkingCopy.Conflicts.UseMine}" VerticalAlignment="Center"/>
118+
</StackPanel>
119+
</Button>
120+
<Button Classes="flat" Margin="8,0,0,0" Command="{Binding OpenExternalMergeTool}">
121+
<StackPanel Orientation="Horizontal">
122+
<Path Width="12" Height="12" Data="{StaticResource Icons.OpenWith}"/>
123+
<TextBlock Margin="6,0,0,0" Text="{DynamicResource Text.WorkingCopy.Conflicts.OpenExternalMergeTool}" VerticalAlignment="Center"/>
124+
</StackPanel>
125+
</Button>
111126
</StackPanel>
112127
</StackPanel>
113128

src/Views/WorkingCopy.axaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,27 +68,27 @@
6868
<v:LoadingIcon Grid.Column="3" Width="14" Height="14" Margin="8,0,0,0" IsVisible="{Binding IsStaging}"/>
6969

7070
<Button Grid.Column="5"
71-
Classes="icon_button"
72-
Width="26" Height="14"
73-
Padding="0"
74-
IsVisible="{Binding HasUnsolvedConflicts}"
75-
ToolTip.Tip="{DynamicResource Text.WorkingCopy.Conflicts.OpenExternalMergeToolAllConflicts}"
76-
Command="{Binding OpenExternalMergeToolAllConflicts}">
77-
<Path Width="14" Height="14" Data="{StaticResource Icons.Conflict}"/>
78-
</Button>
79-
<Button Grid.Column="6"
8071
Classes="icon_button"
8172
Width="26" Height="14"
8273
Padding="0"
8374
ToolTip.Tip="{DynamicResource Text.WorkingCopy.Unstaged.ViewAssumeUnchaged}"
8475
Command="{Binding OpenAssumeUnchanged}">
8576
<Path Width="14" Height="14" Data="{StaticResource Icons.File.Ignore}"/>
8677
</Button>
87-
<ToggleButton Grid.Column="7"
78+
<ToggleButton Grid.Column="6"
8879
Classes="toggle_untracked"
8980
Width="26" Height="14"
9081
ToolTip.Tip="{DynamicResource Text.WorkingCopy.IncludeUntracked}"
9182
IsChecked="{Binding IncludeUntracked, Mode=TwoWay}"/>
83+
<Button Grid.Column="7"
84+
Classes="icon_button"
85+
Width="26" Height="14"
86+
Padding="0"
87+
IsVisible="{Binding HasUnsolvedConflicts}"
88+
ToolTip.Tip="{DynamicResource Text.WorkingCopy.Conflicts.OpenExternalMergeToolAllConflicts}"
89+
Command="{Binding OpenExternalMergeToolAllConflicts}">
90+
<Path Width="14" Height="14" Data="{StaticResource Icons.Conflict}"/>
91+
</Button>
9292
<Button Grid.Column="8"
9393
Classes="icon_button"
9494
Width="26" Height="14"

0 commit comments

Comments
 (0)