Пример #1
0
        public StashedStateMenu(StashedState stashedState)
        {
            Verify.Argument.IsValidGitObject(stashedState, nameof(stashedState));

            StashedState = stashedState;

            Items.AddRange(
                new ToolStripItem[]
            {
                GuiItemFactory.GetViewDiffItem <ToolStripMenuItem>(StashedState.GetDiffSource()),
                GuiItemFactory.GetViewTreeItem <ToolStripMenuItem>(StashedState),
                GuiItemFactory.GetSavePatchItem <ToolStripMenuItem>(StashedState),
                new ToolStripSeparator(),
                GuiItemFactory.GetStashPopItem <ToolStripMenuItem>(StashedState),
                GuiItemFactory.GetStashApplyItem <ToolStripMenuItem>(StashedState),
                GuiItemFactory.GetStashDropItem <ToolStripMenuItem>(StashedState),
                new ToolStripSeparator(),
                GuiItemFactory.GetStashToBranchItem <ToolStripMenuItem>(StashedState),
                new ToolStripSeparator(),
                new ToolStripMenuItem(Resources.StrCopyToClipboard, null,
                                      new ToolStripItem[]
                {
                    GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrName, ((IRevisionPointer)StashedState).Pointer),
                    GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(Resources.StrHash, StashedState.Revision.Hash.ToString()),
                    GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrSubject, StashedState.Revision.Subject),
                }),
            });
        }
Пример #2
0
        public SubmoduleMenu(Submodule submodule)
        {
            Verify.Argument.IsValidGitObject(submodule, nameof(submodule));

            Submodule = submodule;

            Items.Add(GuiItemFactory.GetOpenAppItem <ToolStripMenuItem>(
                          Resources.StrOpenWithGitter, null, Application.ExecutablePath, Submodule.FullPath.SurroundWithDoubleQuotes()));
            Items.Add(GuiItemFactory.GetOpenUrlItem <ToolStripMenuItem>(
                          Resources.StrOpenInWindowsExplorer, null, Submodule.FullPath));
            Items.Add(GuiItemFactory.GetOpenCmdAtItem <ToolStripMenuItem>(
                          Resources.StrOpenCommandLine, null, Submodule.FullPath));

            Items.Add(new ToolStripSeparator());

            Items.Add(GuiItemFactory.GetUpdateSubmoduleItem <ToolStripMenuItem>(submodule));
            Items.Add(GuiItemFactory.GetSyncSubmoduleItem <ToolStripMenuItem>(submodule));

            Items.Add(new ToolStripSeparator());             // copy to clipboard section

            var item = new ToolStripMenuItem(Resources.StrCopyToClipboard);

            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrName, Submodule.Name));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrPath, Submodule.Path));
            item.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(Resources.StrUrl, Submodule.Url));

            Items.Add(item);
        }
Пример #3
0
        public RemoteMenu(Remote remote)
        {
            Verify.Argument.IsValidGitObject(remote, "remote");

            _remote = remote;

            Items.Add(GuiItemFactory.GetShowRemoteItem <ToolStripMenuItem>(remote));
            Items.Add(GuiItemFactory.GetEditRemotePropertiesItem <ToolStripMenuItem>(remote));

            Items.Add(new ToolStripSeparator());

            Items.Add(GuiItemFactory.GetFetchFromItem <ToolStripMenuItem>(remote, "{0}"));
            Items.Add(GuiItemFactory.GetPullFromItem <ToolStripMenuItem>(remote, "{0}"));
            Items.Add(GuiItemFactory.GetPruneRemoteItem <ToolStripMenuItem>(remote, "{0}"));

            Items.Add(new ToolStripSeparator());

            Items.Add(GuiItemFactory.GetRemoveRemoteItem <ToolStripMenuItem>(remote, "{0}"));
            Items.Add(GuiItemFactory.GetRenameRemoteItem <ToolStripMenuItem>(remote, "{0}"));

            Items.Add(new ToolStripSeparator());

            var item = new ToolStripMenuItem(Resources.StrCopyToClipboard);

            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrName, remote.Name));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFetchUrl, remote.FetchUrl));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrPushUrl, remote.PushUrl));

            Items.Add(item);
        }
