using System.Collections.Generic; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace SourceGit.UI { /// /// Confirm to discard changes dialog. /// public partial class Discard : UserControl { private Git.Repository repo = null; private List changes = null; /// /// Constructor. /// /// /// public Discard(Git.Repository opened, List targets) { repo = opened; changes = targets; InitializeComponent(); if (changes == null || changes.Count == 0) { txtPath.Text = "All local changes in working copy."; icon.Data = FindResource("Icon.Folder") as Geometry; } else if (changes.Count == 1) { txtPath.Text = changes[0].Path; } else { txtPath.Text = $"Total {changes.Count} changes ..."; } } /// /// Show this dialog /// /// /// public static void Show(Git.Repository opened, List targets) { opened.GetPopupManager()?.Show(new Discard(opened, targets)); } /// /// Start to discard changes /// /// /// private async void Sure(object sender, RoutedEventArgs e) { var popup = repo.GetPopupManager(); popup?.Lock(); await Task.Run(() => repo.Discard(changes)); popup?.Close(true); } /// /// Cancel /// /// /// private void Cancel(object sender, RoutedEventArgs e) { repo.GetPopupManager()?.Close(); } } }