public void RemoveSolutionItem (SolutionItem item) { string question = GettextCatalog.GetString ("Do you really want to remove project '{0}' from '{1}'?", item.Name, item.ParentFolder.Name); string secondaryText = GettextCatalog.GetString ("The Remove option remove the project from the solution, but it will not physically delete any file from disk."); SolutionEntityItem prj = item as SolutionEntityItem; if (prj == null) { if (MessageService.Confirm (question, AlertButton.Remove) && IdeApp.Workspace.RequestItemUnload (item)) RemoveItemFromSolution (prj); return; } AlertButton delete = new AlertButton (GettextCatalog.GetString ("Delete from Disk")); AlertButton result = MessageService.AskQuestion (question, secondaryText, delete, AlertButton.Cancel, AlertButton.Remove); if (result == delete) { if (!IdeApp.Workspace.RequestItemUnload (prj)) return; ConfirmProjectDeleteDialog dlg = new ConfirmProjectDeleteDialog (prj); if (MessageService.RunCustomDialog (dlg) == (int) Gtk.ResponseType.Ok) { // Remove the project before removing the files to avoid unnecessary events RemoveItemFromSolution (prj); List<FilePath> files = dlg.GetFilesToDelete (); dlg.Destroy (); using (IProgressMonitor monitor = new MessageDialogProgressMonitor (true)) { monitor.BeginTask (GettextCatalog.GetString ("Deleting Files..."), files.Count); foreach (FilePath file in files) { try { if (Directory.Exists (file)) FileService.DeleteDirectory (file); else FileService.DeleteFile (file); } catch (Exception ex) { monitor.ReportError (GettextCatalog.GetString ("The file or directory '{0}' could not be deleted.", file), ex); } monitor.Step (1); } monitor.EndTask (); } } else dlg.Destroy (); } else if (result == AlertButton.Remove && IdeApp.Workspace.RequestItemUnload (prj)) { RemoveItemFromSolution (prj); } }
public static void SwitchToBranch (GitRepository repo, string branch) { MessageDialogProgressMonitor monitor = new MessageDialogProgressMonitor (true, false, false, true); try { IdeApp.Workbench.AutoReloadDocuments = true; IdeApp.Workbench.LockGui (); System.Threading.ThreadPool.QueueUserWorkItem (delegate { try { repo.SwitchToBranch (monitor, branch); } catch (Exception ex) { monitor.ReportError ("Branch switch failed", ex); } finally { monitor.Dispose (); } }); monitor.AsyncOperation.WaitForCompleted (); } finally { IdeApp.Workbench.AutoReloadDocuments = false; IdeApp.Workbench.UnlockGui (); } }
public static Task<bool> ApplyStash (GitRepository repo, int s) { var monitor = new MessageDialogProgressMonitor (true, false, false, true); var statusTracker = IdeApp.Workspace.GetFileStatusTracker (); var t = Task.Run (delegate { try { var res = repo.ApplyStash (monitor, s); ReportStashResult (res); return true; } catch (Exception ex) { string msg = GettextCatalog.GetString ("Stash operation failed."); monitor.ReportError (msg, ex); return false; } finally { monitor.Dispose (); statusTracker.Dispose (); } }); return t; }
public async static Task<bool> SwitchToBranch (GitRepository repo, string branch) { var monitor = new MessageDialogProgressMonitor (true, false, false, true); try { IdeApp.Workbench.AutoReloadDocuments = true; IdeApp.Workbench.LockGui (); var t = await Task.Run (delegate { try { return repo.SwitchToBranch (monitor, branch); } catch (Exception ex) { monitor.ReportError (GettextCatalog.GetString ("Branch switch failed"), ex); return false; } finally { monitor.Dispose (); } }); return t; } finally { IdeApp.Workbench.AutoReloadDocuments = false; IdeApp.Workbench.UnlockGui (); } }
public static IAsyncOperation ApplyStash (Stash s) { MessageDialogProgressMonitor monitor = new MessageDialogProgressMonitor (true, false, false, true); var statusTracker = IdeApp.Workspace.GetFileStatusTracker (); ThreadPool.QueueUserWorkItem (delegate { try { NGit.Api.MergeCommandResult result; using (var gm = new GitMonitor (monitor)) result = s.Apply (gm); ReportStashResult (monitor, result); } catch (Exception ex) { string msg = GettextCatalog.GetString ("Stash operation failed."); monitor.ReportError (msg, ex); } finally { monitor.Dispose (); statusTracker.NotifyChanges (); } }); return monitor.AsyncOperation; }
public static void SwitchToBranch (GitRepository repo, string branch) { var monitor = new MessageDialogProgressMonitor (true, false, false, true); try { IdeApp.Workbench.AutoReloadDocuments = true; IdeApp.Workbench.LockGui (); Task.Run (delegate { try { repo.SwitchToBranch (monitor, branch); } catch (Exception ex) { monitor.ReportError ("Branch switch failed", ex); } finally { monitor.Dispose (); } }).Wait (); } finally { IdeApp.Workbench.AutoReloadDocuments = false; IdeApp.Workbench.UnlockGui (); } }
public static IAsyncOperation ApplyStash (GitRepository repo, int s) { var monitor = new MessageDialogProgressMonitor (true, false, false, true); var statusTracker = IdeApp.Workspace.GetFileStatusTracker (); ThreadPool.QueueUserWorkItem (delegate { try { ReportStashResult (repo.ApplyStash (monitor, s)); } catch (Exception ex) { string msg = GettextCatalog.GetString ("Stash operation failed."); monitor.ReportError (msg, ex); } finally { monitor.Dispose (); statusTracker.Dispose (); } }); return monitor.AsyncOperation; }