Ejemplo n.º 1
0
 private void InvokePostEvent(IWin32Window ownerForm, bool actionDone, GitUIPostActionEventHandler gitUIEventHandler)
 {
     if (gitUIEventHandler != null)
     {
         var e = new GitUIPostActionEventArgs(ownerForm, this, actionDone);
         gitUIEventHandler(this, e);
     }
 }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        /// <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;
        }
Ejemplo n.º 4
0
 private void InvokePostEvent(IWin32Window ownerForm, bool actionDone, GitUIPostActionEventHandler gitUIEventHandler)
 {
     if (gitUIEventHandler != null)
     {
         var e = new GitUIPostActionEventArgs(ownerForm, this, actionDone);
         gitUIEventHandler(this, e);
     }
 }
Ejemplo n.º 5
0
        /// <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;
        }
Ejemplo n.º 6
0
        /// <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);
        }