Пример #4
0
        public TagMenu(Tag tag)
        {
            Verify.Argument.IsValidGitObject(tag, "tag");

            _tag = tag;

            Items.Add(GuiItemFactory.GetViewTreeItem <ToolStripMenuItem>(_tag));
            Items.Add(GuiItemFactory.GetArchiveItem <ToolStripMenuItem>(_tag));

            Items.Add(new ToolStripSeparator());             // interactive section

            Items.Add(GuiItemFactory.GetCheckoutRevisionItem <ToolStripMenuItem>(_tag, "{0} '{1}'"));
            Items.Add(GuiItemFactory.GetResetHeadHereItem <ToolStripMenuItem>(_tag));
            Items.Add(GuiItemFactory.GetRemoveTagItem <ToolStripMenuItem>(_tag, Resources.StrDelete));

            Items.Add(new ToolStripSeparator());             // copy to clipboard section

            var item = new ToolStripMenuItem(Resources.StrCopyToClipboard);

            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrName, tag.Name));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFullName, tag.FullName));
            item.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(Resources.StrPosition, tag.Revision.Hash.ToString()));

            Items.Add(item);

            Items.Add(new ToolStripSeparator());

            Items.Add(GuiItemFactory.GetCreateBranchItem <ToolStripMenuItem>(_tag));
            Items.Add(GuiItemFactory.GetCreateTagItem <ToolStripMenuItem>(_tag));
        }
Пример #5
0
            public override ContextMenuStrip CreateContextMenu(Revision revision)
            {
                var menu = new ContextMenuStrip();

                menu.Items.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrCopyToClipboard,
                                                                                         revision.Body, false));
                Utility.MarkDropDownForAutoDispose(menu);
                return(menu);
            }
Пример #6
0
            public override ContextMenuStrip CreateContextMenu(Revision revision)
            {
                var menu = new ContextMenuStrip();

                menu.Items.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrCopyToClipboard,
                                                                                         string.Format("{0} <{1}>", revision.Committer.Name, revision.Committer.Email)));
                menu.Items.Add(GuiItemFactory.GetSendEmailItem <ToolStripMenuItem>(revision.Committer.Email));
                Utility.MarkDropDownForAutoDispose(menu);
                return(menu);
            }
Пример #7
0
        public ConfigParameterMenu(ConfigParameter parameter)
        {
            Verify.Argument.IsValidGitObject(parameter, "parameter");

            _parameter = parameter;
            Items.Add(GuiItemFactory.GetUnsetParameterItem <ToolStripMenuItem>(parameter));
            Items.Add(new ToolStripSeparator());
            Items.Add(new ToolStripMenuItem(Resources.StrCopyToClipboard, null,
                                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrName, _parameter.Name),
                                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrValue, _parameter.Value)));
        }
