125 lines
4.1 KiB
C#
125 lines
4.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
using VisionCommon;
|
|
using VisionUI;
|
|
using VisionUI.Camera;
|
|
using VisionUI.Pattern;
|
|
|
|
namespace WeldingCommon.Views.Manual
|
|
{
|
|
/// <summary>
|
|
/// UCManualModelFinder.xaml에 대한 상호 작용 논리
|
|
/// </summary>
|
|
public partial class UCManualModelFinder : UserControl
|
|
{
|
|
private UCManualModelFinderViewModel _ViewModel;
|
|
private FovInfo _FovInfo;
|
|
private UserControl _cameraView;
|
|
|
|
public UCManualModelFinder(UCManualModelFinderViewModel viewModel)
|
|
{
|
|
InitializeComponent();
|
|
|
|
_ViewModel = viewModel;
|
|
DataContext = _ViewModel;
|
|
|
|
_FovInfo = VisionRecipeManager.GetFovInfos().FirstOrDefault();
|
|
//CreateScannerCameraView();
|
|
}
|
|
|
|
|
|
private void CreateScannerCameraView()
|
|
{
|
|
if (gridScannerCameraView.Children.Count == 0) {
|
|
var fovInfo = VisionRecipeManager.GetFovInfos().FirstOrDefault();
|
|
if (fovInfo != null) {
|
|
_cameraView = IpViewManager.CreateCameraView(fovInfo, eDisplayType.Pattern);
|
|
gridScannerCameraView.Children.Add(_cameraView);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void uc_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
bool isVisible = (bool)e.NewValue;
|
|
if (isVisible == true) {
|
|
// 끝날 때, Dispose 시키면 아예 지워짐. 처음 시작할 때, 비우고 다시 시작하는 것이 임시방편으로 좋을 듯 함.
|
|
Dispose();
|
|
RefreshVisionRecipes();
|
|
CreateCameraView();
|
|
CreatePatternListView();
|
|
} else {
|
|
CameraUcManager.Instance.StopLiveAll();
|
|
}
|
|
}
|
|
|
|
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
|
|
{
|
|
var viewModel = DataContext as UCManualModelFinderViewModel;
|
|
|
|
FileSystemItem _selectItem = (FileSystemItem)viewModel.SelectedItem;
|
|
if (_selectItem != null) _selectItem.IsSelected = false;
|
|
|
|
// Update selection state
|
|
if (e.NewValue is FileSystemItem selectedItem) {
|
|
selectedItem.IsSelected = true;
|
|
viewModel.SelectedItem = selectedItem;
|
|
}
|
|
if (e.OldValue is FileSystemItem oldItem) {
|
|
oldItem.IsSelected = false;
|
|
}
|
|
}
|
|
|
|
private void RefreshVisionRecipes()
|
|
{
|
|
_FovInfo = VisionRecipeManager.GetFovInfo(_FovInfo);
|
|
}
|
|
|
|
private void CreateCameraView()
|
|
{
|
|
_cameraView = IpViewManager.CreateCameraView(_FovInfo, eDisplayType.Pattern);
|
|
gridScannerCameraView.Children.Add(_cameraView);
|
|
}
|
|
private void CreatePatternListView()
|
|
{
|
|
var patterrnListView = new PatternListView(_FovInfo);
|
|
var patternSettingViewModel = IpViewManager.CreateFovPatternListViewModel(_FovInfo, _cameraView);
|
|
|
|
patterrnListView.DataContext = patternSettingViewModel;
|
|
gridPatternListView.Children.Add(patterrnListView);
|
|
}
|
|
|
|
private void Dispose()
|
|
{
|
|
foreach (var child in gridScannerCameraView.Children)
|
|
{
|
|
if (child is UserControl view)
|
|
{
|
|
IpViewManager.DisposeCameraView(view);
|
|
}
|
|
}
|
|
gridScannerCameraView.Children.Clear();
|
|
|
|
foreach (var child in gridPatternListView.Children) {
|
|
if (child is PatternListView patternListView) {
|
|
patternListView = null;
|
|
}
|
|
}
|
|
gridPatternListView.Children.Clear();
|
|
}
|
|
}
|
|
}
|
|
|