feature<Stashes>: supports clear all stashes

This commit is contained in:
leo 2023-08-21 20:33:41 +08:00
parent 4d7b16dc75
commit f92f5746b9
4 changed files with 46 additions and 2 deletions

View file

@ -542,4 +542,5 @@
<sys:String x:Key="Text.BadArchiveFile">Invalid path for archive file</sys:String>
<sys:String x:Key="Text.Required">This field is required</sys:String>
<sys:String x:Key="Text.ConfirmRemoveRepo">You are removing repository '{0}'. Are you sure to continue?</sys:String>
<sys:String x:Key="Text.ConfirmClearStashes">You are trying to clear all stashes. Are you sure to continue?</sys:String>
</ResourceDictionary>

View file

@ -541,4 +541,5 @@
<sys:String x:Key="Text.BadArchiveFile">非法的存档文件路径!</sys:String>
<sys:String x:Key="Text.Required">内容未填写!</sys:String>
<sys:String x:Key="Text.ConfirmRemoveRepo">正在将 '{0}' 从列表中移除,是否要继续?</sys:String>
<sys:String x:Key="Text.ConfirmClearStashes">您正在丢弃所有的贮藏,一经操作,无法回退,是否继续?</sys:String>
</ResourceDictionary>

View file

@ -26,25 +26,43 @@
<!-- Stashes List Group -->
<Border Grid.Row="0" BorderBrush="{DynamicResource Brush.Border0}" BorderThickness="0,0,0,1">
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Path
Grid.Column="0"
Margin="4,0"
Width="12" Height="12"
Fill="{DynamicResource Brush.FG2}"
Data="{StaticResource Icon.Stashes}"/>
<TextBlock
Grid.Column="1"
Margin="4,0,0,0"
Text="{DynamicResource Text.Stashes.Stashes}"
Foreground="{DynamicResource Brush.FG2}"
FontWeight="Bold"/>
<controls:Loading
Grid.Column="2"
x:Name="waiting"
Width="12" Height="12"
Margin="8,0,0,0"
Visibility="Collapsed"/>
</StackPanel>
<controls:IconButton
Grid.Column="4"
Click="ClearAll"
Width="14" Height="14"
Margin="8,0"
Icon="{StaticResource Icon.Clear}"/>
</Grid>
</Border>
<!-- Stashes List -->

View file

@ -25,6 +25,30 @@ namespace SourceGit.Views.Widgets {
changeList.ItemsSource = null;
}
private void ClearAll(object sender, RoutedEventArgs e) {
var confirmDialog = new ConfirmDialog(
App.Text("Apply.Warn"),
App.Text("ConfirmClearStashes"),
async () => {
waiting.Visibility = Visibility.Visible;
waiting.IsAnimating = true;
Models.Watcher.SetEnabled(repo, false);
await Task.Run(() => {
new Commands.Command() {
Cwd = repo,
Args = "stash clear",
}.Exec();
});
Models.Watcher.SetEnabled(repo, true);
waiting.Visibility = Visibility.Collapsed;
waiting.IsAnimating = false;
});
confirmDialog.Owner = App.Current.MainWindow;
confirmDialog.ShowDialog();
e.Handled = true;
}
private async void OnStashSelectionChanged(object sender, SelectionChangedEventArgs e) {
changeList.ItemsSource = null;
selected = null;