private void InvokePostEvent(IWin32Window ownerForm, bool actionDone, GitUIPostActionEventHandler gitUIEventHandler) { if (gitUIEventHandler != null) { var e = new GitUIPostActionEventArgs(ownerForm, this, actionDone); gitUIEventHandler(this, e); } }
public void ShowModelessForm(IWin32Window owner, bool requiresValidWorkingDir, GitUIEventHandler preEvent, GitUIPostActionEventHandler postEvent, Func<Form> provideForm) { if (requiresValidWorkingDir && !RequiresValidWorkingDir(owner)) return; if (!InvokeEvent(owner, preEvent)) return; Form form = provideForm(); FormClosedEventHandler formClosed = null; formClosed = (sender, e) => { form.FormClosed -= formClosed; InvokePostEvent(owner, true, postEvent); }; form.FormClosed += formClosed; form.ShowInTaskbar = true; if (Application.OpenForms.Count > 0) form.Show(); else form.ShowDialog(); }
/// <summary> /// /// </summary> /// <param name="requiresValidWorkingDir">If action requires valid working directory</param> /// <param name="owner">Owner window</param> /// <param name="changesRepo">if successfuly done action changes repo state</param> /// <param name="preEvent">Event invoked before performing action</param> /// <param name="postEvent">Event invoked after performing action</param> /// <param name="action">Action to do. Return true to indicate that the action was successfully done.</param> /// <returns>true if action was sccessfully done, false otherwise</returns> public bool DoActionOnRepo(IWin32Window owner, bool requiresValidWorkingDir, bool changesRepo, GitUIEventHandler preEvent, GitUIPostActionEventHandler postEvent, Func<bool> action) { bool actionDone = false; RepoChangedNotifier.Lock(); try { if (requiresValidWorkingDir && !RequiresValidWorkingDir(owner)) return false; if (!InvokeEvent(owner, preEvent)) return false; try { actionDone = action(); } finally { InvokePostEvent(owner, actionDone, postEvent); } } finally { RepoChangedNotifier.UnLock(changesRepo && actionDone); } return actionDone; }
private void InvokePostEvent(IWin32Window ownerForm, bool actionDone, GitUIPostActionEventHandler gitUIEventHandler) { if (gitUIEventHandler != null) { var e = new GitUIPostActionEventArgs(ownerForm, this, actionDone); gitUIEventHandler(this, e); } }
/// <summary> /// /// </summary> /// <param name="requiresValidWorkingDir">If action requires valid working directory</param> /// <param name="owner">Owner window</param> /// <param name="preEvent">Event invoked before performing action</param> /// <param name="postEvent">Event invoked after performing action</param> /// <param name="action">Action to do</param> /// <returns>true if action was done, false otherwise</returns> public bool DoAction(IWin32Window owner, bool requiresValidWorkingDir, GitUIEventHandler preEvent, GitUIPostActionEventHandler postEvent, Func<bool> action) { if (requiresValidWorkingDir && !RequiresValidWorkingDir(owner)) return false; if (!InvokeEvent(owner, preEvent)) return false; bool actionDone = action(); InvokePostEvent(owner, actionDone, postEvent); return actionDone; }
/// <summary> /// /// </summary> /// <param name="requiresValidWorkingDir">If action requires valid working directory</param> /// <param name="owner">Owner window</param> /// <param name="preEvent">Event invoked before performing action</param> /// <param name="postEvent">Event invoked after performing action</param> /// <param name="action">Action to do</param> /// <returns>true if action was done, false otherwise</returns> public bool DoAction(IWin32Window owner, bool requiresValidWorkingDir, GitUIEventHandler preEvent, GitUIPostActionEventHandler postEvent, Func <bool> action) { if (requiresValidWorkingDir && !RequiresValidWorkingDir(owner)) { return(false); } if (!InvokeEvent(owner, preEvent)) { return(false); } bool actionDone = action(); InvokePostEvent(owner, actionDone, postEvent); return(actionDone); }