2026-01-26 18:56:53 +09:00

113 lines
4.2 KiB
C#

/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using VisionCommon;
using System;
using System.Windows;
using System.Windows.Controls;
namespace MilUI {
/// <summary>
/// Interaction logic for ShapeModelSettingWindow.xaml
/// </summary>
public partial class ShapeModelSettingWindow : Window, IPatternSettingWindow {
public string WINDOW_TITLE => "Shape Model Finder";
private PatternAgentBase _patternAgent;
private PatternInfo _patternInfo;
private CameraDisplay _milCameraDisplay;
private FovInfo _fovInfo;
public ShapeModelSettingWindow(
PatternAgentBase patternAgent, PatternInfo patternInfo,
ICameraDisplay cameraDisplay,
FovInfo fovInfo) {
InitializeComponent();
_patternAgent = patternAgent;
_patternInfo = patternInfo;
_milCameraDisplay = (CameraDisplay)cameraDisplay;
_fovInfo = fovInfo;
SetTitle();
CreateView();
}
private void CreateView() {
if (PatternConstants.IsSubPatternSupport(ePatternType.ShapeModelFinder)) {
CreateSubPatternView();
}
else {
CreateSinglePatternView();
}
}
private void CreateSinglePatternView() {
var grid = new Grid();
var shapeModelSettingView = new ShapeModelSettingView() {
DataContext = new ShapeModelSettingViewModel(_patternAgent, _patternInfo, _milCameraDisplay, _fovInfo)
};
grid.Children.Add(shapeModelSettingView);
shapeModelSettingScrollViewer.Content = grid;
}
private void CreateSubPatternView() {
var subPatternTabControl = new TabControl();
subPatternTabControl.Style = FindResource("styleSubPatternTabControl") as Style;
AddMainPatternTabControl(subPatternTabControl);
AddSubPatternTabControl(subPatternTabControl);
shapeModelSettingScrollViewer.Content = subPatternTabControl;
}
private void AddMainPatternTabControl(TabControl subPatternTabControl) {
AddPatternTabControl(subPatternTabControl, _patternAgent, _patternInfo, _milCameraDisplay, _fovInfo);
}
private void AddSubPatternTabControl(TabControl subPatternTabControl) {
for (int i = PatternConstants.MAIN_PATTERN_INDEX + 1; i < PatternConstants.SUB_PATTERN_COUNT; i++) {
PatternInfo subPatternInfo;
var subPatternIndex = PatternAgentBase.GetSubPatternIndex(_patternInfo, i);
if (_patternAgent.IsPatternExist(subPatternIndex)) {
subPatternInfo = _patternAgent.GetPatternInfo(subPatternIndex);
}
else {
subPatternInfo = _patternInfo.Clone() as PatternInfo;
subPatternInfo.SetPatternSubId(i);
subPatternInfo.Description += string.Format($"_{i}");
}
AddPatternTabControl(subPatternTabControl, _patternAgent, subPatternInfo, _milCameraDisplay, _fovInfo);
}
}
private void AddPatternTabControl(
TabControl subPatternTabControl,
PatternAgentBase patternAgent, PatternInfo patternInfo,
CameraDisplay milCameraDisplay,
FovInfo fovInfo) {
var shapeModelSettingView = new ShapeModelSettingView() {
DataContext = new ShapeModelSettingViewModel(patternAgent, patternInfo, milCameraDisplay, fovInfo)
};
var subPatternTabItem = new TabItem() {
Header = patternInfo.GetPatternSubId().ToString(),
Content = shapeModelSettingView
};
subPatternTabItem.Style = FindResource("styleSubMenuRootTabItem") as Style;
subPatternTabControl.Items.Add(subPatternTabItem);
}
public void SetTitle() {
Title = WINDOW_TITLE;
}
public void ResetPosition() {
Left = WindowUtil.GetLeftWithRatioOnMainWindow(0.6);
Top = WindowUtil.GetTopWithRatioOnMainWindow(0.10);
}
}
}