62 lines
1.8 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|