avalonia structure refactoring

This commit is contained in:
EugeneTes
2026-04-01 09:34:02 +02:00
parent 1c7a4abd5c
commit 1032a5a28c
24 changed files with 65 additions and 31 deletions

View File

@@ -12,6 +12,7 @@ using VisionBuilder.UI.IOCommander;
using VisionBuilder.UI.Recipes.HawkeyeRecipe;
using VisionBuilder.UI.Ringbuffer;
using VisionBuilder.UI.Statistics;
using VisionBuilder.UI.Avalonia;
using VisionBuilder.UI.Avalonia.Uno.Views;
using Lindt.Colorballs.Duo.Utils;

View File

@@ -1,6 +1,6 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:views="using:VisionBuilder.UI.Avalonia.Uno.Views"
xmlns:views="using:VisionBuilder.UI.Avalonia.Views"
x:Class="VisionBuilder.UI.Avalonia.Uno.Views.MainWindow"
Title="VisionBuilder UNO"
Width="1920" Height="1080"

View File

@@ -7,6 +7,7 @@ using Avalonia.Controls.Primitives;
using Avalonia.Interactivity;
using Avalonia.Media;
using Avalonia.Threading;
using VisionBuilder.UI.Avalonia;
using VisionBuilder.UI.Common.ViewModel;
using VisionBuilder.UI.Common.ViewModel.Classes;

View File

@@ -11,12 +11,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="11.2.3" />
<PackageReference Include="Avalonia.Desktop" Version="11.2.3" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.2.3" />
<PackageReference Include="Avalonia.LinuxFramebuffer" Version="11.2.3" />
<PackageReference Include="Ninject.Extensions.ChildKernel" Version="3.3.0" />
<PackageReference Include="OpenCvSharp4" Version="4.10.0.20241108" />
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.10.0.20241108" />
<PackageReference Include="swety.OpenCvSharp4.runtime.linux-arm64" Version="4.10.0.20241108" />
<!-- Override transitive GPU OnnxRuntime with CPU-only (GPU has no linux-arm64 natives) -->
@@ -27,6 +24,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\VisionBuilder.UI.Avalonia\VisionBuilder.UI.Avalonia.csproj" />
<ProjectReference Include="..\framework\Inspectron.Settings\Inspectron.Settings.csproj" />
<ProjectReference Include="..\Hawkeye.VisionBuilder.UI.Sources.Emulation\Hawkeye.VisionBuilder.UI.Sources.Emulation.csproj" />
<ProjectReference Include="..\VisionBuilder.UI.Camera\VisionBuilder.UI.Camera.csproj" />

View File

