using VisionCommon; using System.Windows; using MilCommon; using System.Windows.Controls; namespace MilUI { /// /// Interaction logic for LineSettingWindow.xaml /// public partial class LineSettingWindow : Window, IPatternSettingWindow { public string WINDOW_TITLE => "Line Finder"; private PatternAgentBase _patternAgent; private PatternInfo _patternInfo; private CameraDisplay _milCameraDisplay; private FovInfo _fovInfo; public LineSettingWindow( 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.LineFinder)) { CreateSubPatternView(); } else { CreateSinglePatternView(); } } private void CreateSinglePatternView() { var grid = new Grid(); var lineSettingView = new LineSettingView() { DataContext = new LineSettingViewModel(_patternAgent, _patternInfo, _milCameraDisplay, _fovInfo) }; grid.Children.Add(lineSettingView); lineSettingScrollViewer.Content = grid; } private void CreateSubPatternView() { var subPatternTabControl = new TabControl(); subPatternTabControl.Style = FindResource("styleSubPatternTabControl") as Style; AddMainPatternTabControl(subPatternTabControl); AddSubPatternTabControl(subPatternTabControl); lineSettingScrollViewer.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 lineSettingView = new LineSettingView() { DataContext = new LineSettingViewModel(patternAgent, patternInfo, milCameraDisplay, fovInfo) }; var subPatternTabItem = new TabItem() { Header = patternInfo.GetPatternSubId().ToString(), Content = lineSettingView }; 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); } } }