Пример #8
0
        public BranchMenu(BranchBase branch)
        {
            Verify.Argument.IsValidGitObject(branch, "branch");

            _branch = branch;

            Items.Add(GuiItemFactory.GetViewReflogItem <ToolStripMenuItem>(_branch));
            Items.Add(GuiItemFactory.GetViewTreeItem <ToolStripMenuItem>(_branch));

            Items.Add(new ToolStripSeparator());             // interactive section

            Items.Add(GuiItemFactory.GetCheckoutRevisionItem <ToolStripMenuItem>(_branch, "{0} '{1}'"));
            Items.Add(GuiItemFactory.GetResetHeadHereItem <ToolStripMenuItem>(_branch));
            Items.Add(GuiItemFactory.GetRebaseHeadHereItem <ToolStripMenuItem>(_branch));
            Items.Add(GuiItemFactory.GetMergeItem <ToolStripMenuItem>(_branch));
            if (!branch.IsRemote)
            {
                Items.Add(GuiItemFactory.GetRenameBranchItem <ToolStripMenuItem>((Branch)_branch, "{0}"));
            }
            Items.Add(GuiItemFactory.GetRemoveBranchItem <ToolStripMenuItem>(_branch));
            if (!branch.IsRemote)
            {
                lock (branch.Repository.Remotes.SyncRoot)
                {
                    if (branch.Repository.Remotes.Count != 0)
                    {
                        Items.Add(new ToolStripSeparator());
                        var pushTo = new ToolStripMenuItem(Resources.StrPushTo, CachedResources.Bitmaps["ImgPush"]);
                        foreach (var remote in branch.Repository.Remotes)
                        {
                            pushTo.DropDownItems.Add(GuiItemFactory.GetPushBranchToRemoteItem <ToolStripMenuItem>((Branch)branch, remote));
                        }
                        Items.Add(pushTo);
                    }
                }
            }
            else
            {
            }
            Items.Add(new ToolStripSeparator());             // copy to clipboard section

            var item = new ToolStripMenuItem(Resources.StrCopyToClipboard);

            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrName, _branch.Name));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFullName, _branch.FullName));
            item.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(Resources.StrPosition, _branch.Revision.HashString));

            Items.Add(item);

            Items.Add(new ToolStripSeparator());

            Items.Add(GuiItemFactory.GetCreateBranchItem <ToolStripMenuItem>(_branch));
            Items.Add(GuiItemFactory.GetCreateTagItem <ToolStripMenuItem>(_branch));
        }
Пример #9
0
        public ConfigParameterMenu(ConfigParameterListItem listItem)
        {
            Verify.Argument.IsNotNull(listItem, "listItem");
            Verify.Argument.IsValidGitObject(listItem.DataContext, "parameter");

            _listItem  = listItem;
            _parameter = listItem.DataContext;

            Items.Add(new ToolStripMenuItem(Resources.StrEditValue, CachedResources.Bitmaps["ImgConfigEdit"], (s, e) => listItem.StartValueEditor()));
            Items.Add(GuiItemFactory.GetUnsetParameterItem <ToolStripMenuItem>(_parameter));
            Items.Add(new ToolStripSeparator());
            Items.Add(new ToolStripMenuItem(Resources.StrCopyToClipboard, null,
                                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrName, _parameter.Name),
                                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrValue, _parameter.Value)));
        }
Пример #10
0
            public override ContextMenuStrip CreateContextMenu(Revision revision)
            {
                var menu = new ContextMenuStrip();
                var sb   = new StringBuilder(41 * revision.Parents.Count);

                foreach (var p in revision.Parents)
                {
                    sb.Append(p.Hash);
                    sb.Append('\n');
                }
                sb.Remove(sb.Length - 1, 1);
                menu.Items.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrCopyToClipboard, sb.ToString()));
                Utility.MarkDropDownForAutoDispose(menu);
                return(menu);
            }
Пример #11
0
        public UserMenu(User user)
        {
            Verify.Argument.IsValidGitObject(user, nameof(user));

            User = user;

            Items.Add(GuiItemFactory.GetSendEmailItem <ToolStripMenuItem>(user.Email));

            var item = new ToolStripMenuItem(Resources.StrCopyToClipboard);

            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrName, user.Name));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrEmail, user.Email));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrCommits, user.Commits.ToString()));
            Items.Add(item);
        }
