using System.Windows;
using CursorLang.Models;
using CursorLang.Services;
using CursorLang.ViewModels;
using CursorLang.Views;
using Microsoft.Extensions.DependencyInjection;
namespace CursorLang;
///
/// Композиционный корень: собирает контейнер и запускает окно настроек.
///
public partial class App : Application
{
private ServiceProvider? _services;
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var services = new ServiceCollection();
ConfigureServices(services);
_services = services.BuildServiceProvider();
_services.GetRequiredService();
MainWindow = _services.GetRequiredService();
MainWindow.Show();
_services.GetRequiredService().Start();
_services.GetRequiredService().Start();
}
protected override void OnExit(ExitEventArgs e)
{
_services?.Dispose();
base.OnExit(e);
}
private static void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(new KeyboardLayoutOptions());
services.AddSingleton();
services.AddSingleton(provider => provider.GetRequiredService().Load());
services.AddSingleton();
services.AddSingleton(provider => provider.GetRequiredService());
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
}
}