using VisionCommon; using System.Windows; using System.Windows.Controls; namespace MilUI { /// /// Interaction logic for OcrSettingWindow.xaml /// public partial class OcrSettingWindow : Window, IPatternSettingWindow { public string WINDOW_TITLE => "OCR Setting"; private PatternAgentBase _patternAgent; private PatternInfo _patternInfo; private CameraDisplay _milCameraDisplay; private FovInfo _fovInfo; public OcrSettingWindow( PatternAgentBase patternAgent, PatternInfo patternInfo, ICameraDisplay cameraDisplay, FovInfo fovInfo, bool isSubPatternSupport = true) { InitializeComponent(); _patternAgent = patternAgent; _patternInfo = patternInfo; _milCameraDisplay = (CameraDisplay)cameraDisplay; _fovInfo = fovInfo; SetTitle(); CreateView(isSubPatternSupport); } private void CreateView(bool isSubPatternSupport) { if (isSubPatternSupport) { CreateSubPatternView(); } else { CreateSinglePatternView(); } } private void CreateSinglePatternView() { var grid = new Grid(); var strSettingView = new OcrSettingView() { DataContext = new OcrSettingViewModel(_patternAgent, _patternInfo, _milCameraDisplay, _fovInfo) }; grid.Children.Add(strSettingView); ocrSettingScrollViewer.Content = grid; } private void CreateSubPatternView() { var subPatternTabControl = new TabControl(); subPatternTabControl.Style = FindResource("styleSubPatternTabControl") as Style; AddMainPatternTabControl(subPatternTabControl); AddSubPatternTabControl(subPatternTabControl); ocrSettingScrollViewer.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 strSettingView = new OcrSettingView() { DataContext = new OcrSettingViewModel(patternAgent, patternInfo, milCameraDisplay, fovInfo) }; var subPatternTabItem = new TabItem() { Header = patternInfo.GetPatternSubId().ToString(), Content = strSettingView }; 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.1); } } }