private static void OnCommitFinished(IWin32Window parentWindow, int revision, GoogleCodeProject project, ICollection <Issue> issues) { if (project == null) { return; } if (issues == null || issues.Count == 0) { return; } // don't bother users with the issue update dialog if the // env variable is not set. if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("GURTLE_ISSUE_UPDATE_CMD"))) { return; } var settings = Properties.Settings.Default; var updates = issues.Select(e => new IssueUpdate(e) { Status = project.ClosedStatuses.FirstOrDefault(), Comment = string.Format("{0} in r{1}.", GetIssueTypeAddress(e.Type), revision) }) .ToList(); while (updates.Count > 0) { using (var dialog = new IssueUpdateDialog { Project = project, Issues = updates, Revision = revision }) { new WindowSettings(settings, dialog); if (DialogResult.OK != dialog.ShowDialog(parentWindow)) { return; } } if (updates.Count == 0) { break; } var credential = CredentialPrompt.Prompt(parentWindow, "Google Code", project.Name + ".gccred"); if (credential == null) { continue; } credential = new NetworkCredential(credential.UserName, Convert.ToBase64String(Encoding.UTF8.GetBytes(credential.Password))); using (var form = new WorkProgressForm { Text = "Updating Issues", StartWorkOnShow = true, }) { var worker = form.Worker; worker.DoWork += (sender, args) => { var startCount = updates.Count; while (updates.Count > 0) { if (worker.CancellationPending) { args.Cancel = true; break; } var issue = updates[0]; form.ReportProgress(string.Format( @"Updating issue #{0}: {1}", issue.Issue.Id, issue.Issue.Summary)); UpdateIssue(project.Name, issue, credential, form.ReportDetailLine); updates.RemoveAt(0); form.ReportProgress((int)((startCount - updates.Count) * 100.0 / startCount)); } }; form.WorkFailed += delegate { var error = form.Error; foreach (var line in new StringReader(error.ToString()).ReadLines()) { form.ReportDetailLine(line); } ShowErrorBox(form, error); }; if (parentWindow == null) { form.StartPosition = FormStartPosition.CenterScreen; } form.ShowDialog(parentWindow); } } settings.Save(); }
private static void OnCommitFinished(IWin32Window parentWindow, string revision, IProvider project, ICollection<Issue> issues) { if (project == null) return; if (issues == null || issues.Count == 0) return; if (!project.CanHandleIssueUpdates()) return; var settings = Properties.Settings.Default; var updates = issues.Select(e => new IssueUpdate(e) { Status = project.ClosedStatuses.FirstOrDefault(), Comment = string.Format("{0} in rev. {1}.", GetIssueTypeAddress(e.Type), revision) }) .ToList(); while (updates.Count > 0) { using (var dialog = new IssueUpdateDialog(project) { Issues = updates, Revision = revision }) { new WindowSettings(settings, dialog); if (DialogResult.OK != dialog.ShowDialog(parentWindow)) return; } if (updates.Count == 0) break; var credential = CredentialPrompt.Prompt(parentWindow, project.Name, project.Name + "-" + FilenameUtils.EscapeFilename(project.ProjectName) + ".gccred"); if (credential == null) continue; using (var form = new WorkProgressForm { Text = "Updating Issues", StartWorkOnShow = true, }) { var worker = form.Worker; worker.DoWork += (sender, args) => { var startCount = updates.Count; while (updates.Count > 0) { if (worker.CancellationPending) { args.Cancel = true; break; } var issue = updates[0]; form.ReportProgress(string.Format( @"Updating issue #{0}: {1}", issue.Issue.Id, issue.Issue.Summary)); UpdateIssue(project, issue, credential, form.ReportDetailLine); updates.RemoveAt(0); form.ReportProgress((int)((startCount - updates.Count) * 100.0 / startCount)); } }; form.WorkFailed += delegate { var error = form.Error; foreach (var line in new StringReader(error.ToString()).ReadLines()) form.ReportDetailLine(line); ShowErrorBox(form, error); }; if (parentWindow == null) form.StartPosition = FormStartPosition.CenterScreen; form.ShowDialog(parentWindow); } } settings.Save(); }
private static void OnCommitFinished(IWin32Window parentWindow, int revision, GoogleCodeProject project, ICollection<Issue> issues) { if (project == null) return; if (issues == null || issues.Count == 0) return; // don't bother users with the issue update dialog if the // env variable is not set. if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("GURTLE_ISSUE_UPDATE_CMD"))) return; var settings = Properties.Settings.Default; var updates = issues.Select(e => new IssueUpdate(e) { Status = project.ClosedStatuses.FirstOrDefault(), Comment = string.Format("{0} in r{1}.", GetIssueTypeAddress(e.Type), revision) }) .ToList(); while (updates.Count > 0) { using (var dialog = new IssueUpdateDialog { Project = project, Issues = updates, Revision = revision }) { new WindowSettings(settings, dialog); if (DialogResult.OK != dialog.ShowDialog(parentWindow)) return; } if (updates.Count == 0) break; var credential = CredentialPrompt.Prompt(parentWindow, "Google Code", project.Name + ".gccred"); if (credential == null) continue; credential = new NetworkCredential(credential.UserName, Convert.ToBase64String(Encoding.UTF8.GetBytes(credential.Password))); using (var form = new WorkProgressForm { Text = "Updating Issues", StartWorkOnShow = true, }) { var worker = form.Worker; worker.DoWork += (sender, args) => { var startCount = updates.Count; while (updates.Count > 0) { if (worker.CancellationPending) { args.Cancel = true; break; } var issue = updates[0]; form.ReportProgress(string.Format( @"Updating issue #{0}: {1}", issue.Issue.Id, issue.Issue.Summary)); UpdateIssue(project.Name, issue, credential, form.ReportDetailLine); updates.RemoveAt(0); form.ReportProgress((int)((startCount - updates.Count) * 100.0 / startCount)); } }; form.WorkFailed += delegate { var error = form.Error; foreach (var line in new StringReader(error.ToString()).ReadLines()) form.ReportDetailLine(line); ShowErrorBox(form, error); }; if (parentWindow == null) form.StartPosition = FormStartPosition.CenterScreen; form.ShowDialog(parentWindow); } } settings.Save(); }