public override void OnUpdate(CommandUpdateEventArgs e) { PendingChange.RefreshContext rc = null; foreach (SvnItem i in e.Selection.GetSelectedSvnItems(true)) { if (PendingChange.IsPending(i)) { PendingChange pc; if (rc == null) { rc = new PendingChange.RefreshContext(e.Context); } if (PendingChange.CreateIfPending(rc, i, out pc)) { if (pc.IsNoChangeForPatching()) { continue; } } return; } } e.Enabled = false; }
public override void OnExecute(CommandEventArgs e) { IPendingChangesManager pcm = e.GetService <IPendingChangesManager>(); PendingChange.RefreshContext rc = new PendingChange.RefreshContext(e.Context); Dictionary <string, PendingChange> selectedChanges = new Dictionary <string, PendingChange>(StringComparer.OrdinalIgnoreCase); List <SvnItem> resources = new List <SvnItem>(); foreach (SvnItem item in e.Selection.GetSelectedSvnItems(true)) { PendingChange pc; if (PendingChange.CreateIfPending(rc, item, out pc)) { if (!pc.IsNoChangeForPatching()) { selectedChanges.Add(pc.FullPath, pc); resources.Add(pc.SvnItem); } } } if (resources.Count == 0) { return; } using (PendingChangeSelector pcs = new PendingChangeSelector()) { pcs.Text = CommandStrings.CreatePatchTitle; pcs.PreserveWindowPlacement = true; pcs.LoadItems(resources); DialogResult dr = pcs.ShowDialog(e.Context); if (dr != DialogResult.OK) { return; } string fileName = GetFileName(e.Context.DialogOwner); if (string.IsNullOrEmpty(fileName)) { return; } PendingChangeCreatePatchArgs pca = new PendingChangeCreatePatchArgs(); pca.FileName = fileName; IAnkhSolutionSettings ss = e.GetService <IAnkhSolutionSettings>(); pca.RelativeToPath = ss.ProjectRoot; pca.AddUnversionedFiles = true; List <PendingChange> patchChanges = new List <PendingChange>(pcs.GetSelection()); e.GetService <IPendingChangeHandler>().CreatePatch(patchChanges, pca); } }