77 lines
3.0 KiB
C#
77 lines
3.0 KiB
C#
using Avalonia;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Controls.ApplicationLifetimes;
|
|
using Avalonia.Data.Core.Plugins;
|
|
using Avalonia.Markup.Xaml;
|
|
using FileTranslation.Core;
|
|
using FileTranslation.Scripts;
|
|
using FileTranslation.Services;
|
|
using FileTranslation.ViewModels;
|
|
using FileTranslation.Views;
|
|
|
|
namespace FileTranslation;
|
|
|
|
public partial class App : Application
|
|
{
|
|
public override void Initialize()
|
|
{
|
|
AvaloniaXamlLoader.Load(this);
|
|
|
|
if (!this.Resources.MergedDictionaries.TryGetValue(AppResources.Global, out var globalDic) || globalDic is not IResourceDictionary globalResourceDictionary)
|
|
{
|
|
throw new NullReferenceException(nameof(globalResourceDictionary));
|
|
}
|
|
|
|
AppResources.GlobalResources = globalResourceDictionary;
|
|
if (!this.Resources.MergedDictionaries.TryGetValue(AppResources.Icons, out var iconDic) || iconDic is not IResourceDictionary iconResourceDictionary)
|
|
{
|
|
throw new NullReferenceException(nameof(iconResourceDictionary));
|
|
}
|
|
|
|
AppResources.IconResources = iconResourceDictionary;
|
|
if (!this.Resources.MergedDictionaries.TryGetValue(AppResources.Convertors, out var convertorDic) || convertorDic is not IResourceDictionary convertersResourceDictionary)
|
|
{
|
|
throw new NullReferenceException(nameof(convertersResourceDictionary));
|
|
}
|
|
|
|
AppResources.ConvertorResources = convertersResourceDictionary;
|
|
if (!this.Resources.MergedDictionaries.TryGetValue(AppResources.GlobalTemplates, out var globalStylesDic) || globalStylesDic is not IResourceDictionary globalStylesResourceDictionary)
|
|
{
|
|
throw new NullReferenceException(nameof(globalStylesResourceDictionary));
|
|
}
|
|
|
|
AppResources.GlobalTemplatesResources = globalStylesResourceDictionary;
|
|
}
|
|
|
|
public override void OnFrameworkInitializationCompleted()
|
|
{
|
|
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
|
{
|
|
// Line below is needed to remove Avalonia data validation.
|
|
// Without this line you will get duplicate validations from both Avalonia and CT
|
|
BindingPlugins.DataValidators.RemoveAt(0);
|
|
IServices services = new Services.Services();
|
|
Global.services = services;
|
|
IMainService mainService = new MainService();
|
|
ISettingService settingService = new SettingService();
|
|
INetService netService = new NetService(services);
|
|
services.AddSingleton(mainService);
|
|
services.AddSingleton(settingService);
|
|
services.AddSingleton(netService);
|
|
services.AddSingleton((IDispatcherService)new DispatcherService());
|
|
settingService.Load();
|
|
desktop.MainWindow = new MainWindowView
|
|
{
|
|
DataContext = new MainWindowViewModel(services),
|
|
};
|
|
}
|
|
|
|
base.OnFrameworkInitializationCompleted();
|
|
}
|
|
|
|
}
|
|
|
|
public class Global
|
|
{
|
|
public static IServices services { get; set; }
|
|
} |