Пример #12
0
        public ReflogRecordMenu(ReflogRecord reflogRecord)
        {
            Verify.Argument.IsNotNull(reflogRecord, nameof(reflogRecord));

            var revision = reflogRecord.Revision;

            Items.Add(GuiItemFactory.GetViewDiffItem <ToolStripMenuItem>(revision.GetDiffSource()));
            Items.Add(GuiItemFactory.GetViewTreeItem <ToolStripMenuItem>(revision));
            Items.Add(GuiItemFactory.GetSavePatchItem <ToolStripMenuItem>(revision));

            Items.Add(new ToolStripSeparator());

            Items.Add(GuiItemFactory.GetCheckoutRevisionItem <ToolStripMenuItem>(revision, "{0}"));
            Items.Add(GuiItemFactory.GetResetHeadHereItem <ToolStripMenuItem>(revision));
            Items.Add(GuiItemFactory.GetCherryPickItem <ToolStripMenuItem>(revision, "{0}"));

            Items.Add(new ToolStripSeparator());             // copy to clipboard section

            var item = new ToolStripMenuItem(Resources.StrCopyToClipboard);

            item.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(Resources.StrHash, revision.Hash.ToString()));
            item.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(Resources.StrTreeHash, revision.TreeHash.ToString()));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrMessage, reflogRecord.Message));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrSubject, revision.Subject));
            if (!string.IsNullOrEmpty(revision.Body))
            {
                item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrBody, revision.Body));
            }
            if (revision.Committer != revision.Author)
            {
                item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrCommitter, revision.Committer.Name));
                item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrCommitterEmail, revision.Committer.Email));
            }
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrAuthor, revision.Author.Name));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrAuthorEmail, revision.Author.Email));
            Items.Add(item);

            Items.Add(new ToolStripSeparator());

            Items.Add(GuiItemFactory.GetCreateBranchItem <ToolStripMenuItem>(reflogRecord.Revision));
            Items.Add(GuiItemFactory.GetCreateTagItem <ToolStripMenuItem>(reflogRecord.Revision));
        }
Пример #13
0
        /// <summary>Create <see cref="RemoteBranchMenu"/>.</summary>
        /// <param name="remoteTag">Remote branch, for which menu is generated.</param>
        public RemoteTagMenu(RemoteRepositoryTag remoteTag)
        {
            Verify.Argument.IsNotNull(remoteTag, nameof(remoteTag));
            Verify.Argument.IsFalse(remoteTag.IsDeleted, nameof(remoteTag),
                                    Resources.ExcObjectIsDeleted.UseAsFormat("RemoteTag"));

            RemoteTag = remoteTag;

            Items.Add(GuiItemFactory.GetRemoveRemoteTagItem <ToolStripMenuItem>(RemoteTag, "{0}"));

            var copyToClipboardItem = new ToolStripMenuItem(Resources.StrCopyToClipboard);

            copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(
                                                      Resources.StrName, RemoteTag.Name));
            copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(
                                                      Resources.StrFullName, RemoteTag.FullName));
            copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(
                                                      Resources.StrPosition, RemoteTag.Hash.ToString()));
            Items.Add(copyToClipboardItem);
        }
Пример #14
0
        /// <summary>Create <see cref="RemoteBranchMenu"/>.</summary>
        /// <param name="remoteBranch">Remote branch, for which menu is generated.</param>
        public RemoteBranchMenu(RemoteRepositoryBranch remoteBranch)
        {
            Verify.Argument.IsNotNull(remoteBranch, "remoteBranch");
            Verify.Argument.IsFalse(remoteBranch.IsDeleted, "remoteBranch",
                                    Resources.ExcObjectIsDeleted.UseAsFormat("RemoteBranch"));

            _remoteBranch = remoteBranch;

            Items.Add(GuiItemFactory.GetRemoveRemoteBranchItem <ToolStripMenuItem>(_remoteBranch, "{0}"));

            var copyToClipboardItem = new ToolStripMenuItem(Resources.StrCopyToClipboard);

            copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(
                                                      Resources.StrName, _remoteBranch.Name));
            copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(
                                                      Resources.StrFullName, _remoteBranch.FullName));
            copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(
                                                      Resources.StrPosition, _remoteBranch.Hash.ToString()));

            Items.Add(copyToClipboardItem);
        }
