2026-01-26 14:51:28 +09:00

157 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 MultiOcrSettingView.xaml
/// </summary>
public partial class MultiOcrSettingView : UserControl, IDisposable {
private Logger _Logger = new Logger(typeof(MultiOcrSettingView).Name);
private PatternAgentBase _patternAgent;
private PatternInfo _patternInfo;
private CameraDisplay _cameraDisplay;
private FovInfo _fovInfo;
public MultiOcrSettingView(
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<MultiOcrParamSettingView> _MultiOcrParamSettingViews = new List<MultiOcrParamSettingView>();
private void CreateView() {
gridMultiOcrParamSettingViews.Children.Clear();
_MultiOcrParamSettingViews.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($"OCR{roiIdx}");
subPatternInfo.PatternType = ePatternType.Ocr;
}
var multiOcrParamSettingView = new MultiOcrParamSettingView(_patternAgent, subPatternInfo, _cameraDisplay, _fovInfo);
multiOcrParamSettingView.DataContext = new MultiOcrParamSettingViewModel(_patternAgent, subPatternInfo, _cameraDisplay, _fovInfo, (eRoiIdx)roiIdx);
_MultiOcrParamSettingViews.Add(multiOcrParamSettingView);
sp.Children.Add(multiOcrParamSettingView);
}
gridMultiOcrParamSettingViews.Children.Add(sp);
}
private void CheckBox_Checked(object sender, System.Windows.RoutedEventArgs e) {
foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) {
if (multiOcrParamSettingView.IsChecked() == false) {
(multiOcrParamSettingView.DataContext as MultiOcrParamSettingViewModel).SetEnabled(true);
}
}
}
private void CheckBox_Unchecked(object sender, System.Windows.RoutedEventArgs e) {
foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) {
if (multiOcrParamSettingView.IsChecked() == true) {
(multiOcrParamSettingView.DataContext as MultiOcrParamSettingViewModel).SetEnabled(false);
}
}
}
private void Button_Click_Reload(object sender, System.Windows.RoutedEventArgs e) {
ClearGraphics();
foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) {
(multiOcrParamSettingView.DataContext as MultiOcrParamSettingViewModel).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;
}
}
_cameraDisplay.ClearMeasureGraphics();
foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) {
(multiOcrParamSettingView.DataContext as MultiOcrParamSettingViewModel).Find();
}
}
private void Button_Click_Save(object sender, System.Windows.RoutedEventArgs e) {
foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) {
(multiOcrParamSettingView.DataContext as MultiOcrParamSettingViewModel).Save();
}
(DataContext as MultiOcrSettingViewModel).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 multiOcrParamSettingView in _MultiOcrParamSettingViews) {
multiOcrParamSettingView.Dispose();
}
gridMultiOcrParamSettingViews.Children.Clear();
#endif
}
}
}