using System.Collections.ObjectModel;
using VisionBuilder.UI.Common;
using VisionBuilder.UI.Common.Commands;
using VisionBuilder.UI.Common.ViewModel;
using VisionBuilder.UI.Common.ViewModel.Classes;
using VisionBuilder.UI.Common.ViewModel.Interfaces.UI;
using VisionBuilder.UI.Windows.Settings;
using System.Threading;
using Hawkeye.VisionBuilder.UI.Sources.Emulation;
using Inspectron.Settings;
using Inspectron.Settings.Windows.Configuration;
using Lindt.Colorballs.Duo.Utils;
using Ninject;
using OpenCvSharp;
using VisionBuilder.UI.Common.RecipeProcessing;
using VisionBuilder.UI.Recipes.HawkeyeRecipe;
namespace VisionBuilder.UI.Windows.Test
{
internal static class Program
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
StandardKernel kernelCamera1 = new StandardKernel();
// SETTINGS //
InspectronSettings settings = new InspectronSettings("..\\Config\\AppSettings.xml");
kernelCamera1.Bind().ToConstant(settings);
kernelCamera1.Bind().ToConstant(new UIConfiguration());
kernelCamera1.Bind().ToConstant(new CameraSettings("Camera 1"));
kernelCamera1.Bind().ToConstant(new EmulationSettings("Camera 1"));
kernelCamera1.Bind().ToConstant(new HawkeyeRecognitionSettings("Camera 1"));
kernelCamera1.Bind().ToConstant(new VisionBuilderRingbufferSettings("Camera 1"));
kernelCamera1.RegisterSettings();
settings.LoadSettings();
// --- //
// SOURCES //
var cameraSettings = kernelCamera1.Get();
switch (cameraSettings.Camera1Source)
{
case CameraSettings.EImageSource.Emulation:
kernelCamera1.Bind().To().InSingletonScope();
break;
case CameraSettings.EImageSource.Hawkeye:
break;
case CameraSettings.EImageSource.IDS:
break;
case CameraSettings.EImageSource.Basler:
break;
default:
throw new ArgumentOutOfRangeException();
}
// --- //
// SERVICES //
kernelCamera1.Bind().To().InSingletonScope();
kernelCamera1.Bind().To().InSingletonScope();
kernelCamera1.Bind().ToSelf().InSingletonScope();
kernelCamera1.Bind().To().InSingletonScope();
kernelCamera1.Get(); // initialize the ringbuffer
var mainWindowVm = new MainWindowVM(kernelCamera1.Get())
{
SingleCameraVms = new ObservableCollection()
{
new SingleCameraVM(kernelCamera1.Get(),kernelCamera1.Get(),new RecipeSelectionDialogService(),kernelCamera1.Get(), new ImagePreviewService(), new NoLearning())
}
};
settings.LoadSettings();
Application.Run(new Form1(mainWindowVm));
}
}
}