Пример #15
0
        public DiffFileMenu(IDiffSource diffSource, DiffFile diffFile)
        {
            Verify.Argument.IsNotNull(diffSource, "diffSource");
            Verify.Argument.IsNotNull(diffFile, "diffFile");

            _diffSource = diffSource;
            _diffFile   = diffFile;

            string fileName = diffFile.Status != FileStatus.Removed ? diffFile.TargetFile : diffFile.SourceFile;

            var indexDiff = diffSource as IIndexDiffSource;

            if (indexDiff != null)
            {
                var repository = indexDiff.Repository;
                if (diffFile.Status != FileStatus.Removed)
                {
                    try
                    {
                        var fullPath = Path.Combine(diffSource.Repository.WorkingDirectory, diffFile.TargetFile);
                        if (File.Exists(fullPath))
                        {
                            Items.Add(GuiItemFactory.GetOpenUrlItem <ToolStripMenuItem>(
                                          Resources.StrOpen, null, fullPath));
                            Items.Add(GuiItemFactory.GetOpenUrlWithItem <ToolStripMenuItem>(
                                          Resources.StrOpenWith.AddEllipsis(), null, fullPath));
                            Items.Add(GuiItemFactory.GetOpenUrlItem <ToolStripMenuItem>(
                                          Resources.StrOpenContainingFolder, null, Path.GetDirectoryName(fullPath)));
                            Items.Add(new ToolStripSeparator());
                        }
                    }
                    catch (Exception exc)
                    {
                        if (exc.IsCritical())
                        {
                            throw;
                        }
                    }
                }
                if (indexDiff.Cached)
                {
                    var item = indexDiff.Repository.Status.TryGetStaged(fileName);
                    if (item != null)
                    {
                        Items.Add(GuiItemFactory.GetUnstageItem <ToolStripMenuItem>(item));
                        Items.Add(new ToolStripSeparator());
                    }
                }
                else
                {
                    var item = indexDiff.Repository.Status.TryGetUnstaged(fileName);
                    if (item != null)
                    {
                        Items.Add(GuiItemFactory.GetStageItem <ToolStripMenuItem>(item));
                        Items.Add(new ToolStripSeparator());
                    }
                }
                if (diffFile.Status != FileStatus.Removed)
                {
                    Items.Add(GuiItemFactory.GetBlameItem <ToolStripMenuItem>(
                                  indexDiff.Repository.Head, fileName));
                }
                Items.Add(GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(
                              indexDiff.Repository.Head, fileName));
            }
            else
            {
                var revisionDiff = diffSource as IRevisionDiffSource;
                if (revisionDiff != null)
                {
                    if (diffFile.Status != FileStatus.Removed)
                    {
                        Items.Add(GuiItemFactory.GetBlameItem <ToolStripMenuItem>(
                                      revisionDiff.Revision, diffFile.TargetFile));
                        Items.Add(GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(
                                      revisionDiff.Revision, diffFile.TargetFile));
                    }
                    else
                    {
                        Items.Add(GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(
                                      revisionDiff.Revision, diffFile.SourceFile));
                    }
                }
            }
            Items.Add(new ToolStripMenuItem(Resources.StrCopyToClipboard, null,
                                            new ToolStripItem[]
            {
                GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrSourceFileName, diffFile.SourceFile),
                GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrDestinationFileName, diffFile.TargetFile),
            }));
        }
