using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace SourceGit.UI { /// /// Create tag dialog /// public partial class CreateTag : UserControl { private Git.Repository repo = null; private string based = null; /// /// Tag name /// public string TagName { get; set; } /// /// Constructor. /// /// public CreateTag(Git.Repository opened) { InitializeComponent(); repo = opened; nameValidator.Repo = opened; } /// /// Create tag using current branch. /// /// Opened repository. public static void Show(Git.Repository repo) { Show(repo, repo.Branches().First(b => b.IsCurrent)); } /// /// Create tag using branch /// /// /// public static void Show(Git.Repository repo, Git.Branch branch) { if (branch == null) { App.RaiseError("Empty repository!"); return; } var dialog = new CreateTag(repo); dialog.based = branch.Head; dialog.basedOnType.Data = dialog.FindResource("Icon.Branch") as Geometry; dialog.basedOnDesc.Content = branch.Name; PopupManager.Show(dialog); } /// /// Create tag using commit. /// /// /// public static void Show(Git.Repository repo, Git.Commit commit) { var dialog = new CreateTag(repo); dialog.based = commit.SHA; dialog.basedOnType.Data = dialog.FindResource("Icon.Commit") as Geometry; dialog.basedOnDesc.Content = $"{commit.ShortSHA} {commit.Subject}"; PopupManager.Show(dialog); } /// /// Start to create tag. /// /// /// private void Start(object sender, RoutedEventArgs e) { tagName.GetBindingExpression(TextBox.TextProperty).UpdateSource(); if (Validation.GetHasError(tagName)) return; Git.Tag.Add(repo, TagName, based, tagMessage.Text); PopupManager.Close(); } /// /// Cancel. /// /// /// private void Cancel(object sender, RoutedEventArgs e) { PopupManager.Close(); } } }