コード例 #1
0
        internal static bool InvokeEvent(object sender, GitUIEventHandler gitUIEventHandler)
        {
            try
            {
                var e = new GitUIEventArgs(Instance);
                if (gitUIEventHandler != null)
                {
                    gitUIEventHandler(sender, e);
                }

                return(!e.Cancel);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Exception");
            }
            return(true);
        }
コード例 #2
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);
        }
コード例 #3
0
ファイル: GitUICommands.cs プロジェクト: Copro/gitextensions
        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();
        }
コード例 #4
0
ファイル: GitUICommands.cs プロジェクト: Copro/gitextensions
 public void InvokeEventOnClose(Form form, GitUIEventHandler ev)
 {
     form.FormClosed += (object o, FormClosedEventArgs ea) =>
     {
         InvokeEvent(form == null ? null : form.Owner, ev);
     };
 }
コード例 #5
0
ファイル: GitUICommands.cs プロジェクト: Copro/gitextensions
        /// <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;
        }
コード例 #6
0
ファイル: GitUICommands.cs プロジェクト: Copro/gitextensions
 private bool InvokeEvent(IWin32Window ownerForm, GitUIEventHandler gitUIEventHandler)
 {
     return InvokeEvent(this, ownerForm, gitUIEventHandler);
 }
コード例 #7
0
ファイル: GitUICommands.cs プロジェクト: Copro/gitextensions
        internal bool InvokeEvent(object sender, IWin32Window ownerForm, GitUIEventHandler gitUIEventHandler)
        {
            try
            {
                var e = new GitUIEventArgs(ownerForm, this);
                if (gitUIEventHandler != null)
                    gitUIEventHandler(sender, e);

                return !e.Cancel;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Exception");
            }
            return true;
        }
コード例 #8
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;
        }
コード例 #9
0
 private bool InvokeEvent(GitUIEventHandler gitUIEventHandler)
 {
     return InvokeEvent(this, gitUIEventHandler);
 }
コード例 #10
0
        internal static bool InvokeEvent(object sender, GitUIEventHandler gitUIEventHandler)
        {
            try
            {
                var e = new GitUIEventArgs(Instance);
                if (gitUIEventHandler != null)
                    gitUIEventHandler(sender, e);

                return !e.Cancel;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Exception");
            }
            return true;
        }
コード例 #11
0
 private bool InvokeEvent(GitUIEventHandler gitUIEventHandler)
 {
     return(InvokeEvent(this, gitUIEventHandler));
 }
コード例 #12
0
        internal static bool InvokeEvent(GitUIEventHandler gitUIEventHandler)
        {
            try
            {
                GitUIEventArgs e = new GitUIEventArgs(GitUICommands.Instance);
                if (gitUIEventHandler != null)
                    gitUIEventHandler.Invoke(e);

                return !e.Cancel;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Exception");
            }
            return true;
        }
コード例 #13
0
 private bool InvokeEvent(IWin32Window ownerForm, GitUIEventHandler gitUIEventHandler)
 {
     return(InvokeEvent(this, ownerForm, gitUIEventHandler));
 }