164 lines
6.3 KiB
C#
164 lines
6.3 KiB
C#
/*
|
|
* Copyright (c) 2025 LG Electronics Inc.
|
|
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
|
|
*/
|
|
using Aurora.Api;
|
|
using VisionAligner;
|
|
using VisionCommon;
|
|
using System;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using VisionUI.Pattern;
|
|
using System.Windows.Media;
|
|
using VisionCommonUI;
|
|
using VisionCommonUI.Resources;
|
|
|
|
namespace VisionUI.Aligner {
|
|
/// <summary>
|
|
/// 얼라인 세팅 뷰
|
|
/// AlignSettingView.xaml BehindCode
|
|
/// </summary>
|
|
public partial class AlignSettingView : UserControl {
|
|
private Logger _Logger = new Logger("AlignSettingView");
|
|
|
|
private SubSysInfo _SubSysInfo;
|
|
private SubSysRecipe _SubSysRecipe;
|
|
/// <summary>
|
|
/// 생성자
|
|
/// </summary>
|
|
/// <param name="subSysInfo">서브시스템 정보</param>
|
|
public AlignSettingView(SubSysInfo subSysInfo) {
|
|
_SubSysInfo = subSysInfo;
|
|
_SubSysRecipe = VisionRecipeManager.GetSubSysRecipe(_SubSysInfo);
|
|
|
|
InitializeComponent();
|
|
CreateViews();
|
|
CreatePatternLogView();
|
|
CreateAlignLogView();
|
|
}
|
|
|
|
private void CreateViews() {
|
|
CreateAlignTabControl();
|
|
}
|
|
/// <summary>
|
|
/// 얼라인 탭 컨트롤 생성
|
|
/// </summary>
|
|
public void CreateAlignTabControl() {
|
|
var alignInfos = VisionRecipeManager.GetAlignInfos(_SubSysInfo.UnitId, _SubSysInfo.SubSysId);
|
|
foreach (AlignInfo alignInfo in alignInfos) {
|
|
var alignTabItem = new TabItem() {
|
|
Header = alignInfo.AlignName,
|
|
Content = CreateAlignRecipeSettingView(alignInfo)
|
|
};
|
|
alignTabItem.TabIndex = (int)alignInfo.AlignId;
|
|
alignTabItem.Style = FindResource("styleSubMenuRootTabItem") as Style;
|
|
alignTabControl.Items.Add(alignTabItem);
|
|
}
|
|
alignTabControl.SelectedIndex = 0;
|
|
alignTabControl.SelectionChanged += AlignTabControl_SelectionChanged;
|
|
|
|
if (alignInfos.Count == 0 || alignTabControl.Items.Count < alignInfos.Count) {
|
|
PrintRecipeError(typeof(AlignRecipe).Name, alignTabControl);
|
|
}
|
|
}
|
|
|
|
private void AlignTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) {
|
|
var tabControl = sender as TabControl;
|
|
(DataContext as AlignSettingViewModel).SetCurrentAlignInfo((eAlignId)tabControl.SelectedIndex);
|
|
|
|
// gridAlignLogView 여기서 지금 선택된 alignInfo에 해당하는 View만 보이게 만들기
|
|
SetAlignLogViewVisible(tabControl.SelectedIndex);
|
|
}
|
|
|
|
private AlignRecipeSettingView CreateAlignRecipeSettingView(AlignInfo alignInfo) {
|
|
try {
|
|
var alignRecipeSettingView = new AlignRecipeSettingView(alignInfo);
|
|
var alignRecipeSettingViewModel = new AlignRecipeSettingViewModel(alignInfo);
|
|
alignRecipeSettingView.DataContext = alignRecipeSettingViewModel;
|
|
|
|
return alignRecipeSettingView;
|
|
}
|
|
catch (Exception e) {
|
|
_Logger.FuncE(e.Message);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private void CreatePatternLogView() {
|
|
var patternLogView = new PatternLogView(_SubSysInfo);
|
|
var patternLogViewModel = new PatternLogViewModel(_SubSysInfo);
|
|
patternLogView.DataContext = patternLogViewModel;
|
|
gridPatternLogView.Children.Add(patternLogView);
|
|
}
|
|
|
|
private void CreateAlignLogView() {
|
|
if (gridAlignLogView.Children.Count == 0) {
|
|
foreach (AlignInfo alignInfo in VisionRecipeManager.GetAlignInfos(_SubSysInfo)) {
|
|
var alignLogView = new AlignLogView(alignInfo);
|
|
var alignLogViewModel = new AlignLogViewModel(alignInfo, alignLogView);
|
|
alignLogView.DataContext = alignLogViewModel;
|
|
gridAlignLogView.Children.Add(alignLogView);
|
|
}
|
|
SetAlignLogViewVisible(0);
|
|
}
|
|
}
|
|
|
|
private void SetAlignLogViewVisible(int index) {
|
|
if(gridAlignLogView != null) {
|
|
foreach (var view in gridAlignLogView.Children) {
|
|
if ((view as AlignLogView).GetAlignInfo().AlignId == (eAlignId)index) {
|
|
(view as AlignLogView).Visibility = Visibility.Visible;
|
|
}
|
|
else {
|
|
(view as AlignLogView).Visibility = Visibility.Collapsed;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void Button_Save_Click(object sender, RoutedEventArgs e) {
|
|
UpdateRecipeFromUI_AlignRecipe();
|
|
RecipeFileManager.SaveVisionRecipe();
|
|
|
|
UpdateAlignRecipe(); // 레시피 저장 후, 갱신
|
|
|
|
MessageBoxUtil.ShowMessageBoxOk(StrTokens.MSG_O_SaveCompleted);
|
|
}
|
|
|
|
private void UpdateAlignRecipe() {
|
|
AlignerFactory.Update(_SubSysInfo);
|
|
}
|
|
|
|
private void UpdateRecipeFromUI_AlignRecipe() {
|
|
foreach (var item in alignTabControl.Items) {
|
|
var tabItem = (TabItem)item;
|
|
var alignRecipeSettingView = tabItem.Content as AlignRecipeSettingView;
|
|
alignRecipeSettingView.UpdateRecipeFromUI();
|
|
}
|
|
}
|
|
|
|
private void PrintRecipeError(string recipeName, TabControl tabControl) {
|
|
var errMsg = string.Format(StrTokens.RecipeErrorMessage, recipeName);
|
|
var errTabItem = new TabItem() {
|
|
Header = "Undefined",
|
|
Content = new UCRecipeErrorTextBlock(errMsg) { Margin = new Thickness(15) }
|
|
};
|
|
errTabItem.Style = FindResource("styleSubMenuRootTabItem") as Style;
|
|
errTabItem.VerticalContentAlignment = VerticalAlignment.Center;
|
|
errTabItem.HorizontalContentAlignment = HorizontalAlignment.Center;
|
|
tabControl.Items.Add(errTabItem);
|
|
}
|
|
|
|
private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) {
|
|
bool isVisible = (bool)e.NewValue;
|
|
if (isVisible == true) {
|
|
UpdateVisionRecipes();
|
|
}
|
|
}
|
|
|
|
private void UpdateVisionRecipes() {
|
|
_SubSysRecipe = VisionRecipeManager.GetSubSysRecipe(_SubSysInfo);
|
|
}
|
|
}
|
|
} |