Files
HawkeyeVision/VisionBuilder.UI.Avalonia.Uno/Views/ImagePreviewDialog.axaml.cs
EugeneTes 4bd117af47 plugin system docs
custom buttons for plugins
calibration functions for Leeform
2026-03-30 16:15:47 +02:00

75 lines
2.6 KiB
C#

using System.ComponentModel;
using Avalonia.Controls;
using VisionBuilder.UI.Avalonia.Uno.Services;
using VisionBuilder.UI.Common.ViewModel;
namespace VisionBuilder.UI.Avalonia.Uno.Views;
public partial class ImagePreviewDialog : Window
{
private readonly ErrorPreviewVM _previewVm;
public ImagePreviewDialog(ErrorPreviewVM errorPreviewVm)
{
_previewVm = errorPreviewVm;
InitializeComponent();
_previewVm.PropertyChanged += PreviewVm_PropertyChanged;
// Initial state
UpdateImage();
BtnLearn.IsVisible = _previewVm.LearnButtonVisible;
BtnPrev.IsEnabled = _previewVm.IsPreviousImageEnabled;
BtnNext.IsEnabled = _previewVm.IsNextImageEnabled;
LblImageName.Text = _previewVm.ImageName;
// Wire button events (direct method calls like WinForms)
BtnPrev.Click += (_, _) => _previewVm.PreviousImage();
BtnNext.Click += (_, _) => _previewVm.NextImage();
BtnSwitchView.Click += (_, _) => _previewVm.SwitchView();
BtnLearn.Click += (_, _) => _previewVm.Learn();
BtnClose.Click += (_, _) => Close();
}
private void PreviewVm_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
global::Avalonia.Threading.Dispatcher.UIThread.Post(() =>
{
switch (e.PropertyName)
{
case nameof(ErrorPreviewVM.ImageAnalysis):
UpdateImage();
break;
case nameof(ErrorPreviewVM.LearnButtonVisible):
BtnLearn.IsVisible = _previewVm.LearnButtonVisible;
break;
case nameof(ErrorPreviewVM.IsPreviousImageEnabled):
BtnPrev.IsEnabled = _previewVm.IsPreviousImageEnabled;
break;
case nameof(ErrorPreviewVM.IsNextImageEnabled):
BtnNext.IsEnabled = _previewVm.IsNextImageEnabled;
break;
case nameof(ErrorPreviewVM.ImageName):
LblImageName.Text = _previewVm.ImageName;
break;
case nameof(ErrorPreviewVM.OriginalView):
BtnSwitchView.Content = _previewVm.OriginalView ? "SHOW ANALYSIS" : "SHOW ORIGINAL";
break;
}
});
}
private void UpdateImage()
{
if (_previewVm.ImageAnalysis != null && !_previewVm.ImageAnalysis.Empty())
{
PreviewImage.Source = ImageConverter.MatToAvaloniaBitmap(_previewVm.ImageAnalysis);
}
else
{
PreviewImage.Source = null;
}
}
}