Terminal UI V2, advanced binding

This commit is contained in:
2023-08-08 18:28:13 +02:00
parent 52536b569d
commit 2528487ff6
38 changed files with 911 additions and 199 deletions

View File

@@ -18,9 +18,9 @@ public static class DI
{
public static IServiceProvider ServiceProvider { get; private set; } = null!;
public static void Initialize(IConfigurationRoot configuration)
public static void Initialize(IConfigurationRoot configuration, IServiceCollection serviceCollection)
=> ServiceProvider = DependencyInjection
.RegisterDefaultServices(configuration: configuration)
.RegisterDefaultServices(configuration: configuration, serviceCollection: serviceCollection)
.AddConsoleServices()
.AddLocalProviderServices()
.AddServerCoreServices()

View File

@@ -17,6 +17,7 @@
<ProjectReference Include="..\..\AppCommon\FileTime.App.FrequencyNavigation\FileTime.App.FrequencyNavigation.csproj" />
<ProjectReference Include="..\..\Tools\FileTime.Tools.Compression\FileTime.Tools.Compression.csproj" />
<ProjectReference Include="..\FileTime.ConsoleUI.App\FileTime.ConsoleUI.App.csproj" />
<ProjectReference Include="..\FileTime.ConsoleUI.Styles\FileTime.ConsoleUI.Styles.csproj" />
</ItemGroup>
<ItemGroup>
@@ -28,6 +29,7 @@
<PackageReference Include="Serilog.Extensions.Logging" Version="7.0.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="7.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageReference Include="Terminal.Gui" Version="1.13.5" />
</ItemGroup>
</Project>

View File

@@ -2,20 +2,52 @@
using FileTime.App.Core.Configuration;
using FileTime.ConsoleUI;
using FileTime.ConsoleUI.App;
using FileTime.ConsoleUI.Styles;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using TerminalUI.ConsoleDrivers;
(AppDataRoot, EnvironmentName) = Init.InitDevelopment();
var configuration = new ConfigurationBuilder()
.AddInMemoryCollection(MainConfiguration.Configuration)
IConsoleDriver driver = new WindowsDriver();
driver.Init();
ITheme theme;
if (driver.GetCursorPosition() is not {PosX: 0, PosY: 0})
{
driver = new DotnetDriver();
driver.Init();
theme = DefaultThemes.ConsoleColorTheme;
}
else
{
theme = DefaultThemes.Color256Theme;
}
driver.SetCursorVisible(false);
try
{
(AppDataRoot, EnvironmentName) = Init.InitDevelopment();
var configuration = new ConfigurationBuilder()
.AddInMemoryCollection(MainConfiguration.Configuration)
#if DEBUG
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
#endif
.Build();
DI.Initialize(configuration);
.Build();
var app = DI.ServiceProvider.GetRequiredService<IApplication>();
app.Run();
var serviceCollection = new ServiceCollection();
serviceCollection.TryAddSingleton<IConsoleDriver>(driver);
serviceCollection.TryAddSingleton<ITheme>(theme);
DI.Initialize(configuration, serviceCollection);
var app = DI.ServiceProvider.GetRequiredService<IApplication>();
app.Run();
}
finally
{
driver.SetCursorVisible(true);
driver.Dispose();
}
public partial class Program
{