sourcegit/src/Native/OS.cs

81 lines
2.1 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using Avalonia;
namespace SourceGit.Native
{
public static class OS
{
public interface IBackend
{
void SetupApp(AppBuilder builder);
string FindGitExecutable();
List<Models.ExternalEditor> FindExternalEditors();
void OpenTerminal(string workdir);
void OpenInFileManager(string path, bool select);
void OpenBrowser(string url);
void OpenWithDefaultEditor(string file);
}
public static string GitExecutable { get; set; } = string.Empty;
public static List<Models.ExternalEditor> ExternalEditors { get; set; } = new List<Models.ExternalEditor>();
2024-03-27 22:49:32 -07:00
static OS()
{
if (OperatingSystem.IsWindows())
{
_backend = new Windows();
}
else if (OperatingSystem.IsMacOS())
{
_backend = new MacOS();
}
else if (OperatingSystem.IsLinux())
{
_backend = new Linux();
}
else
{
throw new Exception("Platform unsupported!!!");
}
2024-03-27 22:49:32 -07:00
ExternalEditors = _backend.FindExternalEditors();
}
public static void SetupApp(AppBuilder builder)
{
2024-03-28 02:48:46 -07:00
_backend.SetupApp(builder);
}
public static string FindGitExecutable()
{
2024-03-28 02:48:46 -07:00
return _backend.FindGitExecutable();
}
public static void OpenInFileManager(string path, bool select = false)
{
2024-03-28 02:48:46 -07:00
_backend.OpenInFileManager(path, select);
}
public static void OpenBrowser(string url)
{
2024-03-28 02:48:46 -07:00
_backend.OpenBrowser(url);
}
public static void OpenTerminal(string workdir)
{
2024-03-28 02:48:46 -07:00
_backend.OpenTerminal(workdir);
}
public static void OpenWithDefaultEditor(string file)
{
2024-03-28 02:48:46 -07:00
_backend.OpenWithDefaultEditor(file);
}
private static IBackend _backend = null;
}
}