settings for avalonia

libcamera bugfix
This commit is contained in:
EugeneTes
2026-04-01 14:05:37 +02:00
parent 1032a5a28c
commit bb861834fd
26 changed files with 1139 additions and 59 deletions

View File

@@ -7,6 +7,7 @@ using Ninject.Extensions.ChildKernel;
using VisionBuilder.UI.Common;
using VisionBuilder.UI.Common.Plugins;
using VisionBuilder.UI.Common.Processing;
using VisionBuilder.UI.Common.Services;
using VisionBuilder.UI.Common.ViewModel;
using VisionBuilder.UI.IOCommander;
using VisionBuilder.UI.Recipes.HawkeyeRecipe;
@@ -15,6 +16,7 @@ using VisionBuilder.UI.Statistics;
using VisionBuilder.UI.Avalonia;
using VisionBuilder.UI.Avalonia.Uno.Views;
using Lindt.Colorballs.Duo.Utils;
using VisionBuilder.UI.Camera;
namespace VisionBuilder.UI.Avalonia.Uno;
@@ -79,10 +81,12 @@ public class App : Application
];
var avaloniaUiSettings = mainKernel.Get<AvaloniaUISettings>();
var uiConfiguration = mainKernel.Get<UIConfiguration>();
var passwordInputService = mainKernel.Get<IPasswordInputService>();
settings.LoadSettings();
desktop.MainWindow = new MainWindow(mainWindowVm, avaloniaUiSettings);
desktop.MainWindow = new MainWindow(mainWindowVm, avaloniaUiSettings, uiConfiguration, passwordInputService);
}
base.OnFrameworkInitializationCompleted();

View File

@@ -1,5 +1,6 @@
using Avalonia;
using Avalonia.LinuxFramebuffer;
using Serilog;
namespace VisionBuilder.UI.Avalonia.Uno;
@@ -8,6 +9,11 @@ public class Program
[STAThread]
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.CreateLogger();
if (args.Contains("--drm"))
BuildAvaloniaApp().StartLinuxDrm(args, card: null, scaling: 1.0);
else

View File

@@ -20,6 +20,16 @@
HorizontalAlignment="Center"
VerticalAlignment="Center"
Spacing="8">
<Button x:Name="BtnSettings"
Content="SETTINGS"
Width="176" Height="48"
FontSize="14" FontWeight="Bold"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
BorderBrush="#D32F2F"
BorderThickness="2"
Background="White"
Foreground="#D32F2F" />
<Button x:Name="BtnMinimize"
Content="MINIMIZE"
Width="176" Height="48"

View File

@@ -8,6 +8,8 @@ using Avalonia.Interactivity;
using Avalonia.Media;
using Avalonia.Threading;
using VisionBuilder.UI.Avalonia;
using VisionBuilder.UI.Common;
using VisionBuilder.UI.Common.Services;
using VisionBuilder.UI.Common.ViewModel;
using VisionBuilder.UI.Common.ViewModel.Classes;
@@ -17,12 +19,17 @@ public partial class MainWindow : Window
{
private readonly MainWindowVM _mainWindowVm;
private readonly AvaloniaUISettings _avaloniaUiSettings;
private readonly UIConfiguration _uiConfiguration;
private readonly IPasswordInputService _passwordInputService;
private readonly Dictionary<string, Control> _dynamicButtonControls = new();
public MainWindow(MainWindowVM mainWindowVm, AvaloniaUISettings avaloniaUiSettings)
public MainWindow(MainWindowVM mainWindowVm, AvaloniaUISettings avaloniaUiSettings,
UIConfiguration uiConfiguration, IPasswordInputService passwordInputService)
{
_mainWindowVm = mainWindowVm;
_avaloniaUiSettings = avaloniaUiSettings;
_uiConfiguration = uiConfiguration;
_passwordInputService = passwordInputService;
InitializeComponent();
@@ -30,6 +37,7 @@ public partial class MainWindow : Window
SingleCameraView.SetViewModel(_mainWindowVm.SingleCameraVms[0]);
BtnSettings.Click += BtnSettings_Click;
BtnMinimize.Click += BtnMinimize_Click;
BtnExit.Click += BtnExit_Click;
@@ -80,6 +88,17 @@ public partial class MainWindow : Window
}
}
private async void BtnSettings_Click(object? sender, RoutedEventArgs e)
{
if (_uiConfiguration.ProtectSettingsWithPassword)
{
var passwordOk = await _passwordInputService.GetPasswordAsync() == _uiConfiguration.AdminPassword;
if (!passwordOk)
return;
}
_mainWindowVm.SettingsCommand.Execute(null);
}
private void BtnMinimize_Click(object? sender, RoutedEventArgs e)
{
WindowState = WindowState.Minimized;

View File

@@ -21,6 +21,7 @@
<PackageReference Include="Microsoft.ML.OnnxRuntime.Gpu.Windows" Version="1.18.0" ExcludeAssets="all" />
<PackageReference Include="Microsoft.ML.OnnxRuntime.Gpu.Linux" Version="1.18.0" ExcludeAssets="all" />
<PackageReference Include="Microsoft.ML.OnnxRuntime" Version="1.18.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
</ItemGroup>
<ItemGroup>