@@ -1,7 +1,7 @@
using Inspectron.Settings;
using VisionBuilder.UI.Common;
namespace VisionBuilder.UI.Avalonia.Uno;
namespace VisionBuilder.UI.Avalonia;
public class AvaloniaUISettings : ISettings
{

View File

@@ -1,7 +1,7 @@
using System.Globalization;
using Avalonia.Data.Converters;
namespace VisionBuilder.UI.Avalonia.Uno.Converters;
namespace VisionBuilder.UI.Avalonia.Converters;
public class BoolToVisibilityConverter : IValueConverter
{

View File

@@ -1,9 +1,9 @@
using System.Globalization;
using Avalonia.Data.Converters;
using OpenCvSharp;
using VisionBuilder.UI.Avalonia.Uno.Services;
using VisionBuilder.UI.Avalonia.Services;
namespace VisionBuilder.UI.Avalonia.Uno.Converters;
namespace VisionBuilder.UI.Avalonia.Converters;
public class MatToBitmapConverter : IValueConverter
{

View File

@@ -3,9 +3,9 @@ using VisionBuilder.UI.Common;
using VisionBuilder.UI.Common.Processing;
using VisionBuilder.UI.Common.Services;
using VisionBuilder.UI.Common.ViewModel.Interfaces.UI;
using VisionBuilder.UI.Avalonia.Uno.Services;
using VisionBuilder.UI.Avalonia.Services;
namespace VisionBuilder.UI.Avalonia.Uno;
namespace VisionBuilder.UI.Avalonia;
public static class ModuleExtensions
{

View File

@@ -1,11 +1,11 @@
using VisionBuilder.UI.Common.ViewModel;
using VisionBuilder.UI.Common.ViewModel.Interfaces.UI;
using VisionBuilder.UI.Avalonia.Uno.Views;
using VisionBuilder.UI.Avalonia.Views;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
namespace VisionBuilder.UI.Avalonia.Uno.Services;
namespace VisionBuilder.UI.Avalonia.Services;
public class AvaloniaImagePreviewService : IImagePreviewService
{

View File

@@ -1,7 +1,7 @@
using Serilog;
using VisionBuilder.UI.Common.Processing;
namespace VisionBuilder.UI.Avalonia.Uno.Services;
namespace VisionBuilder.UI.Avalonia.Services;
public class AvaloniaLoadingService : ILoadingService
{

View File

@@ -1,10 +1,10 @@
using VisionBuilder.UI.Common.Services;
using VisionBuilder.UI.Avalonia.Uno.Views;
using VisionBuilder.UI.Avalonia.Views;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
namespace VisionBuilder.UI.Avalonia.Uno.Services;
namespace VisionBuilder.UI.Avalonia.Services;
public class AvaloniaPasswordInputService : IPasswordInputService
{

View File

@@ -1,11 +1,11 @@
using VisionBuilder.UI.Common.ViewModel;
using VisionBuilder.UI.Common.ViewModel.Interfaces.UI;
using VisionBuilder.UI.Avalonia.Uno.Views;
using VisionBuilder.UI.Avalonia.Views;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
namespace VisionBuilder.UI.Avalonia.Uno.Services;
namespace VisionBuilder.UI.Avalonia.Services;
public class AvaloniaRecipeSelectionDialogService : IRecipeSelectionDialogService
{

View File

@@ -1,6 +1,6 @@
using VisionBuilder.UI.Common.ViewModel.Interfaces.UI;
namespace VisionBuilder.UI.Avalonia.Uno.Services;
namespace VisionBuilder.UI.Avalonia.Services;
public class AvaloniaSettingsService : ISettingsService
{

View File

@@ -1,6 +1,6 @@
using OpenCvSharp;
namespace VisionBuilder.UI.Avalonia.Uno.Services;
namespace VisionBuilder.UI.Avalonia.Services;
public static class ImageConverter
{

View File

@@ -1,6 +1,6 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="VisionBuilder.UI.Avalonia.Uno.Views.ImagePreviewDialog"
x:Class="VisionBuilder.UI.Avalonia.Views.ImagePreviewDialog"
Title="Image Preview"
WindowState="Maximized"
WindowStartupLocation="CenterOwner"

View File

@@ -1,9 +1,9 @@
using System.ComponentModel;
using Avalonia.Controls;
using VisionBuilder.UI.Avalonia.Uno.Services;
using VisionBuilder.UI.Avalonia.Services;
using VisionBuilder.UI.Common.ViewModel;
namespace VisionBuilder.UI.Avalonia.Uno.Views;
namespace VisionBuilder.UI.Avalonia.Views;
public partial class ImagePreviewDialog : Window
{

View File

@@ -1,6 +1,6 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="VisionBuilder.UI.Avalonia.Uno.Views.PasswordDialog"
x:Class="VisionBuilder.UI.Avalonia.Views.PasswordDialog"
Title="Password Required"
Width="400" Height="180"
CanResize="False"

View File

@@ -1,7 +1,7 @@
using Avalonia.Controls;
using Avalonia.Input;
namespace VisionBuilder.UI.Avalonia.Uno.Views;
namespace VisionBuilder.UI.Avalonia.Views;
public partial class PasswordDialog : Window
{

View File

@@ -1,6 +1,6 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="VisionBuilder.UI.Avalonia.Uno.Views.RecipeSelectionDialog"
x:Class="VisionBuilder.UI.Avalonia.Views.RecipeSelectionDialog"
Title="Select Recipe"
Width="800" Height="600"
WindowStartupLocation="CenterOwner"

View File

@@ -2,12 +2,12 @@ using Avalonia.Controls;
using Avalonia.Layout;
using Avalonia.Media;
using Avalonia.Media.Imaging;
using VisionBuilder.UI.Avalonia.Uno.Services;
using VisionBuilder.UI.Avalonia.Services;
using VisionBuilder.UI.Common.ViewModel;
using VisionBuilder.UI.Common.ViewModel.Classes;
using VisionBuilder.UI.Common.ViewModel.Interfaces.UI;
namespace VisionBuilder.UI.Avalonia.Uno.Views;
namespace VisionBuilder.UI.Avalonia.Views;
public partial class RecipeSelectionDialog : global::Avalonia.Controls.Window
{

View File

@@ -1,7 +1,7 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="using:VisionBuilder.UI.Avalonia.Uno.Converters"
x:Class="VisionBuilder.UI.Avalonia.Uno.Views.SingleCameraView"
xmlns:converters="using:VisionBuilder.UI.Avalonia.Converters"
x:Class="VisionBuilder.UI.Avalonia.Views.SingleCameraView"
Background="White">
<UserControl.Resources>

View File

@@ -10,12 +10,12 @@ using Avalonia.Media;
using Avalonia.Media.Imaging;
using Avalonia.Threading;
using OpenCvSharp;
using VisionBuilder.UI.Avalonia.Uno.Services;
using VisionBuilder.UI.Avalonia.Services;
using VisionBuilder.UI.Common;
using VisionBuilder.UI.Common.ViewModel;
using VisionBuilder.UI.Common.ViewModel.Classes;
namespace VisionBuilder.UI.Avalonia.Uno.Views;
namespace VisionBuilder.UI.Avalonia.Views;
public partial class SingleCameraView : UserControl
{

View File

@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="11.2.3" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.2.3" />
<PackageReference Include="OpenCvSharp4" Version="4.10.0.20241108" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\framework\Inspectron.Settings\Inspectron.Settings.csproj" />
<ProjectReference Include="..\VisionBuilder.UI.Common\VisionBuilder.UI.Common.csproj" />
</ItemGroup>
</Project>

View File

@@ -117,6 +117,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisionBuilder.UI.Avalonia.U
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LindtLeerformPlugin", "Plugins\LindtLeerformPlugin\LindtLeerformPlugin.csproj", "{5A1D9E37-353C-4E30-A302-48487DC3A9E8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisionBuilder.UI.Avalonia", "VisionBuilder.UI.Avalonia\VisionBuilder.UI.Avalonia.csproj", "{0549063E-5B22-4332-AD54-0D799B6DB4D2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -629,6 +631,18 @@ Global
{5A1D9E37-353C-4E30-A302-48487DC3A9E8}.Release|x64.Build.0 = Release|Any CPU
{5A1D9E37-353C-4E30-A302-48487DC3A9E8}.Release|x86.ActiveCfg = Release|Any CPU
{5A1D9E37-353C-4E30-A302-48487DC3A9E8}.Release|x86.Build.0 = Release|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Debug|x64.ActiveCfg = Debug|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Debug|x64.Build.0 = Debug|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Debug|x86.ActiveCfg = Debug|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Debug|x86.Build.0 = Debug|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Release|Any CPU.Build.0 = Release|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Release|x64.ActiveCfg = Release|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Release|x64.Build.0 = Release|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Release|x86.ActiveCfg = Release|Any CPU
{0549063E-5B22-4332-AD54-0D799B6DB4D2}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE