/* * Copyright (c) 2025 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ using Aurora.Api; using System; using System.Collections.Generic; using System.Windows.Controls; using VisionCommon; using VisionCommonUI; using VisionCommonUI.Resources; #if USE_COGNEX using CogUI; #else using MilUI; #endif namespace VisionUI { /// /// Interaction logic for MultiLineSettingView.xaml /// public partial class MultiLineSettingView : UserControl, IDisposable { private Logger _Logger = new Logger(typeof(MultiLineSettingView).Name); private PatternAgentBase _patternAgent; private PatternInfo _patternInfo; private CameraDisplay _cameraDisplay; private FovInfo _fovInfo; public MultiLineSettingView( PatternAgentBase patternAgent, PatternInfo patternInfo, ICameraDisplay cameraDisplay, FovInfo fovInfo) { _patternAgent = patternAgent; _patternInfo = patternInfo; _cameraDisplay = (CameraDisplay)cameraDisplay; _fovInfo = fovInfo; InitializeComponent(); #if !USE_COGNEX CreateView(); #endif } #if !USE_COGNEX private List _MultiLineParamSettingViews = new List(); private void CreateView() { gridMultiLineParamSettingViews.Children.Clear(); _MultiLineParamSettingViews.Clear(); var sp = new StackPanel() { Orientation = Orientation.Vertical, Margin = new System.Windows.Thickness(5) }; // 인덱스 0 : 멀티 패턴 Master, 인덱스 1~8 : 멀티 패턴 Slave for (int roiIdx = 1; roiIdx <= (int)eRoiIdx.Roi8; roiIdx++) { PatternInfo subPatternInfo; var subPatternIndex = PatternAgentBase.GetSubPatternIndex(_patternInfo, roiIdx); if (_patternAgent.IsPatternExist(subPatternIndex)) { subPatternInfo = _patternAgent.GetPatternInfo(subPatternIndex); } else { subPatternInfo = _patternInfo.Clone() as PatternInfo; subPatternInfo.SetPatternSubId(roiIdx); subPatternInfo.Description = string.Format($"Line{roiIdx}"); subPatternInfo.PatternType = ePatternType.LineFinder; } var multiLineParamSettingView = new MultiLineParamSettingView(_patternAgent, subPatternInfo, _cameraDisplay, _fovInfo); multiLineParamSettingView.DataContext = new MultiLineParamSettingViewModel(_patternAgent, subPatternInfo, _cameraDisplay, _fovInfo, (eRoiIdx)roiIdx); _MultiLineParamSettingViews.Add(multiLineParamSettingView); sp.Children.Add(multiLineParamSettingView); } gridMultiLineParamSettingViews.Children.Add(sp); } private void CheckBox_Checked(object sender, System.Windows.RoutedEventArgs e) { foreach (var multiLineParamSettingView in _MultiLineParamSettingViews) { if (multiLineParamSettingView.IsChecked() == false) { (multiLineParamSettingView.DataContext as MultiLineParamSettingViewModel).SetEnabled(true); } } } private void CheckBox_Unchecked(object sender, System.Windows.RoutedEventArgs e) { foreach (var multiLineParamSettingView in _MultiLineParamSettingViews) { if (multiLineParamSettingView.IsChecked() == true) { (multiLineParamSettingView.DataContext as MultiLineParamSettingViewModel).SetEnabled(false); } } } private void Button_Click_Reload(object sender, System.Windows.RoutedEventArgs e) { ClearGraphics(); foreach (var multiLineParamSettingView in _MultiLineParamSettingViews) { (multiLineParamSettingView.DataContext as MultiLineParamSettingViewModel).Clear(); } } private void Button_Click_Find(object sender, System.Windows.RoutedEventArgs e) { if (!_patternInfo.IsActivated) { MessageBoxUtil.ShowMessageBoxError(StrTokens.MSG_E_PatternNotActivated); return; } if (_cameraDisplay != null) { var image = _cameraDisplay.GetImage(); if (image == null) { MessageBoxUtil.ShowMessageBoxError(StrTokens.MSG_E_ImageNotReady); return; } } foreach (var multiLineParamSettingView in _MultiLineParamSettingViews) { (multiLineParamSettingView.DataContext as MultiLineParamSettingViewModel).Find(); } } private void Button_Click_Save(object sender, System.Windows.RoutedEventArgs e) { foreach (var multiLineParamSettingView in _MultiLineParamSettingViews) { (multiLineParamSettingView.DataContext as MultiLineParamSettingViewModel).Save(); } (DataContext as MultiLineSettingViewModel).Save(); MessageBoxUtil.ShowMessageBoxOk(StrTokens.MSG_O_SaveCompleted); } private void ClearGraphics() { _cameraDisplay.ClearFindGraphics(); _cameraDisplay.ClearMeasureGraphics(); } #else private void Button_Click_Find(object sender, System.Windows.RoutedEventArgs e) { } private void Button_Click_Save(object sender, System.Windows.RoutedEventArgs e) { } private void Button_Click_Reload(object sender, System.Windows.RoutedEventArgs e) { } private void CheckBox_Unchecked(object sender, System.Windows.RoutedEventArgs e) { } private void CheckBox_Checked(object sender, System.Windows.RoutedEventArgs e) { } #endif public void Dispose() { #if !USE_COGNEX foreach (var multiLineParamSettingView in _MultiLineParamSettingViews) { multiLineParamSettingView.Dispose(); } gridMultiLineParamSettingViews.Children.Clear(); #endif } } }