Files
gott/WindowsApp/MainWindow.xaml.cs
T

73 lines
2.0 KiB
C#

using System;
using System.IO;
using System.Text.Json;
using System.Windows;
using Microsoft.Web.WebView2.Core;
namespace Gott;
public partial class MainWindow : Window
{
private readonly AppSettings _settings;
public MainWindow()
{
_settings = LoadSettings();
InitializeComponent();
var screenW = SystemParameters.PrimaryScreenWidth;
var screenH = SystemParameters.PrimaryScreenHeight;
Width = 930;
Height = screenH * 0.95;
Left = (screenW - Width) / 2;
Top = (screenH - Height) / 2;
Loaded += async (_, _) =>
{
await webView.EnsureCoreWebView2Async();
// Dark background to avoid white flash
webView.DefaultBackgroundColor = System.Drawing.Color.FromArgb(255, 17, 17, 17);
// Open external links in default browser
webView.CoreWebView2.NewWindowRequested += (_, e) =>
{
e.Handled = true;
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(e.Uri) { UseShellExecute = true });
};
webView.CoreWebView2.NavigationCompleted += (_, _) =>
{
webView.Visibility = Visibility.Visible;
loader.Visibility = Visibility.Collapsed;
};
webView.CoreWebView2.Navigate(_settings.Url);
};
}
private static AppSettings LoadSettings()
{
foreach (var file in new[] { "appsettings.Production.json", "appsettings.json" })
{
var path = Path.Combine(AppContext.BaseDirectory, file);
if (File.Exists(path))
{
try
{
var json = File.ReadAllText(path);
return JsonSerializer.Deserialize<AppSettings>(json) ?? new();
}
catch { }
}
}
return new();
}
}
public class AppSettings
{
public string Url { get; set; } = "http://localhost:19000";
}