90 lines
3.1 KiB
C#
90 lines
3.1 KiB
C#
using Aurora;
|
|
using Aurora.Api;
|
|
using VisionCommon;
|
|
using System;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Media;
|
|
using VisionCommonUI;
|
|
using VisionCommonUI.Resources;
|
|
using System.Collections.Generic;
|
|
|
|
namespace VisionUI.Pattern {
|
|
/// <summary>
|
|
/// 서브메뉴 : 캠 패턴 등록 뷰
|
|
/// SubMenuCamPatternRegistrationView.xaml behind code
|
|
/// </summary>
|
|
public partial class SubMenuCamPatternRegistrationView : UserControl {
|
|
private static readonly Logger _Logger = new Logger("SubMenuCamPatternRegistrationView");
|
|
private IDisposable _EventDisposable;
|
|
|
|
private bool _IsViewInitialized = false;
|
|
/// <summary>
|
|
/// 생성자
|
|
/// </summary>
|
|
public SubMenuCamPatternRegistrationView() {
|
|
InitializeComponent();
|
|
SetObservable();
|
|
}
|
|
|
|
private void SetObservable() {
|
|
if (_EventDisposable == null) {
|
|
var observable = VisionEventId.GetRecipeUpdateObservable();
|
|
_EventDisposable = observable.Subscribe(_ => ClearView());
|
|
}
|
|
}
|
|
|
|
private void ClearView() {
|
|
if (IsVisible) {
|
|
return;
|
|
}
|
|
|
|
Application.Current.Dispatcher.BeginInvoke(
|
|
new System.Action(() => {
|
|
camTabControl.Items.Clear();
|
|
_IsViewInitialized = false;
|
|
}));
|
|
}
|
|
|
|
private void InitializeView() {
|
|
var camIdFovInfoMap = new Dictionary<eCamId, FovInfo>();
|
|
foreach (FovInfo fovInfo in VisionRecipeManager.GetFovInfos()) {
|
|
var camRecipe = VisionRecipeManager.GetCamRecipe(fovInfo);
|
|
var camId = camRecipe.CamId;
|
|
if (!camIdFovInfoMap.ContainsKey(camId)) {
|
|
camIdFovInfoMap.Add(camId, fovInfo);
|
|
}
|
|
}
|
|
|
|
foreach (var keyValuePair in camIdFovInfoMap) {
|
|
var camTabItem = new TabItem() {
|
|
Header = keyValuePair.Key.ToString(),
|
|
Content = CreatePatternRegistrationView(keyValuePair.Value)
|
|
};
|
|
camTabItem.Style = FindResource("styleSubMenuRootTabItem") as Style;
|
|
camTabControl.Items.Add(camTabItem);
|
|
}
|
|
camTabControl.SelectedIndex = 0;
|
|
_IsViewInitialized = true;
|
|
}
|
|
|
|
private PatternRegistrationView CreatePatternRegistrationView(FovInfo fovInfo) {
|
|
var patternRegistrationView = new PatternRegistrationView(fovInfo);
|
|
var patternRegistrationViewModel = new PatternRegistrationViewModel(fovInfo);
|
|
|
|
patternRegistrationView.DataContext = patternRegistrationViewModel;
|
|
|
|
return patternRegistrationView;
|
|
}
|
|
|
|
private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) {
|
|
bool isVisible = (bool)e.NewValue;
|
|
if (isVisible == true) {
|
|
if (!_IsViewInitialized) {
|
|
InitializeView();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|