refactor git colours
This commit is contained in:
@@ -18,7 +18,7 @@ public class SharpIdeFile : ISharpIdeNode, IChildSharpIdeNode, IFileOrFolder
|
||||
public bool IsCshtmlFile => Path.EndsWith(".cshtml", StringComparison.OrdinalIgnoreCase);
|
||||
public bool IsCsharpFile => Path.EndsWith(".cs", StringComparison.OrdinalIgnoreCase);
|
||||
public bool IsRoslynWorkspaceFile => IsCsharpFile || IsRazorFile || IsCshtmlFile;
|
||||
public GitStatus GitStatus { get; set; } = GitStatus.Unaltered;
|
||||
public GitFileStatus GitStatus { get; set; } = GitFileStatus.Unaltered;
|
||||
public required ReactiveProperty<bool> IsDirty { get; init; }
|
||||
public required bool SuppressDiskChangeEvents { get; set; } // probably has concurrency issues
|
||||
public required DateTimeOffset? LastIdeWriteTime { get; set; }
|
||||
|
||||
@@ -27,10 +27,10 @@ public static class VsPersistenceMapper
|
||||
|
||||
var mappedGitStatus = entry.State switch
|
||||
{
|
||||
FileStatus.NewInIndex | FileStatus.ModifiedInWorkdir => GitStatus.Added, // I've seen these appear together
|
||||
FileStatus.NewInIndex or FileStatus.NewInWorkdir => GitStatus.Added,
|
||||
FileStatus.ModifiedInIndex or FileStatus.ModifiedInWorkdir => GitStatus.Modified,
|
||||
_ => GitStatus.Unaltered // TODO: handle other kinds?
|
||||
FileStatus.NewInIndex | FileStatus.ModifiedInWorkdir => GitFileStatus.Added, // I've seen these appear together
|
||||
FileStatus.NewInIndex or FileStatus.NewInWorkdir => GitFileStatus.Added,
|
||||
FileStatus.ModifiedInIndex or FileStatus.ModifiedInWorkdir => GitFileStatus.Modified,
|
||||
_ => GitFileStatus.Unaltered // TODO: handle other kinds?
|
||||
};
|
||||
|
||||
fileInSolution.GitStatus = mappedGitStatus;
|
||||
@@ -40,7 +40,7 @@ public static class VsPersistenceMapper
|
||||
}
|
||||
}
|
||||
|
||||
public enum GitStatus
|
||||
public enum GitFileStatus
|
||||
{
|
||||
Unaltered,
|
||||
Modified,
|
||||
|
||||
35
src/SharpIDE.Godot/Features/Git/GitColours.cs
Normal file
35
src/SharpIDE.Godot/Features/Git/GitColours.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using Godot;
|
||||
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
|
||||
|
||||
namespace SharpIDE.Godot.Features.Git;
|
||||
|
||||
public static class GitColours
|
||||
{
|
||||
private const string NewFileColourHexCode = "50964c";
|
||||
private const string EditedFileColourHexCode = "6496ba";
|
||||
private const string UnalteredFileColourHexCode = "d4d4d4";
|
||||
|
||||
public static readonly Color GitNewFileColour = new Color(NewFileColourHexCode);
|
||||
public static readonly Color GitEditedFileColour = new Color(EditedFileColourHexCode);
|
||||
public static readonly Color GitUnalteredFileColour = new Color(UnalteredFileColourHexCode);
|
||||
|
||||
public static readonly Color GitNewFileTransparentColour = new Color(NewFileColourHexCode, 0.4f);
|
||||
public static readonly Color GitEditedFileTransparentColour = new Color(EditedFileColourHexCode, 0.4f);
|
||||
public static readonly Color GitUnalteredFileTransparentColour = new Color(UnalteredFileColourHexCode, 0.4f);
|
||||
|
||||
public static Color GetColorForGitFileStatus(GitFileStatus fileStatus) => fileStatus switch
|
||||
{
|
||||
GitFileStatus.Added => GitNewFileColour,
|
||||
GitFileStatus.Modified => GitEditedFileColour,
|
||||
GitFileStatus.Unaltered => GitUnalteredFileColour,
|
||||
_ => GitUnalteredFileColour
|
||||
};
|
||||
|
||||
public static Color GetColorForGitLineStatus(GitFileStatus fileStatus) => fileStatus switch
|
||||
{
|
||||
GitFileStatus.Added => GitNewFileTransparentColour,
|
||||
GitFileStatus.Modified => GitEditedFileTransparentColour,
|
||||
GitFileStatus.Unaltered => GitUnalteredFileTransparentColour,
|
||||
_ => GitUnalteredFileTransparentColour
|
||||
};
|
||||
}
|
||||
1
src/SharpIDE.Godot/Features/Git/GitColours.cs.uid
Normal file
1
src/SharpIDE.Godot/Features/Git/GitColours.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://ccdmpjeuj1lmy
|
||||
@@ -8,6 +8,7 @@ using SharpIDE.Application.Features.NavigationHistory;
|
||||
using SharpIDE.Application.Features.SolutionDiscovery;
|
||||
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
|
||||
using SharpIDE.Godot.Features.Common;
|
||||
using SharpIDE.Godot.Features.Git;
|
||||
using SharpIDE.Godot.Features.Problems;
|
||||
|
||||
namespace SharpIDE.Godot.Features.SolutionExplorer;
|
||||
@@ -24,10 +25,6 @@ public partial class SolutionExplorerPanel : MarginContainer
|
||||
public Texture2D CsprojIcon { get; set; } = null!;
|
||||
[Export]
|
||||
public Texture2D SlnIcon { get; set; } = null!;
|
||||
|
||||
private readonly Color _gitNewFileColour = new Color("50964c");
|
||||
private readonly Color _gitEditedFileColour = new Color("6496ba");
|
||||
private readonly Color _gitUnalteredFileColour = new Color("d4d4d4");
|
||||
|
||||
public SharpIdeSolutionModel SolutionModel { get; set; } = null!;
|
||||
private Tree _tree = null!;
|
||||
@@ -300,7 +297,7 @@ public partial class SolutionExplorerPanel : MarginContainer
|
||||
var fileItem = tree.CreateItem(parent, newStartingIndex);
|
||||
fileItem.SetText(0, sharpIdeFile.Name);
|
||||
fileItem.SetIconsForFileExtension(sharpIdeFile);
|
||||
fileItem.SetCustomColor(0, GetColorForGitStatus(sharpIdeFile.GitStatus));
|
||||
fileItem.SetCustomColor(0, GitColours.GetColorForGitFileStatus(sharpIdeFile.GitStatus));
|
||||
fileItem.SetMetadata(0, new RefCountedContainer<SharpIdeFile>(sharpIdeFile));
|
||||
|
||||
Observable.EveryValueChanged(sharpIdeFile, file => file.Name)
|
||||
@@ -339,12 +336,4 @@ public partial class SolutionExplorerPanel : MarginContainer
|
||||
{
|
||||
await this.InvokeAsync(() => item?.Free());
|
||||
}
|
||||
|
||||
private Color GetColorForGitStatus(GitStatus status) => status switch
|
||||
{
|
||||
GitStatus.Added => _gitNewFileColour,
|
||||
GitStatus.Modified => _gitEditedFileColour,
|
||||
GitStatus.Unaltered => _gitUnalteredFileColour,
|
||||
_ => _gitUnalteredFileColour
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user