using Aurora.View;
using System.Windows.Input;
using VisionCommon;
using VisionCommonUI.Resources;
namespace VisionUI.Inspector {
///
/// 어태치 검사 레시피 세팅 뷰 모델
///
public class AttachInspRecipeSettingViewModel : NotifyPropertyChangedBase, IUpdateRecipe {
private SubSysInfo _SubSysInfo;
private SubSysRecipe _SubSysRecipe;
#region Binding Properties
private AttachInspRecipe _AttachInspRecipe;
/// 어태치 검사 레시피
public AttachInspRecipe AttachInspRecipe {
get => _AttachInspRecipe; set { SetProperty(ref _AttachInspRecipe, value); }
}
#endregion
///
/// 생성자
///
/// 서브시스템 정보
public AttachInspRecipeSettingViewModel(SubSysInfo subSysInfo) {
_SubSysInfo = subSysInfo;
_SubSysRecipe = VisionRecipeManager.GetSubSysRecipe(subSysInfo);
AttachInspRecipe = VisionRecipeManager.GetAttachInspRecipe(_SubSysInfo);
}
public void RefreshVisionRecipes() {
AttachInspRecipe = VisionRecipeManager.GetAttachInspRecipe(_SubSysInfo);
_SubSysRecipe = VisionRecipeManager.GetSubSysRecipe(_SubSysInfo);
}
public void UpdateRecipeFromFile() {
var attachInspRecipe = VisionRecipeManager.GetAttachInspRecipe(_SubSysInfo);
AttachInspRecipe = attachInspRecipe.Clone();
}
public void UpdateRecipeFromUI() {
var attachInspRecipe = VisionRecipeManager.GetAttachInspRecipe(_SubSysInfo);
var clonedAttachInspRecipe = AttachInspRecipe.Clone();
// IList 파라미터 사용시, CoordUnitAttachInspParamsConverter에서 ConvertBack이 동작하지 않으므로, 여기서 처리
if (VisionSettingManager.VisionSetting.CoordUnit == eCoordUnit.UM) {
foreach (var attachInspParam in clonedAttachInspRecipe.AttachInspParams) {
attachInspParam.SpecW = MathUtil.ConvertUnitMicroToMilli(attachInspParam.SpecW);
attachInspParam.ErrRangeW = MathUtil.ConvertUnitMicroToMilli(attachInspParam.ErrRangeW);
attachInspParam.SpecH = MathUtil.ConvertUnitMicroToMilli(attachInspParam.SpecH);
attachInspParam.ErrRangeH = MathUtil.ConvertUnitMicroToMilli(attachInspParam.ErrRangeH);
}
clonedAttachInspRecipe.CopyTo(attachInspRecipe);
}
else {
AttachInspRecipe.CopyTo(attachInspRecipe);
}
}
}
}