-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathApp.axaml.cs
More file actions
97 lines (78 loc) · 3.44 KB
/
App.axaml.cs
File metadata and controls
97 lines (78 loc) · 3.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using System.Globalization;
using System.IO;
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Data.Core;
using Avalonia.Data.Core.Plugins;
using System.Linq;
using Avalonia.Markup.Xaml;
using GTAIVSetupUtility.Service;
using GTAIVSetupUtility.Services;
using GTAIVSetupUtility.ViewModels;
using GTAIVSetupUtility.Views;
using NLog;
namespace GTAIVSetupUtility;
public partial class App : Application
{
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public override async void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
bool debug = File.Exists("DEBUG");
var loglevel = debug ? LogLevel.Debug : LogLevel.Info;
Localizations.Resources.Culture = debug ? new CultureInfo(CultureInfo.CurrentUICulture.Name) : new CultureInfo("en-US");
if (File.Exists("GTAIVSetupUtilityLog.txt")) { File.Delete("GTAIVSetupUtilityLog.txt"); }
LogManager.Setup().LoadConfiguration(builder => {
builder.ForLogger().FilterMinLevel(NLog.LogLevel.Debug).WriteToConsole();
builder.ForLogger().FilterMinLevel(loglevel).WriteToFile(fileName: "GTAIVSetupUtilityLog.txt");
});
Logger.Info(" Initializing the application...");
DisableAvaloniaDataAnnotationValidation();
var viewModel = new MainWindowViewModel();
var mainWindow = new MainWindow
{
DataContext = viewModel,
};
desktop.MainWindow = mainWindow;
mainWindow.Show();
Logger.Info(" Checking for Linux running under Wine...");
if (OsDetectionService.IsLinux())
{
Logger.Info(" Detected Linux - DXVK functionality will be disabled.");
viewModel.InstallDxvk = 0;
viewModel.IsDxvkPanelEnabled = false;
viewModel.IsLinux = true;
var box = MsBox.Avalonia.MessageBoxManager.GetMessageBoxStandard(
Localizations.Resources.LinuxDetectedTitle,
Localizations.Resources.LinuxDetectedDescription.Replace("\\n", "\n"),
MsBox.Avalonia.Enums.ButtonEnum.Ok,
MsBox.Avalonia.Enums.Icon.Info);
await box.ShowWindowDialogAsync(mainWindow);
}
else
{
Logger.Info(" Application is not running under Wine.");
Logger.Info(" Initializing the vulkan check...");
var vulkanInfo = await VulkanCheckerService.VulkanCheck();
await viewModel.ReceiveVulkanInfoAsync(vulkanInfo);
}
}
base.OnFrameworkInitializationCompleted();
}
private void DisableAvaloniaDataAnnotationValidation()
{
// Get an array of plugins to remove
var dataValidationPluginsToRemove =
BindingPlugins.DataValidators.OfType<DataAnnotationsValidationPlugin>().ToArray();
// remove each entry found
foreach (var plugin in dataValidationPluginsToRemove)
{
BindingPlugins.DataValidators.Remove(plugin);
}
}
}