2026-01-26 18:56:53 +09:00

155 lines
6.1 KiB
C#

/*
* 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 {
/// <summary>
/// Interaction logic for MultiLineSettingView.xaml
/// </summary>
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<MultiLineParamSettingView> _MultiLineParamSettingViews = new List<MultiLineParamSettingView>();
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
}
}
}