2026-06-05 13:44:39 +09:00

109 lines
4.0 KiB
C#

using VisionCommon;
using System.Windows;
using System.Windows.Controls;
using MilCommon;
namespace MilUI {
/// <summary>
/// Interaction logic for EdgeSettingWindow.xaml
/// </summary>
public partial class EdgeSettingWindow : Window, IPatternSettingWindow {
public string WINDOW_TITLE => "Edge Finder";
private PatternAgentBase _patternAgent;
private PatternInfo _patternInfo;
private CameraDisplay _milCameraDisplay;
private FovInfo _fovInfo;
public EdgeSettingWindow(
PatternAgentBase patternAgent, PatternInfo patternInfo,
CameraDisplay milCameraDisplay,
FovInfo fovInfo) {
InitializeComponent();
_patternAgent = patternAgent;
_patternInfo = patternInfo;
_milCameraDisplay = milCameraDisplay;
_fovInfo = fovInfo;
SetTitle();
CreateView();
}
private void CreateView() {
if (PatternConstants.IsSubPatternSupport(ePatternType.EdgeFinder)) {
CreateSubPatternView();
}
else {
CreateSinglePatternView();
}
}
private void CreateSinglePatternView() {
var grid = new Grid();
var edgeSettingView = new EdgeSettingView() {
DataContext = new EdgeSettingViewModel(_patternAgent, _patternInfo, _milCameraDisplay, _fovInfo)
};
grid.Children.Add(edgeSettingView);
edgeSettingScrollViewer.Content = grid;
}
private void CreateSubPatternView() {
var subPatternTabControl = new TabControl();
subPatternTabControl.Style = FindResource("styleSubPatternTabControl") as Style;
AddMainPatternTabControl(subPatternTabControl);
AddSubPatternTabControl(subPatternTabControl);
edgeSettingScrollViewer.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 edgeSettingView = new EdgeSettingView() {
DataContext = new EdgeSettingViewModel(patternAgent, patternInfo, milCameraDisplay, fovInfo)
};
var subPatternTabItem = new TabItem() {
Header = patternInfo.GetPatternSubId().ToString(),
Content = edgeSettingView
};
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.2);
}
}
}