Пример #16
0
        /// <summary>Create <see cref="RevisionMenu"/>.</summary>
        /// <param name="revision">Related <see cref="Revision"/>.</param>
        /// <exception cref="T:System.NullReferenceException"><paramref name="revision"/> == <c>null</c>.</exception>
        public RevisionMenu(Revision revision)
        {
            Verify.Argument.IsNotNull(revision, "revision");

            _revision = revision;

            Items.Add(GuiItemFactory.GetViewDiffItem <ToolStripMenuItem>(_revision.GetDiffSource()));
            Items.Add(GuiItemFactory.GetViewTreeItem <ToolStripMenuItem>(_revision));
            Items.Add(GuiItemFactory.GetSavePatchItem <ToolStripMenuItem>(_revision));
            Items.Add(GuiItemFactory.GetArchiveItem <ToolStripMenuItem>(_revision));

            Items.Add(new ToolStripSeparator());

            Items.Add(GuiItemFactory.GetCheckoutRevisionItem <ToolStripMenuItem>(_revision, "{0}"));
            Items.Add(GuiItemFactory.GetResetHeadHereItem <ToolStripMenuItem>(_revision));
            Items.Add(GuiItemFactory.GetRebaseHeadHereItem <ToolStripMenuItem>(_revision));
            Items.Add(GuiItemFactory.GetRevertItem <ToolStripMenuItem>(_revision));
            Items.Add(GuiItemFactory.GetCherryPickItem <ToolStripMenuItem>(_revision, "{0}"));

            Items.Add(new ToolStripSeparator());             // copy to clipboard section

            var item = new ToolStripMenuItem(Resources.StrCopyToClipboard);

            item.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(Resources.StrHash, revision.HashString));
            item.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(Resources.StrTreeHash, revision.TreeHashString));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrSubject, revision.Subject));
            if (!string.IsNullOrEmpty(revision.Body))
            {
                item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrBody, revision.Body));
            }
            if (revision.Committer != revision.Author)
            {
                item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrCommitter, revision.Committer.Name));
                item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrCommitterEmail, revision.Committer.Email));
            }
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrAuthor, revision.Author.Name));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrAuthorEmail, revision.Author.Email));
            item.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrPatch, () => Encoding.UTF8.GetString(revision.FormatPatch())));

            Items.Add(item);

            Items.Add(new ToolStripSeparator());

            Items.Add(GuiItemFactory.GetCreateBranchItem <ToolStripMenuItem>(_revision));

            var branches = _revision.References.GetAllBranches();

            if (branches.Count != 0)
            {
                if (branches.Count == 1)
                {
                    foreach (var branch in branches)
                    {
                        Items.Add(GuiItemFactory.GetRemoveBranchItem <ToolStripMenuItem>(branch, "{0} '{1}'"));
                    }
                }
                else
                {
                    var submenu = new ToolStripMenuItem(Resources.StrRemoveBranch);
                    foreach (var branch in branches)
                    {
                        submenu.DropDownItems.Add(GuiItemFactory.GetRemoveBranchItem <ToolStripMenuItem>(branch, "{1}"));
                    }
                    Items.Add(submenu);
                }
            }

            Items.Add(GuiItemFactory.GetCreateTagItem <ToolStripMenuItem>(_revision));

            var tags = _revision.References.GetTags();

            if (tags.Count != 0)
            {
                if (tags.Count == 1)
                {
                    foreach (var tag in tags)
                    {
                        Items.Add(GuiItemFactory.GetRemoveTagItem <ToolStripMenuItem>(tag, "{0} '{1}'"));
                    }
                }
                else
                {
                    var submenu = new ToolStripMenuItem(Resources.StrRemoveTag);
                    foreach (var tag in tags)
                    {
                        submenu.DropDownItems.Add(GuiItemFactory.GetRemoveTagItem <ToolStripMenuItem>(tag, "{1}"));
                    }
                    Items.Add(submenu);
                }
            }

            /*
             * Items.Add(new ToolStripSeparator()); // notes section
             *
             * Items.Add(GuiItemFactory.GetAddNoteItem<ToolStripMenuItem>(_revision));
             */
        }
