ShellView.xaml.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. using Prism.Regions;
  2. using System.Collections.Generic;
  3. using System.Windows;
  4. using Venus_Themes.CustomControls;
  5. using Venus_UI.Themes.Attach;
  6. using Venus_Unity;
  7. using System.Linq;
  8. using System.Threading;
  9. using System;
  10. using Venus_MainPages.Views;
  11. using System.Windows.Controls;
  12. using Aitex.Core.UI.View.Frame;
  13. using System.Windows.Media;
  14. using Venus_Core;
  15. using System.Reflection;
  16. using Venus_MainPages.Unity;
  17. using MECF.Framework.Common.DataCenter;
  18. using Aitex.Core.RT.SCCore;
  19. namespace Venus_UI.Views
  20. {
  21. /// <summary>
  22. /// ShellView.xaml 的交互逻辑
  23. /// </summary>
  24. public partial class ShellView : Window
  25. {
  26. IRegionManager m_regionManager;
  27. IRegionNavigationService m_regionNavigationService;
  28. List<VenusMenu> VenusMenu;
  29. List<TabControl> centerTabViews=new List<TabControl> ();
  30. List<Button> buttonList=new List<Button> ();
  31. public ShellView(IRegionManager regionManager, IRegionNavigationService regionNavigationService)
  32. {
  33. InitializeComponent();
  34. m_regionManager = regionManager;
  35. m_regionNavigationService = regionNavigationService;
  36. m_regionManager.RegisterViewWithRegion("TopRegion", typeof(Venus_MainPages.Views.TopView));
  37. VenusGlobalEvents.SlotRightClickChangedEvent += Instance_SlotRightClickChangedEvent;
  38. }
  39. private void Instance_SlotRightClickChangedEvent(OpenSEMI.Ctrlib.Controls.Slot slot)
  40. {
  41. if (slot != null)
  42. {
  43. ContextMenu cm = ContextMenuManager.Instance.GetSlotMenus(slot);
  44. if (cm != null)
  45. {
  46. slot.ContextMenu = cm;
  47. }
  48. return;
  49. }
  50. }
  51. private void CustomWnd_Loaded(object sender, RoutedEventArgs e)
  52. {
  53. VenusMenu = SerializeHelper.Instance.ReadFromJsonFile<List<VenusMenu>>($"Config/VenusMenu.json");
  54. int index = 0;
  55. for (int i = 0; i < VenusMenu.Count; i++)
  56. {
  57. if (VenusMenu[i].IsShow == false)
  58. {
  59. continue;
  60. }
  61. string[] allModules = QueryDataClient.Instance.Service.GetConfig($"System.InstalledModules").ToString().Split(',');
  62. if (VenusMenu[i].Id == "PMA" || VenusMenu[i].Id == "PMB" || VenusMenu[i].Id == "PMC" || VenusMenu[i].Id == "PMD")
  63. {
  64. if (!allModules.Contains(VenusMenu[i].Id))
  65. {
  66. continue;
  67. }
  68. }
  69. AduRadioButtonIcon aduRadioButtonIcon = new AduRadioButtonIcon();
  70. if (i == 0)
  71. {
  72. aduRadioButtonIcon.IsChecked = true;
  73. }
  74. IconElement.SetPathData(aduRadioButtonIcon,(Geometry)aduRadioButtonIcon.FindResource($"Icon_{VenusMenu[i].Id}"));
  75. aduRadioButtonIcon.Content = VenusMenu[i].Id;
  76. aduRadioButtonIcon.Click += AduRadioButtonIcon_Click;
  77. aduRadioButtonIcon.SelectBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6AD7FF"));
  78. aduRadioButtonIcon.SelectColor = new SolidColorBrush((Colors.Black));
  79. //aduRadioButtonIcon.DefaultBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6AD7FF"));
  80. aduRadioButtonIcon.DefaultBackground = new SolidColorBrush(Colors.DarkGray);
  81. aduRadioButtonIcon.Width = 180;
  82. aduRadioButtonIcon.Height= 40;
  83. //aduRadioButtonIcon.Foreground=Brushes.White;
  84. aduRadioButtonIcon.Tag = index;
  85. index += 1;
  86. Bottom_Frame.Children.Add(aduRadioButtonIcon);
  87. TabControl tabControl = new TabControl();
  88. for (int j = 0; j < VenusMenu[i].MenuItem.Count; j++)
  89. {
  90. if (VenusMenu[i].MenuItem[j].IsShow == false)
  91. {
  92. continue;
  93. }
  94. string className;
  95. if ((VenusMenu[i].Id == "PMA" || VenusMenu[i].Id == "PMB" || VenusMenu[i].Id == "PMC" || VenusMenu[i].Id == "PMD")&& VenusMenu[i].MenuItem[j].Id== "Operation")
  96. {
  97. JetChamber jetChamber = (JetChamber)(Convert.ToInt32(QueryDataClient.Instance.Service.GetConfig($"{VenusMenu[i].Id}.ChamberType")));
  98. className = $"Venus_MainPages.Views.Over{jetChamber.ToString()}View";
  99. }
  100. else
  101. {
  102. className = $"Venus_MainPages.Views.{VenusMenu[i].MenuItem[j].View}";
  103. }
  104. Type t = Type.GetType($"{className},Venus_MainPages");
  105. var obj = System.Activator.CreateInstance(t);
  106. if (VenusMenu[i].Id=="PMA" || VenusMenu[i].Id == "PMB" || VenusMenu[i].Id == "PMC" || VenusMenu[i].Id == "PMD" || VenusMenu[i].Id == "TM")
  107. {
  108. MethodInfo methodInfo = t.GetMethod("Init", new Type[] { typeof(string) });
  109. methodInfo?.Invoke(obj, new object[] { VenusMenu[i].Id });
  110. }
  111. tabControl.Items.Add(new TabItem() { Header = VenusMenu[i].MenuItem[j].Name, Content = obj });
  112. }
  113. centerTabViews.Add(tabControl);
  114. }
  115. Main_Frame.Content = centerTabViews[0];
  116. }
  117. private void AduRadioButtonIcon_Click(object sender, RoutedEventArgs e)
  118. {
  119. var currentButton = sender as AduRadioButtonIcon;
  120. Main_Frame.Content = centerTabViews[Convert.ToInt32(currentButton.Tag)];
  121. }
  122. private void CustomWnd_Closed(object sender, EventArgs e)
  123. {
  124. System.Diagnostics.Process.GetCurrentProcess().Kill();
  125. }
  126. }
  127. }