private void FileTreeContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e) { var gitItem = tvGitTree.SelectedNode?.Tag as GitItem; var enableItems = gitItem != null && gitItem.IsBlob; if (gitItem != null && gitItem.IsCommit) { openSubmoduleMenuItem.Visible = true; if (!openSubmoduleMenuItem.Font.Bold) { openSubmoduleMenuItem.Font = new Font(openSubmoduleMenuItem.Font, FontStyle.Bold); } } else { openSubmoduleMenuItem.Visible = false; } saveAsToolStripMenuItem.Visible = enableItems; openFileToolStripMenuItem.Visible = enableItems; openFileWithToolStripMenuItem.Visible = enableItems; openWithToolStripMenuItem.Visible = enableItems; copyFilenameToClipboardToolStripMenuItem.Visible = gitItem != null && FormBrowseUtil.IsFileOrDirectory(FormBrowseUtil.GetFullPathFromGitItem(Module, gitItem)); editCheckedOutFileToolStripMenuItem.Visible = enableItems; }
private void fileTreeOpenContainingFolderToolStripMenuItem_Click(object sender, EventArgs e) { var gitItem = tvGitTree.SelectedNode?.Tag as GitItem; string filePath = gitItem == null ? Module.WorkingDir : FormBrowseUtil.GetFullPathFromGitItem(Module, gitItem); FormBrowseUtil.ShowFileOrFolderInFileExplorer(filePath); }
private void FileTreeContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e) { var gitItem = tvGitTree.SelectedNode?.Tag as GitItem; var enableItems = gitItem != null && gitItem.ObjectType == GitObjectType.Blob; if (gitItem != null && gitItem.ObjectType == GitObjectType.Commit) { openSubmoduleMenuItem.Visible = true; if (!openSubmoduleMenuItem.Font.Bold) { openSubmoduleMenuItem.Font = new Font(openSubmoduleMenuItem.Font, FontStyle.Bold); } } else { openSubmoduleMenuItem.Visible = false; } this.fileHistoryToolStripMenuItem.Enabled = gitItem != null; this.resetToThisRevisionToolStripMenuItem.Enabled = this.blameToolStripMenuItem1.Enabled = this.fileTreeArchiveToolStripMenuItem.Enabled = enableItems; saveAsToolStripMenuItem.Visible = enableItems; openFileToolStripMenuItem.Visible = enableItems; openFileWithToolStripMenuItem.Visible = enableItems; openWithToolStripMenuItem.Visible = enableItems; copyFilenameToClipboardToolStripMenuItem.Visible = gitItem != null && FormBrowseUtil.IsFileOrDirectory(FormBrowseUtil.GetFullPathFromGitItem(Module, gitItem)); editCheckedOutFileToolStripMenuItem.Visible = enableItems; toolStripSeparator18.Visible = enableItems; }
private void fileTreeOpenContainingFolderToolStripMenuItem_Click(object sender, EventArgs e) { string filePath = tvGitTree.SelectedNode?.Tag is GitItem gitItem ? _fullPathResolver.Resolve(gitItem.FileName) : Module.WorkingDir; FormBrowseUtil.ShowFileOrFolderInFileExplorer(filePath); }
private void DiffContextMenu_Opening(object sender, CancelEventArgs e) { var selectionInfo = GetSelectionInfo(); // Many options have no meaning for artificial commits or submodules // Hide the obviously no action options when single selected, handle them in actions if multi select openWithDifftoolToolStripMenuItem.Enabled = _revisionDiffController.ShouldShowDifftoolMenus(selectionInfo); saveAsToolStripMenuItem1.Visible = _revisionDiffController.ShouldShowMenuSaveAs(selectionInfo); copyFilenameToClipboardToolStripMenuItem1.Enabled = _revisionDiffController.ShouldShowMenuCopyFileName(selectionInfo); stageFileToolStripMenuItem.Visible = _revisionDiffController.ShouldShowMenuStage(selectionInfo); unstageFileToolStripMenuItem.Visible = _revisionDiffController.ShouldShowMenuUnstage(selectionInfo); cherryPickSelectedDiffFileToolStripMenuItem.Visible = _revisionDiffController.ShouldShowMenuCherryPick(selectionInfo); // Visibility of FileTree is not known, assume (CommitInfoTabControl.Contains(TreeTabPage);) diffShowInFileTreeToolStripMenuItem.Visible = _revisionDiffController.ShouldShowMenuShowInFileTree(selectionInfo); fileHistoryDiffToolstripMenuItem.Enabled = _revisionDiffController.ShouldShowMenuFileHistory(selectionInfo); blameToolStripMenuItem.Enabled = _revisionDiffController.ShouldShowMenuBlame(selectionInfo); resetFileToToolStripMenuItem.Enabled = _revisionDiffController.ShouldShowResetFileMenus(selectionInfo); diffDeleteFileToolStripMenuItem.Visible = _revisionDiffController.ShouldShowMenuDeleteFile(selectionInfo); diffEditWorkingDirectoryFileToolStripMenuItem.Visible = _revisionDiffController.ShouldShowMenuEditWorkingDirectoryFile(selectionInfo); diffOpenWorkingDirectoryFileWithToolStripMenuItem.Visible = _revisionDiffController.ShouldShowMenuEditWorkingDirectoryFile(selectionInfo); diffOpenRevisionFileToolStripMenuItem.Visible = _revisionDiffController.ShouldShowMenuOpenRevision(selectionInfo); diffOpenRevisionFileWithToolStripMenuItem.Visible = _revisionDiffController.ShouldShowMenuOpenRevision(selectionInfo); diffCommitSubmoduleChanges.Visible = diffResetSubmoduleChanges.Visible = diffStashSubmoduleChangesToolStripMenuItem.Visible = diffSubmoduleSummaryMenuItem.Visible = diffUpdateSubmoduleMenuItem.Visible = _revisionDiffController.ShouldShowSubmoduleMenus(selectionInfo); diffToolStripSeparator13.Visible = _revisionDiffController.ShouldShowMenuDeleteFile(selectionInfo) || _revisionDiffController.ShouldShowSubmoduleMenus(selectionInfo) || _revisionDiffController.ShouldShowMenuEditWorkingDirectoryFile(selectionInfo) || _revisionDiffController.ShouldShowMenuOpenRevision(selectionInfo); // openContainingFolderToolStripMenuItem.Enabled or not { openContainingFolderToolStripMenuItem.Enabled = false; foreach (var item in DiffFiles.SelectedItems) { string filePath = _fullPathResolver.Resolve(item.Name); if (FormBrowseUtil.FileOrParentDirectoryExists(filePath)) { openContainingFolderToolStripMenuItem.Enabled = true; break; } } } }
private void FileTreeContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e) { var gitItem = tvGitTree.SelectedNode?.Tag as GitItem; var itemSelected = gitItem != null; var isFile = itemSelected && gitItem.ObjectType == GitObjectType.Blob; var isFolder = itemSelected && gitItem.ObjectType == GitObjectType.Tree; var isFileOrFolder = isFile || isFolder; var isExistingFileOrDirectory = itemSelected && FormBrowseUtil.IsFileOrDirectory(_fullPathResolver.Resolve(gitItem.FileName)); if (itemSelected && gitItem.ObjectType == GitObjectType.Commit) { openSubmoduleMenuItem.Visible = true; if (!openSubmoduleMenuItem.Font.Bold) { openSubmoduleMenuItem.Font = new Font(openSubmoduleMenuItem.Font, FontStyle.Bold); } } else { openSubmoduleMenuItem.Visible = false; } saveAsToolStripMenuItem.Visible = isFile; resetToThisRevisionToolStripMenuItem.Visible = isFileOrFolder && !Module.IsBareRepository(); toolStripSeparatorFileSystemActions.Visible = isFileOrFolder; copyFilenameToClipboardToolStripMenuItem.Visible = itemSelected; fileTreeOpenContainingFolderToolStripMenuItem.Enabled = isExistingFileOrDirectory; fileTreeArchiveToolStripMenuItem.Enabled = itemSelected; fileTreeCleanWorkingTreeToolStripMenuItem.Visible = isFileOrFolder; fileTreeCleanWorkingTreeToolStripMenuItem.Enabled = isExistingFileOrDirectory; fileHistoryToolStripMenuItem.Enabled = itemSelected; blameToolStripMenuItem1.Visible = isFile; editCheckedOutFileToolStripMenuItem.Visible = isFile; editCheckedOutFileToolStripMenuItem.Enabled = isExistingFileOrDirectory; openWithToolStripMenuItem.Visible = isFile; openWithToolStripMenuItem.Enabled = isExistingFileOrDirectory; openWithDifftoolToolStripMenuItem.Visible = isFile; openWithDifftoolToolStripMenuItem.Enabled = FileText.OpenWithDifftool != null; openFileToolStripMenuItem.Visible = isFile; openFileWithToolStripMenuItem.Visible = isFile; toolStripSeparatorGitActions.Visible = isFile; stopTrackingThisFileToolStripMenuItem.Visible = isFile; stopTrackingThisFileToolStripMenuItem.Enabled = isExistingFileOrDirectory; assumeUnchangedTheFileToolStripMenuItem.Visible = isFile; assumeUnchangedTheFileToolStripMenuItem.Enabled = isExistingFileOrDirectory; findToolStripMenuItem.Enabled = tvGitTree.Nodes.Count > 0; toolStripSeparatorFileTreeActions.Visible = isFile; expandSubtreeToolStripMenuItem.Visible = isFolder; }
private ContextMenuDiffToolInfo GetContextMenuDiffToolInfo() { IList <GitRevision> selectedRevisions = _revisionGrid.GetSelectedRevisions(); //Should be blocked in the GUI but not an error to show to the user Debug.Assert(selectedRevisions.Count == 1 || selectedRevisions.Count == 2, "Unexpectedly number of revisions for difftool" + selectedRevisions.Count); if (selectedRevisions.Count < 1) { return(null); } bool aIsLocal = false; bool bIsLocal = false; bool showParentItems = selectedRevisions.Count == 2; bool localExists = false; bool bIsNormal = false; //B is not new or deleted (we cannot easily check A) bIsLocal = selectedRevisions[0].Guid == GitRevision.UnstagedGuid; if (selectedRevisions.Count == 2) { aIsLocal = selectedRevisions[0].Guid == GitRevision.UnstagedGuid; } //Temporary, until parent is set to HEAD instead of staged else { aIsLocal = bIsLocal; bIsLocal = bIsLocal || selectedRevisions[0].Guid == GitRevision.IndexGuid; } //enable *<->Local items only when local file exists //no simple way to check if A (or A/B parents) is normal, ignore that some menus should be disabled foreach (var item in DiffFiles.SelectedItems) { bIsNormal = bIsNormal || !(item.IsNew || item.IsDeleted); string filePath = FormBrowseUtil.GetFullPathFromGitItemStatus(Module, item); if (File.Exists(filePath) || Directory.Exists(filePath)) { localExists = true; if (localExists && bIsNormal) { break; } } } var selectionInfo = new ContextMenuDiffToolInfo(aIsLocal, bIsLocal, bIsNormal, localExists, showParentItems); return(selectionInfo); }
private void openWithDifftoolToolStripMenuItem_DropDownOpening(object sender, EventArgs e) { bool artificialRevSelected = false; bool enableDiffDropDown = true; bool showParentItems = false; IList <GitRevision> revisions = _revisionGrid.GetSelectedRevisions(); if (revisions.Count > 0) { artificialRevSelected = revisions[0].IsArtificial(); if (revisions.Count == 2) { artificialRevSelected = artificialRevSelected || revisions[revisions.Count - 1].IsArtificial(); showParentItems = true; } else { enableDiffDropDown = revisions.Count == 1; } } aBToolStripMenuItem.Enabled = enableDiffDropDown; bLocalToolStripMenuItem.Enabled = enableDiffDropDown; aLocalToolStripMenuItem.Enabled = enableDiffDropDown; parentOfALocalToolStripMenuItem.Enabled = enableDiffDropDown; parentOfBLocalToolStripMenuItem.Enabled = enableDiffDropDown; parentOfALocalToolStripMenuItem.Visible = showParentItems; parentOfBLocalToolStripMenuItem.Visible = showParentItems; if (!enableDiffDropDown) { return; } //enable *<->Local items only when local file exists foreach (var item in DiffFiles.SelectedItems) { string filePath = FormBrowseUtil.GetFullPathFromGitItemStatus(Module, item); if (File.Exists(filePath)) { bLocalToolStripMenuItem.Enabled = !artificialRevSelected; aLocalToolStripMenuItem.Enabled = !artificialRevSelected; parentOfALocalToolStripMenuItem.Enabled = !artificialRevSelected; parentOfBLocalToolStripMenuItem.Enabled = !artificialRevSelected; return; } } }
private ContextMenuSelectionInfo GetSelectionInfo() { IList <GitRevision> selectedRevisions = _revisionGrid.GetSelectedRevisions(); bool isAnyCombinedDiff = DiffFiles.SelectedItemParents.Any(item => item == DiffFiles.CombinedDiff.Text); bool isExactlyOneItemSelected = DiffFiles.SelectedItems.Count() == 1; bool isAnyItemSelected = DiffFiles.SelectedItems.Count() > 0; var isCombinedDiff = isExactlyOneItemSelected && DiffFiles.CombinedDiff.Text == DiffFiles.SelectedItemParent; var selectedItemStatus = DiffFiles.SelectedItem; bool isBareRepository = Module.IsBareRepository(); bool singleFileExists = isExactlyOneItemSelected && File.Exists(FormBrowseUtil.GetFullPathFromGitItemStatus(Module, DiffFiles.SelectedItem)); var selectionInfo = new ContextMenuSelectionInfo(selectedRevisions, selectedItemStatus, isAnyCombinedDiff, isExactlyOneItemSelected, isCombinedDiff, isAnyItemSelected, isBareRepository, singleFileExists); return(selectionInfo); }
private ContextMenuDiffToolInfo GetContextMenuDiffToolInfo() { IList <GitRevision> selectedRevisions = _revisionGrid.GetSelectedRevisions(); //Should be blocked in the GUI but not an error to show to the user Debug.Assert(selectedRevisions.Count == 1 || selectedRevisions.Count == 2, "Unexpectedly number of revisions for difftool" + selectedRevisions.Count); if (selectedRevisions.Count < 1 || selectedRevisions.Count > 2) { return(null); } bool aIsLocal = selectedRevisions.Count == 2 && selectedRevisions[1].Guid == GitRevision.UnstagedGuid; bool bIsLocal = selectedRevisions[0].Guid == GitRevision.UnstagedGuid; bool multipleRevisionsSelected = selectedRevisions.Count == 2; bool localExists = false; bool bIsNormal = false; //B is assumed to be new or deleted (check from DiffFiles) //enable *<->Local items only when (any) local file exists foreach (var item in DiffFiles.SelectedItems) { bIsNormal = bIsNormal || !(item.IsNew || item.IsDeleted); string filePath = FormBrowseUtil.GetFullPathFromGitItemStatus(Module, item); if (File.Exists(filePath) || Directory.Exists(filePath)) { localExists = true; if (localExists && bIsNormal) { break; } } } var selectionInfo = new ContextMenuDiffToolInfo(aIsLocal, bIsLocal, bIsNormal, localExists, multipleRevisionsSelected); return(selectionInfo); }
private void FileTreeContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e) { var gitItem = tvGitTree.SelectedNode?.Tag as GitItem; var itemSelected = gitItem is not null; var isFile = itemSelected && gitItem.ObjectType == GitObjectType.Blob; var isFolder = itemSelected && gitItem.ObjectType == GitObjectType.Tree; var isFileOrFolder = isFile || isFolder; // Many items does not make sense if a local file does not exist, why this is used for Enabled var isExistingFileOrDirectory = itemSelected && FormBrowseUtil.IsFileOrDirectory(_fullPathResolver.Resolve(gitItem.FileName)); var openSubVisible = itemSelected && gitItem.ObjectType == GitObjectType.Commit && isExistingFileOrDirectory; openSubmoduleMenuItem.Visible = openSubVisible; if (openSubVisible) { if (!openSubmoduleMenuItem.Font.Bold) { openSubmoduleMenuItem.Font = new Font(openSubmoduleMenuItem.Font, FontStyle.Bold); } if (fileHistoryToolStripMenuItem.Font.Bold) { fileHistoryToolStripMenuItem.Font = new Font(fileHistoryToolStripMenuItem.Font, FontStyle.Regular); } } else if (!fileHistoryToolStripMenuItem.Font.Bold) { fileHistoryToolStripMenuItem.Font = new Font(fileHistoryToolStripMenuItem.Font, FontStyle.Bold); } // Diff with workTree (some tools like kdiff3 and meld allows diff to NUL) resetToThisRevisionToolStripMenuItem.Visible = itemSelected && !Module.IsBareRepository(); toolStripSeparatorTopActions.Visible = itemSelected && ((gitItem.ObjectType == GitObjectType.Commit && isExistingFileOrDirectory) || !Module.IsBareRepository()); // RememberFile diff can be done for folders too (as well as for submodules, but that is meaningless) // However diffs will open many windows that cannot be aborted, so it is blocked // Another reason is that file<->folder compare is not giving any result // (and diff is shared with Diff tab that has no notion of folders) openWithDifftoolToolStripMenuItem.Visible = isFile; openWithToolStripMenuItem.Visible = isFile; openWithToolStripMenuItem.Enabled = isExistingFileOrDirectory; var fsi = _rememberFileContextMenuController.CreateFileStatusItem(gitItem?.FileName, _revision); diffWithRememberedFileToolStripMenuItem.Visible = _rememberFileContextMenuController.RememberedDiffFileItem is not null; diffWithRememberedFileToolStripMenuItem.Enabled = isFile && fsi != _rememberFileContextMenuController.RememberedDiffFileItem && _rememberFileContextMenuController.ShouldEnableSecondItemDiff(fsi); diffWithRememberedFileToolStripMenuItem.Text = _rememberFileContextMenuController.RememberedDiffFileItem is not null ? string.Format(Strings.DiffSelectedWithRememberedFile, _rememberFileContextMenuController.RememberedDiffFileItem.Item.Name) : string.Empty; rememberFileStripMenuItem.Visible = isFile; rememberFileStripMenuItem.Enabled = _rememberFileContextMenuController.ShouldEnableFirstItemDiff(fsi, isSecondRevision: true); openFileToolStripMenuItem.Visible = isFile; openFileWithToolStripMenuItem.Visible = isFile; saveAsToolStripMenuItem.Visible = isFile; editCheckedOutFileToolStripMenuItem.Visible = isFile; editCheckedOutFileToolStripMenuItem.Enabled = isExistingFileOrDirectory; toolStripSeparatorFileSystemActions.Visible = isFile; copyFilenameToClipboardToolStripMenuItem.Visible = itemSelected; fileTreeOpenContainingFolderToolStripMenuItem.Visible = itemSelected; fileTreeOpenContainingFolderToolStripMenuItem.Enabled = isExistingFileOrDirectory; toolStripSeparatorFileNameActions.Visible = itemSelected; fileHistoryToolStripMenuItem.Enabled = itemSelected; blameToolStripMenuItem1.Visible = isFile; fileTreeArchiveToolStripMenuItem.Enabled = itemSelected; fileTreeCleanWorkingTreeToolStripMenuItem.Visible = isFileOrFolder; fileTreeCleanWorkingTreeToolStripMenuItem.Enabled = isExistingFileOrDirectory; toolStripSeparatorGitActions.Visible = itemSelected; stopTrackingThisFileToolStripMenuItem.Visible = isFile; stopTrackingThisFileToolStripMenuItem.Enabled = isExistingFileOrDirectory; assumeUnchangedTheFileToolStripMenuItem.Visible = isFile; assumeUnchangedTheFileToolStripMenuItem.Enabled = isExistingFileOrDirectory; toolStripSeparatorGitTrackingActions.Visible = isFile; findToolStripMenuItem.Enabled = tvGitTree.Nodes.Count > 0; expandSubtreeToolStripMenuItem.Visible = isFolder; }
private void DiffContextMenu_Opening(object sender, CancelEventArgs e) { bool artificialRevSelected; IList <GitRevision> selectedRevisions = _revisionGrid.GetSelectedRevisions(); if (selectedRevisions.Count == 0) { artificialRevSelected = false; } else { artificialRevSelected = selectedRevisions[0].IsArtificial(); } if (selectedRevisions.Count > 1) { artificialRevSelected = artificialRevSelected || selectedRevisions[selectedRevisions.Count - 1].IsArtificial(); } //Many options have no meaning for artificial commits or submodules //Hide the obviously no action options when single selected, handle them in actions if multi select // disable items that need exactly one selected item bool isExactlyOneItemSelected = DiffFiles.SelectedItems.Count() == 1; var isCombinedDiff = isExactlyOneItemSelected && DiffFiles.CombinedDiff.Text == DiffFiles.SelectedItemParent; var isAnyCombinedDiff = DiffFiles.SelectedItemParents.Any(item => item == DiffFiles.CombinedDiff.Text); openWithDifftoolToolStripMenuItem.Enabled = !isAnyCombinedDiff; saveAsToolStripMenuItem1.Visible = !isCombinedDiff && isExactlyOneItemSelected && !DiffFiles.SelectedItem.IsSubmodule; cherryPickSelectedDiffFileToolStripMenuItem.Visible = !isCombinedDiff && isExactlyOneItemSelected && !(DiffFiles.SelectedItem.IsSubmodule || selectedRevisions[0].Guid == GitRevision.UnstagedGuid || (DiffFiles.SelectedItem.IsNew || DiffFiles.SelectedItem.IsDeleted) && selectedRevisions[0].Guid == GitRevision.IndexGuid); //Visibility of FileTree is not known, assume (CommitInfoTabControl.Contains(TreeTabPage);) diffShowInFileTreeToolStripMenuItem.Visible = isExactlyOneItemSelected && !selectedRevisions[0].IsArtificial(); fileHistoryDiffToolstripMenuItem.Enabled = isExactlyOneItemSelected && !(DiffFiles.SelectedItem.IsNew && selectedRevisions[0].IsArtificial()); blameToolStripMenuItem.Enabled = isExactlyOneItemSelected && !(DiffFiles.SelectedItem.IsSubmodule || selectedRevisions[0].IsArtificial()); resetFileToToolStripMenuItem.Enabled = !isCombinedDiff && !(isExactlyOneItemSelected && (DiffFiles.SelectedItem.IsSubmodule || DiffFiles.SelectedItem.IsNew) && selectedRevisions[0].Guid == GitRevision.UnstagedGuid); this.diffEditFileToolStripMenuItem.Visible = this.diffDeleteFileToolStripMenuItem.Visible = isExactlyOneItemSelected && !DiffFiles.SelectedItem.IsSubmodule && selectedRevisions[0].IsArtificial(); this.diffCommitSubmoduleChanges.Visible = this.diffResetSubmoduleChanges.Visible = this.diffStashSubmoduleChangesToolStripMenuItem.Visible = this.diffUpdateSubmoduleMenuItem.Visible = this.diffSubmoduleSummaryMenuItem.Visible = isExactlyOneItemSelected && DiffFiles.SelectedItem.IsSubmodule && selectedRevisions[0].Guid == GitRevision.UnstagedGuid; this.diffUpdateSubmoduleMenuItem.Visible = false; //TBD this.diffToolStripSeparator13.Visible = isExactlyOneItemSelected && (!DiffFiles.SelectedItem.IsSubmodule && selectedRevisions[0].IsArtificial() || DiffFiles.SelectedItem.IsSubmodule && selectedRevisions[0].Guid == GitRevision.UnstagedGuid); // openContainingFolderToolStripMenuItem.Enabled or not { openContainingFolderToolStripMenuItem.Enabled = false; foreach (var item in DiffFiles.SelectedItems) { string filePath = FormBrowseUtil.GetFullPathFromGitItemStatus(Module, item); if (FormBrowseUtil.FileOrParentDirectoryExists(filePath)) { openContainingFolderToolStripMenuItem.Enabled = true; break; } } } }
private void FileTreeContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e) { var gitItem = tvGitTree.SelectedNode?.Tag as GitItem; var itemSelected = gitItem != null; var isFile = itemSelected && gitItem.ObjectType == GitObjectType.Blob; var isFolder = itemSelected && gitItem.ObjectType == GitObjectType.Tree; var isFileOrFolder = isFile || isFolder; // Many items does not make sense if a local file does not exist, why this is used for Enabled var isExistingFileOrDirectory = itemSelected && FormBrowseUtil.IsFileOrDirectory(_fullPathResolver.Resolve(gitItem.FileName)); var openSubVisible = itemSelected && gitItem.ObjectType == GitObjectType.Commit && isExistingFileOrDirectory; openSubmoduleMenuItem.Visible = openSubVisible; if (openSubVisible) { if (!openSubmoduleMenuItem.Font.Bold) { openSubmoduleMenuItem.Font = new Font(openSubmoduleMenuItem.Font, FontStyle.Bold); } if (fileHistoryToolStripMenuItem.Font.Bold) { fileHistoryToolStripMenuItem.Font = new Font(fileHistoryToolStripMenuItem.Font, FontStyle.Regular); } } else if (!fileHistoryToolStripMenuItem.Font.Bold) { fileHistoryToolStripMenuItem.Font = new Font(fileHistoryToolStripMenuItem.Font, FontStyle.Bold); } // Diff with workTree (some tools like kdiff3 and meld allows diff to NUL) resetToThisRevisionToolStripMenuItem.Visible = itemSelected && !Module.IsBareRepository(); toolStripSeparatorTopActions.Visible = itemSelected && ((gitItem.ObjectType == GitObjectType.Commit && isExistingFileOrDirectory) || !Module.IsBareRepository()); openWithDifftoolToolStripMenuItem.Visible = isFile; openWithToolStripMenuItem.Visible = isFile; openWithToolStripMenuItem.Enabled = isExistingFileOrDirectory; openFileToolStripMenuItem.Visible = isFile; openFileWithToolStripMenuItem.Visible = isFile; saveAsToolStripMenuItem.Visible = isFile; editCheckedOutFileToolStripMenuItem.Visible = isFile; editCheckedOutFileToolStripMenuItem.Enabled = isExistingFileOrDirectory; toolStripSeparatorFileSystemActions.Visible = isFile; copyFilenameToClipboardToolStripMenuItem.Visible = itemSelected; fileTreeOpenContainingFolderToolStripMenuItem.Visible = itemSelected; fileTreeOpenContainingFolderToolStripMenuItem.Enabled = isExistingFileOrDirectory; toolStripSeparatorFileNameActions.Visible = itemSelected; fileHistoryToolStripMenuItem.Enabled = itemSelected; blameToolStripMenuItem1.Visible = isFile; fileTreeArchiveToolStripMenuItem.Enabled = itemSelected; fileTreeCleanWorkingTreeToolStripMenuItem.Visible = isFileOrFolder; fileTreeCleanWorkingTreeToolStripMenuItem.Enabled = isExistingFileOrDirectory; toolStripSeparatorGitActions.Visible = itemSelected; stopTrackingThisFileToolStripMenuItem.Visible = isFile; stopTrackingThisFileToolStripMenuItem.Enabled = isExistingFileOrDirectory; assumeUnchangedTheFileToolStripMenuItem.Visible = isFile; assumeUnchangedTheFileToolStripMenuItem.Enabled = isExistingFileOrDirectory; toolStripSeparatorGitTrackingActions.Visible = isFile; findToolStripMenuItem.Enabled = tvGitTree.Nodes.Count > 0; expandSubtreeToolStripMenuItem.Visible = isFolder; }