refactor git colours

This commit is contained in:
Matt Parker
2025-12-03 18:44:16 +10:00
parent 91cb6d7991
commit e8f4303b07
5 changed files with 44 additions and 19 deletions

View 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
};
}

View File

@@ -0,0 +1 @@
uid://ccdmpjeuj1lmy

View File

@@ -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
};
}