Files
HawkeyeVision/Plugins/LindtLeerformPlugin/LeerformModule.cs
EugeneTes 4bd117af47 plugin system docs
custom buttons for plugins
calibration functions for Leeform
2026-03-30 16:15:47 +02:00

62 lines
1.8 KiB
C#

using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using LindtLeerformPlugin.ViewModels;
using LindtLeerformPlugin.Views;
using Serilog;
using VisionBuilder.UI.Common;
using VisionBuilder.UI.Common.Processing;
using VisionBuilder.UI.Common.ViewModel.Classes;
namespace LindtLeerformPlugin;
public class LeerformModule : IVisionBuilderModule
{
private readonly SingleCameraVM _singleCameraVm;
private readonly LeerformSettings _settings;
private readonly IImageSource _imageSource;
public LeerformModule(SingleCameraVM singleCameraVm, LeerformSettings settings, IImageSource imageSource)
{
_singleCameraVm = singleCameraVm;
_settings = settings;
_imageSource = imageSource;
}
public void InitializeModule()
{
var calibrateButton = new ButtonDefinition("leerform_calibrate", "Calibrate", OnCalibrateClicked);
_singleCameraVm.AddButton(calibrateButton);
}
private void OnCalibrateClicked()
{
_ = ShowCalibrationWindowAsync();
}
private async Task ShowCalibrationWindowAsync()
{
try
{
if (Application.Current?.ApplicationLifetime is not IClassicDesktopStyleApplicationLifetime desktop)
{
Log.Warning("Avalonia desktop lifetime not available, cannot show calibration window.");
return;
}
var parent = desktop.MainWindow;
var vm = new CalibrationWindowViewModel(_imageSource, _settings);
var window = new CalibrationWindow { DataContext = vm };
if (parent != null)
await window.ShowDialog(parent);
else
window.Show();
}
catch (Exception ex)
{
Log.Error(ex, "Error showing calibration window");
}
}
}