Пример #17
0
        private void OnContextMenuRequested(object sender, ItemContextMenuRequestEventArgs e)
        {
            var vm  = ViewModel as TreeViewModel;
            var rts = vm != null ? vm.TreeSource : null;

            if (rts != null)
            {
                var item = ((ITreeItemListItem)e.Item);
                var file = item.TreeItem as TreeFile;
                if (file != null)
                {
                    var menu = new ContextMenuStrip();
                    menu.Items.AddRange(
                        new ToolStripItem[]
                    {
                        GuiItemFactory.GetExtractAndOpenFileItem <ToolStripMenuItem>(DataSource.Data, file.RelativePath),
                        GuiItemFactory.GetExtractAndOpenFileWithItem <ToolStripMenuItem>(DataSource.Data, file.RelativePath),
                        GuiItemFactory.GetSaveAsItem <ToolStripMenuItem>(DataSource.Data, file.RelativePath),
                        new ToolStripSeparator(),
                        new ToolStripMenuItem(Resources.StrCopyToClipboard, null,
                                              new ToolStripItem[]
                        {
                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFileName, file.Name),
                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrRelativePath, file.RelativePath),
                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFullPath, file.FullPath),
                        }),
                        new ToolStripSeparator(),
                        GuiItemFactory.GetBlameItem <ToolStripMenuItem>(rts.Revision, file),
                        GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(rts.Revision, file),
                        new ToolStripSeparator(),
                        GuiItemFactory.GetCheckoutPathItem <ToolStripMenuItem>(rts.Revision, file),
                    });
                    Utility.MarkDropDownForAutoDispose(menu);
                    e.ContextMenu         = menu;
                    e.OverrideDefaultMenu = true;
                    return;
                }
                var directory = item.TreeItem as TreeDirectory;
                if (directory != null)
                {
                    var menu = new ContextMenuStrip();
                    menu.Items.AddRange(
                        new ToolStripItem[]
                    {
                        new ToolStripMenuItem(Resources.StrOpen, null, (s, args) => e.Item.Activate()),
                        GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(rts.Revision, directory),
                        new ToolStripSeparator(),
                        GuiItemFactory.GetCheckoutPathItem <ToolStripMenuItem>(rts.Revision, directory),
                    });
                    Utility.MarkDropDownForAutoDispose(menu);
                    e.ContextMenu         = menu;
                    e.OverrideDefaultMenu = true;
                    return;
                }
                var commit = ((ITreeItemListItem)e.Item).TreeItem as TreeCommit;
                if (commit != null)
                {
                    var menu = new ContextMenuStrip();
                    menu.Items.AddRange(
                        new ToolStripItem[]
                    {
                        GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(rts.Revision, commit),
                        new ToolStripSeparator(),
                        new ToolStripMenuItem(Resources.StrCopyToClipboard, null,
                                              new ToolStripItem[]
                        {
                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrName, commit.Name),
                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrRelativePath, commit.RelativePath),
                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFullPath, commit.FullPath),
                        }),
                        new ToolStripSeparator(),
                        GuiItemFactory.GetCheckoutPathItem <ToolStripMenuItem>(rts.Revision, commit),
                    });
                    Utility.MarkDropDownForAutoDispose(menu);
                    e.ContextMenu         = menu;
                    e.OverrideDefaultMenu = true;
                    return;
                }
            }
        }
