refactor: external tools and shells

* rename Models.ExternalMergeTools to Models.ExternalMerger
* supports Git Bash/PowerShell/Command Prompt/Default Shell in Windows Terminal
This commit is contained in:
leo 2024-04-09 10:41:37 +08:00
parent 4ac705f8ca
commit 4882fd9d69
19 changed files with 243 additions and 152 deletions

View file

@ -200,6 +200,18 @@ namespace SourceGit.ViewModels
}
}
public Models.Shell GitShell
{
get => Native.OS.GetShell();
set
{
if (Native.OS.SetShell(value))
{
OnPropertyChanged(nameof(GitShell));
}
}
}
public string GitDefaultCloneDir
{
get => _gitDefaultCloneDir;
@ -219,28 +231,15 @@ namespace SourceGit.ViewModels
}
}
public bool UsePowershellOnWindows
{
get => Native.OS.UsePowershellOnWindows;
set
{
if (Native.OS.UsePowershellOnWindows != value)
{
Native.OS.UsePowershellOnWindows = value;
OnPropertyChanged(nameof(UsePowershellOnWindows));
}
}
}
public int ExternalMergeToolType
{
get => _externalMergeToolType;
set
{
var changed = SetProperty(ref _externalMergeToolType, value);
if (changed && !OperatingSystem.IsWindows() && value > 0 && value < Models.ExternalMergeTools.Supported.Count)
if (changed && !OperatingSystem.IsWindows() && value > 0 && value < Models.ExternalMerger.Supported.Count)
{
var tool = Models.ExternalMergeTools.Supported[value];
var tool = Models.ExternalMerger.Supported[value];
if (File.Exists(tool.Exec))
ExternalMergeToolPath = tool.Exec;
else