/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using Aurora.Api;
using VisionCommon;
namespace VisionUI.Aligner {
class AlignRecipeSettingViewModel : Aurora.View.NotifyPropertyChangedBase, IUpdateRecipe {
private Logger _Logger;
private SubSysInfo _SubSysInfo;
private AlignInfo _AlignInfo;
private AlignRecipe _AlignRecipe;
#region Binding Properties
private AlignLimit _AlignLimit;
/// 얼라인 리밋
public AlignLimit AlignLimit { get => _AlignLimit; set => SetProperty(ref _AlignLimit, value); }
private AlignOffset _AlignOffset;
/// 얼라인 오프셋
public AlignOffset AlignOffset { get => _AlignOffset; set => SetProperty(ref _AlignOffset, value); }
private AlignRetry _AlignRetry;
/// 얼라인 재시도
public AlignRetry AlignRetry { get => _AlignRetry; set => SetProperty(ref _AlignRetry, value); }
private AlignTgtDist _AlignTgtDist;
/// 얼라인 타겟 Distance
public AlignTgtDist AlignTgtDist { get => _AlignTgtDist; set => SetProperty(ref _AlignTgtDist, value); }
private ProcParams _ProcParams;
/// 얼라인 프록 파라미터
public ProcParams ProcParams { get => _ProcParams; set => SetProperty(ref _ProcParams, value); }
private InspParams _InspParams;
/// 인스펙션 파라미터
public InspParams InspParams { get => _InspParams; set => SetProperty(ref _InspParams, value); }
#endregion
///
/// 생성자
///
/// 얼라인 정보
public AlignRecipeSettingViewModel(AlignInfo alignInfo) {
_Logger = new Logger($"AlignRecipeSettingViewModel[{alignInfo.AlignName}]");
_SubSysInfo = alignInfo.ToSubSysInfo();
_AlignInfo = alignInfo;
_AlignRecipe = VisionRecipeManager.GetAlignRecipe(_AlignInfo);
UpdateRecipeFromFile();
}
public void RefreshVisionRecipes() {
_AlignRecipe = VisionRecipeManager.GetAlignRecipe(_AlignInfo);
}
public void UpdateRecipeFromFile() {
AlignRecipe alignRecipe = VisionRecipeManager.GetAlignRecipe(_AlignInfo).Clone();
AlignRetry = alignRecipe.AlignRetry;
AlignOffset = alignRecipe.AlignOffset;
AlignLimit = alignRecipe.AlignLimit;
AlignTgtDist = alignRecipe.AlignTgtDist;
ProcParams = alignRecipe.ProcParams;
InspParams = alignRecipe.InspParams;
}
public void UpdateRecipeFromUI() {
AlignRecipe alignRecipe = VisionRecipeManager.GetAlignRecipe(_AlignInfo);
alignRecipe.AlignRetry = AlignRetry;
alignRecipe.AlignOffset = AlignOffset;
alignRecipe.AlignLimit = AlignLimit;
alignRecipe.AlignTgtDist = AlignTgtDist;
alignRecipe.ProcParams = ProcParams;
alignRecipe.InspParams = InspParams;
}
}
}