public GitDiffElementContextFactory(GitManager gitManager, GitConflictsHandler conflictsHandler, GitOverlay gitOverlay, GitExternalManager externalManager, GitCallbacks gitCallbacks) { this.gitManager = gitManager; this.conflictsHandler = conflictsHandler; this.gitOverlay = gitOverlay; this.externalManager = externalManager; this.gitCallbacks = gitCallbacks; }
private void DoDiffElementContex(GenericMenu editMenu) { StatusListEntry[] entries = statusList.Where(e => e.Selected).ToArray(); FileStatus selectedFlags = entries.Select(e => e.State).CombineFlags(); GUIContent addContent = new GUIContent("Stage"); if (GitManager.CanStage(selectedFlags)) { editMenu.AddItem(addContent, false, AddSelectedCallback); } else { editMenu.AddDisabledItem(addContent); } GUIContent removeContent = new GUIContent("Unstage"); if (GitManager.CanUnstage(selectedFlags)) { editMenu.AddItem(removeContent, false, RemoveSelectedCallback); } else { editMenu.AddDisabledItem(removeContent); } editMenu.AddSeparator(""); if (entries.Length == 1) { string path = entries[0].Path; if (selectedFlags.IsFlagSet(FileStatus.Conflicted)) { if (GitConflictsHandler.CanResolveConflictsWithTool(path)) { editMenu.AddItem(new GUIContent("Resolve Conflicts"), false, ResolveConflictsCallback, path); } else { editMenu.AddDisabledItem(new GUIContent("Resolve Conflicts")); } editMenu.AddItem(new GUIContent("Resolve (Using Ours)"), false, ResolveConflictsOursCallback, entries[0].Path); editMenu.AddItem(new GUIContent("Resolve (Using Theirs)"), false, ResolveConflictsTheirsCallback, entries[0].Path); } else { editMenu.AddItem(new GUIContent("Difference"), false, SeeDifferenceSelectedCallback, entries[0].Path); editMenu.AddItem(new GUIContent("Difference with previous version"), false, SeeDifferencePrevSelectedCallback, entries[0].Path); } } editMenu.AddSeparator(""); editMenu.AddItem(new GUIContent("Revert"), false, RevertSelectedCallback); editMenu.AddSeparator(""); editMenu.AddItem(new GUIContent("Reload"), false, ReloadCallback); }
private void ResolveConflictsCallback(object path) { GitConflictsHandler.ResolveConflicts((string)path, MergeFileFavor.Normal); }