2026-03-30 17:09:29 +09:00

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();
}
}
}