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 IsCshtmlFile => Path.EndsWith(".cshtml", StringComparison.OrdinalIgnoreCase);
|
||||||
public bool IsCsharpFile => Path.EndsWith(".cs", StringComparison.OrdinalIgnoreCase);
|
public bool IsCsharpFile => Path.EndsWith(".cs", StringComparison.OrdinalIgnoreCase);
|
||||||
public bool IsRoslynWorkspaceFile => IsCsharpFile || IsRazorFile || IsCshtmlFile;
|
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 ReactiveProperty<bool> IsDirty { get; init; }
|
||||||
public required bool SuppressDiskChangeEvents { get; set; } // probably has concurrency issues
|
public required bool SuppressDiskChangeEvents { get; set; } // probably has concurrency issues
|
||||||
public required DateTimeOffset? LastIdeWriteTime { get; set; }
|
public required DateTimeOffset? LastIdeWriteTime { get; set; }
|
||||||
|
|||||||
@@ -27,10 +27,10 @@ public static class VsPersistenceMapper
|
|||||||
|
|
||||||
var mappedGitStatus = entry.State switch
|
var mappedGitStatus = entry.State switch
|
||||||
{
|
{
|
||||||
FileStatus.NewInIndex | FileStatus.ModifiedInWorkdir => GitStatus.Added, // I've seen these appear together
|
FileStatus.NewInIndex | FileStatus.ModifiedInWorkdir => GitFileStatus.Added, // I've seen these appear together
|
||||||
FileStatus.NewInIndex or FileStatus.NewInWorkdir => GitStatus.Added,
|
FileStatus.NewInIndex or FileStatus.NewInWorkdir => GitFileStatus.Added,
|
||||||
FileStatus.ModifiedInIndex or FileStatus.ModifiedInWorkdir => GitStatus.Modified,
|
FileStatus.ModifiedInIndex or FileStatus.ModifiedInWorkdir => GitFileStatus.Modified,
|
||||||
_ => GitStatus.Unaltered // TODO: handle other kinds?
|
_ => GitFileStatus.Unaltered // TODO: handle other kinds?
|
||||||
};
|
};
|
||||||
|
|
||||||
fileInSolution.GitStatus = mappedGitStatus;
|
fileInSolution.GitStatus = mappedGitStatus;
|
||||||
@@ -40,7 +40,7 @@ public static class VsPersistenceMapper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum GitStatus
|
public enum GitFileStatus
|
||||||
{
|
{
|
||||||
Unaltered,
|
Unaltered,
|
||||||
Modified,
|
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;
|
||||||
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
|
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
|
||||||
using SharpIDE.Godot.Features.Common;
|
using SharpIDE.Godot.Features.Common;
|
||||||
|
using SharpIDE.Godot.Features.Git;
|
||||||
using SharpIDE.Godot.Features.Problems;
|
using SharpIDE.Godot.Features.Problems;
|
||||||
|
|
||||||
namespace SharpIDE.Godot.Features.SolutionExplorer;
|
namespace SharpIDE.Godot.Features.SolutionExplorer;
|
||||||
@@ -24,10 +25,6 @@ public partial class SolutionExplorerPanel : MarginContainer
|
|||||||
public Texture2D CsprojIcon { get; set; } = null!;
|
public Texture2D CsprojIcon { get; set; } = null!;
|
||||||
[Export]
|
[Export]
|
||||||
public Texture2D SlnIcon { get; set; } = null!;
|
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!;
|
public SharpIdeSolutionModel SolutionModel { get; set; } = null!;
|
||||||
private Tree _tree = null!;
|
private Tree _tree = null!;
|
||||||
@@ -300,7 +297,7 @@ public partial class SolutionExplorerPanel : MarginContainer
|
|||||||
var fileItem = tree.CreateItem(parent, newStartingIndex);
|
var fileItem = tree.CreateItem(parent, newStartingIndex);
|
||||||
fileItem.SetText(0, sharpIdeFile.Name);
|
fileItem.SetText(0, sharpIdeFile.Name);
|
||||||
fileItem.SetIconsForFileExtension(sharpIdeFile);
|
fileItem.SetIconsForFileExtension(sharpIdeFile);
|
||||||
fileItem.SetCustomColor(0, GetColorForGitStatus(sharpIdeFile.GitStatus));
|
fileItem.SetCustomColor(0, GitColours.GetColorForGitFileStatus(sharpIdeFile.GitStatus));
|
||||||
fileItem.SetMetadata(0, new RefCountedContainer<SharpIdeFile>(sharpIdeFile));
|
fileItem.SetMetadata(0, new RefCountedContainer<SharpIdeFile>(sharpIdeFile));
|
||||||
|
|
||||||
Observable.EveryValueChanged(sharpIdeFile, file => file.Name)
|
Observable.EveryValueChanged(sharpIdeFile, file => file.Name)
|
||||||
@@ -339,12 +336,4 @@ public partial class SolutionExplorerPanel : MarginContainer
|
|||||||
{
|
{
|
||||||
await this.InvokeAsync(() => item?.Free());
|
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