From 49efb3c6bbf5eeeb3480945d26181aaac9fe5137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Strehovsk=C3=BD?= Date: Thu, 21 Mar 2024 08:36:21 +0100 Subject: [PATCH] Add Avalonia app --- .github/workflows/sizestats.yml | 1 + src/avalonia.app/App.axaml | 10 ++++++++++ src/avalonia.app/App.axaml.cs | 23 +++++++++++++++++++++++ src/avalonia.app/MainWindow.axaml | 9 +++++++++ src/avalonia.app/MainWindow.axaml.cs | 11 +++++++++++ src/avalonia.app/Program.cs | 21 +++++++++++++++++++++ src/avalonia.app/app.manifest | 18 ++++++++++++++++++ src/avalonia.app/avalonia.app.csproj | 20 ++++++++++++++++++++ 8 files changed, 113 insertions(+) create mode 100644 src/avalonia.app/App.axaml create mode 100644 src/avalonia.app/App.axaml.cs create mode 100644 src/avalonia.app/MainWindow.axaml create mode 100644 src/avalonia.app/MainWindow.axaml.cs create mode 100644 src/avalonia.app/Program.cs create mode 100644 src/avalonia.app/app.manifest create mode 100644 src/avalonia.app/avalonia.app.csproj diff --git a/.github/workflows/sizestats.yml b/.github/workflows/sizestats.yml index 1685875..6404719 100644 --- a/.github/workflows/sizestats.yml +++ b/.github/workflows/sizestats.yml @@ -108,6 +108,7 @@ jobs: - hello - hello-minimal - webapiaot + - avalonia.app include: - os: linux osrid: linux diff --git a/src/avalonia.app/App.axaml b/src/avalonia.app/App.axaml new file mode 100644 index 0000000..c89fa9e --- /dev/null +++ b/src/avalonia.app/App.axaml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/src/avalonia.app/App.axaml.cs b/src/avalonia.app/App.axaml.cs new file mode 100644 index 0000000..c67efa6 --- /dev/null +++ b/src/avalonia.app/App.axaml.cs @@ -0,0 +1,23 @@ +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Markup.Xaml; + +namespace avalonia.app; + +public partial class App : Application +{ + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + desktop.MainWindow = new MainWindow(); + } + + base.OnFrameworkInitializationCompleted(); + } +} \ No newline at end of file diff --git a/src/avalonia.app/MainWindow.axaml b/src/avalonia.app/MainWindow.axaml new file mode 100644 index 0000000..e9f7452 --- /dev/null +++ b/src/avalonia.app/MainWindow.axaml @@ -0,0 +1,9 @@ + + Welcome to Avalonia! + diff --git a/src/avalonia.app/MainWindow.axaml.cs b/src/avalonia.app/MainWindow.axaml.cs new file mode 100644 index 0000000..b3f79d1 --- /dev/null +++ b/src/avalonia.app/MainWindow.axaml.cs @@ -0,0 +1,11 @@ +using Avalonia.Controls; + +namespace avalonia.app; + +public partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/src/avalonia.app/Program.cs b/src/avalonia.app/Program.cs new file mode 100644 index 0000000..0309c46 --- /dev/null +++ b/src/avalonia.app/Program.cs @@ -0,0 +1,21 @@ +using Avalonia; +using System; + +namespace avalonia.app; + +class Program +{ + // Initialization code. Don't use any Avalonia, third-party APIs or any + // SynchronizationContext-reliant code before AppMain is called: things aren't initialized + // yet and stuff might break. + [STAThread] + public static void Main(string[] args) => BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + + // Avalonia configuration, don't remove; also used by visual designer. + public static AppBuilder BuildAvaloniaApp() + => AppBuilder.Configure() + .UsePlatformDetect() + .WithInterFont() + .LogToTrace(); +} diff --git a/src/avalonia.app/app.manifest b/src/avalonia.app/app.manifest new file mode 100644 index 0000000..7919499 --- /dev/null +++ b/src/avalonia.app/app.manifest @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/src/avalonia.app/avalonia.app.csproj b/src/avalonia.app/avalonia.app.csproj new file mode 100644 index 0000000..ee8dc0c --- /dev/null +++ b/src/avalonia.app/avalonia.app.csproj @@ -0,0 +1,20 @@ + + + WinExe + net9.0 + enable + true + app.manifest + true + true + + + + + + + + + + +