Пример #18
0
        private void OnItemContextMenuRequested(object sender, ItemContextMenuRequestEventArgs e)
        {
            var item = e.Item as ITreeItemListItem;

            if (item != null)
            {
                var file = item.TreeItem as TreeFile;
                if (file != null)
                {
                    var menu = new ContextMenuStrip();
                    menu.Items.AddRange(
                        new ToolStripItem[]
                    {
                        GuiItemFactory.GetOpenUrlItem <ToolStripMenuItem>(Resources.StrOpen, null, file.FullPath),
                        GuiItemFactory.GetOpenUrlWithItem <ToolStripMenuItem>(Resources.StrOpenWith.AddEllipsis(), null, file.FullPath),
                        GuiItemFactory.GetOpenUrlItem <ToolStripMenuItem>(Resources.StrOpenContainingFolder, null, Path.GetDirectoryName(file.FullPath)),
                        new ToolStripSeparator(),
                        new ToolStripMenuItem(Resources.StrCopyToClipboard, null,
                                              new ToolStripItem[]
                        {
                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFileName, file.Name),
                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrRelativePath, file.RelativePath),
                            GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFullPath, file.FullPath),
                        }),
                        new ToolStripSeparator(),
                        GuiItemFactory.GetBlameItem <ToolStripMenuItem>(Repository.Head, file.RelativePath),
                        GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(Repository.Head, file.RelativePath),
                    });
                    Utility.MarkDropDownForAutoDispose(menu);
                    e.ContextMenu = menu;
                    return;
                }
                var directory = item.TreeItem as TreeDirectory;
                if (directory != null)
                {
                    var menu = new ContextMenuStrip();
                    menu.Items.AddRange(
                        new ToolStripItem[]
                    {
                        GuiItemFactory.GetOpenUrlItem <ToolStripMenuItem>(Resources.StrOpenInWindowsExplorer, null, directory.FullPath),
                        GuiItemFactory.GetOpenCmdAtItem <ToolStripMenuItem>(Resources.StrOpenCommandLine, null, directory.FullPath),
                    });
                    if (e.Item.Items.Count != 0)
                    {
                        menu.Items.AddRange(
                            new ToolStripItem[]
                        {
                            new ToolStripSeparator(),
                            GuiItemFactory.GetExpandAllItem <ToolStripMenuItem>(e.Item),
                            GuiItemFactory.GetCollapseAllItem <ToolStripMenuItem>(e.Item),
                        });
                    }
                    menu.Items.AddRange(
                        new ToolStripItem[]
                    {
                        new ToolStripSeparator(),
                        GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(Repository.Head, directory.RelativePath + "/"),
                    });
                    Utility.MarkDropDownForAutoDispose(menu);
                    e.ContextMenu = menu;
                    return;
                }
                var commit = item.TreeItem as TreeCommit;
                if (commit != null)
                {
                    var menu = new ContextMenuStrip();
                    menu.Items.AddRange(
                        new ToolStripItem[]
                    {
                        GuiItemFactory.GetOpenAppItem <ToolStripMenuItem>(
                            Resources.StrOpenWithGitter, null, Application.ExecutablePath, commit.FullPath.SurroundWithDoubleQuotes()),
                        GuiItemFactory.GetOpenUrlItem <ToolStripMenuItem>(Resources.StrOpenInWindowsExplorer, null, commit.FullPath),
                        GuiItemFactory.GetOpenCmdAtItem <ToolStripMenuItem>(Resources.StrOpenCommandLine, null, commit.FullPath),
                        new ToolStripSeparator(),
                        GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(Repository.Head, commit.RelativePath),
                    });
                    Utility.MarkDropDownForAutoDispose(menu);
                    e.ContextMenu = menu;
                    return;
                }
            }
        }
Пример #19
0
        protected override void OnMouseDown(int x, int y, MouseButtons button)
        {
            switch (button)
            {
            case MouseButtons.Left:
            {
                var htr = HitTest(x, y);
                if (htr.Line != -1)
                {
                    if (_selOrigin == -1 || Control.ModifierKeys != Keys.Shift)
                    {
                        _selOrigin = htr.Line;
                        SetSelection(htr.Line);
                    }
                    else
                    {
                        SetSelection(_selOrigin, htr.Line);
                    }
                    _selecting = true;
                }
                else
                {
                    DropSelection();
                }
            }
            break;

            case MouseButtons.Right:
            {
                var htr = HitTest(x, y);
                if (htr.Line != -1)
                {
                    if (htr.Line < _selStart || htr.Line > _selEnd)
                    {
                        _selOrigin = htr.Line;
                        SetSelection(htr.Line);
                    }

                    var menu  = new ContextMenuStrip();
                    var lines = GetSelectedLines();
                    menu.Items.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(
                                       Resources.StrCopyToClipboard,
                                       () => LinesToString(lines)));
                    bool sameCommit = true;
                    for (int i = 1; i < lines.Length; ++i)
                    {
                        if (lines[i].Commit != lines[0].Commit)
                        {
                            sameCommit = false;
                            break;
                        }
                    }
                    if (sameCommit)
                    {
                        var commit = lines[0].Commit;
                        menu.Items.Add(new ToolStripSeparator());
                        menu.Items.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>(Resources.StrHash, commit.Hash.ToString()));
                        menu.Items.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrSummary, commit.Summary));
                        menu.Items.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrAuthor, commit.Author));
                        if (commit.Author != commit.Committer)
                        {
                            menu.Items.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrCommitter, commit.Committer));
                        }
                    }
                    Utility.MarkDropDownForAutoDispose(menu);
                    ShowContextMenu(menu, x, y);
                }
                else
                {
                    DropSelection();
                }
            }
            break;
            }
            base.OnMouseDown(x, y, button);
        }