public static void ViewChanges(this FileViewer diffViewer, string revision, string parentRevision, GitItemStatus file, string defaultText) { if (parentRevision == null) { if (file.TreeGuid.IsNullOrEmpty()) { diffViewer.ViewGitItemRevision(file.Name, revision); } else if (!file.IsSubmodule) { diffViewer.ViewGitItem(file.Name, file.TreeGuid); } else { diffViewer.ViewText(file.Name, LocalizationHelpers.GetSubmoduleText(diffViewer.Module, file.Name, file.TreeGuid)); } } else { diffViewer.ViewPatch(() => { string selectedPatch = diffViewer.GetSelectedPatch(revision, parentRevision, file); return(selectedPatch ?? defaultText); }); } }
private void tvGitTree_AfterSelect(object sender, TreeViewEventArgs e) { ThreadHelper.JoinableTaskFactory.RunAsync(ViewItem); Task ViewItem() { return(e.Node?.Tag is GitItem gitItem ? ViewGitItemAsync(gitItem) : Task.CompletedTask); } Task ViewGitItemAsync(GitItem gitItem) { switch (gitItem.ObjectType) { case GitObjectType.Blob: { return(FileText.ViewGitItemAsync(gitItem.FileName, gitItem.ObjectId)); } case GitObjectType.Commit: { return(FileText.ViewTextAsync(gitItem.FileName, LocalizationHelpers.GetSubmoduleText(Module, gitItem.FileName, gitItem.Guid))); } default: { return(FileText.ViewTextAsync("", "")); } } } }
private void tvGitTree_AfterSelect(object sender, TreeViewEventArgs e) { var gitItem = e.Node?.Tag as GitItem; if (gitItem == null) { return; } switch (gitItem.ObjectType) { case GitObjectType.Blob: { FileText.ViewGitItem(gitItem.FileName, gitItem.Guid); break; } case GitObjectType.Commit: { FileText.ViewText(gitItem.FileName, LocalizationHelpers.GetSubmoduleText(Module, gitItem.FileName, gitItem.Guid)); break; } default: { FileText.ViewText("", ""); break; } } }
public static string GetSelectedPatch(this FileViewer diffViewer, string firstRevision, string secondRevision, GitItemStatus file) { if (!file.IsTracked) { var fullPath = Path.Combine(diffViewer.Module.WorkingDir, file.Name); if (Directory.Exists(fullPath) && GitModule.IsValidGitWorkingDir(fullPath)) { // git-status does not detect details for untracked and git-diff --no-index will not give info return(LocalizationHelpers.GetSubmoduleText(diffViewer.Module, file.Name.TrimEnd('/'), "")); } } if (file.IsSubmodule && file.SubmoduleStatus != null) { return(LocalizationHelpers.ProcessSubmoduleStatus(diffViewer.Module, file.SubmoduleStatus.Result)); } PatchApply.Patch patch = GetItemPatch(diffViewer.Module, file, firstRevision, secondRevision, diffViewer.GetExtraDiffArguments(), diffViewer.Encoding); if (patch == null) { return(string.Empty); } if (file.IsSubmodule) { return(LocalizationHelpers.ProcessSubmodulePatch(diffViewer.Module, file.Name, patch)); } return(patch.Text); }
private void tvGitTree_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node?.Tag is GitItem gitItem) { switch (gitItem.ObjectType) { case GitObjectType.Blob: { FileText.ViewGitItemAsync(gitItem.FileName, gitItem.Guid); break; } case GitObjectType.Commit: { FileText.ViewTextAsync(gitItem.FileName, LocalizationHelpers.GetSubmoduleText(Module, gitItem.FileName, gitItem.Guid)); break; } default: { FileText.ViewTextAsync("", ""); break; } } } }
private void StashedSelectedIndexChanged(object sender, EventArgs e) { GitStash gitStash = Stashes.SelectedItem as GitStash; GitItemStatus stashedItem = Stashed.SelectedItem; EnablePartialStash(); using (WaitCursorScope.Enter()) { if (stashedItem != null && gitStash == _currentWorkingDirStashItem) { // current working directory View.ViewCurrentChanges(stashedItem); } else if (stashedItem != null) { if (stashedItem.IsNew) { if (!stashedItem.IsSubmodule) { View.ViewGitItemAsync(stashedItem.Name, stashedItem.TreeGuid); } else { View.ViewTextAsync( stashedItem.Name, LocalizationHelpers.GetSubmoduleText(Module, stashedItem.Name, stashedItem.TreeGuid)); } } else { string extraDiffArguments = View.GetExtraDiffArguments(); Encoding encoding = View.Encoding; View.ViewPatchAsync( () => { Patch patch = Module.GetSingleDiff(gitStash.Name + "^", gitStash.Name, stashedItem.Name, stashedItem.OldName, extraDiffArguments, encoding, true, stashedItem.IsTracked); if (patch == null) { return(text: string.Empty, openWithDifftool: null /* not applicable */); } if (stashedItem.IsSubmodule) { return(text: LocalizationHelpers.ProcessSubmodulePatch(Module, stashedItem.Name, patch), openWithDifftool: null /* not implemented */); } return(text: patch.Text, openWithDifftool: null /* not implemented */); }); } } else { View.ViewTextAsync(string.Empty, string.Empty); } } }
private void StashedSelectedIndexChanged(object sender, EventArgs e) { GitStash gitStash = Stashes.SelectedItem as GitStash; GitItemStatus stashedItem = Stashed.SelectedItem; EnablePartialStash(); Cursor.Current = Cursors.WaitCursor; if (stashedItem != null && gitStash == _currentWorkingDirStashItem) { // current working directory View.ViewCurrentChanges(stashedItem); } else if (stashedItem != null) { if (stashedItem.IsNew) { if (!stashedItem.IsSubmodule) { View.ViewGitItem(stashedItem.Name, stashedItem.TreeGuid); } else { View.ViewText(stashedItem.Name, LocalizationHelpers.GetSubmoduleText(Module, stashedItem.Name, stashedItem.TreeGuid)); } } else { string extraDiffArguments = View.GetExtraDiffArguments(); Encoding encoding = View.Encoding; View.ViewPatch(() => { Patch patch = Module.GetSingleDiff(gitStash.Name + "^", gitStash.Name, stashedItem.Name, stashedItem.OldName, extraDiffArguments, encoding, true, stashedItem.IsTracked); if (patch == null) { return(string.Empty); } if (stashedItem.IsSubmodule) { return(LocalizationHelpers.ProcessSubmodulePatch(Module, stashedItem.Name, patch)); } return(patch.Text); }); } } else { View.ViewText(string.Empty, string.Empty); } Cursor.Current = Cursors.Default; }
public static string GetSelectedPatch(this FileViewer diffViewer, string firstRevision, string secondRevision, GitItemStatus file) { if (firstRevision == null) { return(null); } //to simplify if-ology if (GitRevision.IsArtificial(secondRevision) && firstRevision != GitRevision.UnstagedGuid) { string temp = firstRevision; firstRevision = secondRevision; secondRevision = temp; } if (IsItemUntracked(file, firstRevision, secondRevision)) { var fullPath = Path.Combine(diffViewer.Module.WorkingDir, file.Name); if (Directory.Exists(fullPath) && GitModule.IsValidGitWorkingDir(fullPath)) { return(LocalizationHelpers.GetSubmoduleText(diffViewer.Module, file.Name.TrimEnd('/'), "")); } return(FileReader.ReadFileContent(fullPath, diffViewer.Encoding)); } if (file.IsSubmodule && file.SubmoduleStatus != null) { return(LocalizationHelpers.ProcessSubmoduleStatus(diffViewer.Module, file.SubmoduleStatus.Result)); } PatchApply.Patch patch = GetItemPatch(diffViewer.Module, file, firstRevision, secondRevision, diffViewer.GetExtraDiffArguments(), diffViewer.Encoding); if (patch == null) { return(string.Empty); } if (file.IsSubmodule) { return(LocalizationHelpers.ProcessSubmodulePatch(diffViewer.Module, file.Name, patch)); } return(patch.Text); }
private void GitTree_AfterSelect(object sender, TreeViewEventArgs e) { var item = e.Node.Tag as GitItem; if (item == null) { return; } if (item.IsBlob) { FileText.ViewGitItem(item.FileName, item.Guid); } else if (item.IsCommit) { FileText.ViewText(item.FileName, LocalizationHelpers.GetSubmoduleText(Module, item.FileName, item.Guid)); } else { FileText.ViewText("", ""); } }
private static string GetSelectedPatch( [NotNull] this FileViewer diffViewer, [CanBeNull] ObjectId firstRevision, [CanBeNull] ObjectId secondRevision, [NotNull] GitItemStatus file) { if (!file.IsTracked) { var fullPath = Path.Combine(diffViewer.Module.WorkingDir, file.Name); if (Directory.Exists(fullPath) && GitModule.IsValidGitWorkingDir(fullPath)) { // git-status does not detect details for untracked and git-diff --no-index will not give info return(LocalizationHelpers.GetSubmoduleText(diffViewer.Module, file.Name.TrimEnd('/'), "")); } } if (file.IsSubmodule && file.GetSubmoduleStatusAsync() != null) { return(LocalizationHelpers.ProcessSubmoduleStatus(diffViewer.Module, ThreadHelper.JoinableTaskFactory.Run(() => file.GetSubmoduleStatusAsync()))); } Patch patch = GetItemPatch(diffViewer.Module, file, firstRevision, secondRevision, diffViewer.GetExtraDiffArguments(), diffViewer.Encoding); if (patch == null) { return(string.Empty); } if (file.IsSubmodule) { return(LocalizationHelpers.ProcessSubmodulePatch(diffViewer.Module, file.Name, patch)); } return(patch.Text); }
public void ViewGitItem(string fileName, string guid) { ViewItem(fileName, () => GetImage(fileName, guid), () => GetFileTextIfBlobExists(guid), () => LocalizationHelpers.GetSubmoduleText(Module, fileName.TrimEnd('/'), guid)); }
public void ViewFile(string fileName) { ViewItem(fileName, () => GetImage(fileName), () => GetFileText(fileName), () => LocalizationHelpers.GetSubmoduleText(Module, fileName.TrimEnd('/'), "")); }