From 1f645778ae80a3a8801b8bb4d0fcf8feb244ad43 Mon Sep 17 00:00:00 2001
From: chr <chr@mailcom>
Date: 星期三, 09 十月 2024 11:51:23 +0800
Subject: [PATCH] 完善项目,新增插件启用检测;

---
 PdmSwPlugin.Main/SwAddIn/MainControl.cs |   49 ++++++++++++++++++++++++++++++++++---------------
 1 files changed, 34 insertions(+), 15 deletions(-)

diff --git a/PdmSwPlugin.Main/SwAddIn/MainControl.cs b/PdmSwPlugin.Main/SwAddIn/MainControl.cs
index 6f60026..36758e6 100644
--- a/PdmSwPlugin.Main/SwAddIn/MainControl.cs
+++ b/PdmSwPlugin.Main/SwAddIn/MainControl.cs
@@ -51,7 +51,7 @@
 
         private HttpClientCreator clientCreator { get; set; }
 
-        private TabControl tabControl;
+        private MainTab mainTab;
 
         public MainControl(SldWorks swAddin)
         {
@@ -59,6 +59,7 @@
             GlobalConfig = PluginSetting.Instance;
             InitializeComponent();
             self.DataContext = this;
+            InitTcpServer();
         }
 
         // 鏈湴璋冭瘯鐢紝杩炴帴SolidWorks
@@ -72,7 +73,7 @@
 
         private void AddPlugin()
         {
-            tabControl.Items.Clear();
+            mainTab.tabControl.Items.Clear();
             SetPluginWithPermission();
             //LoadPlugins();
             //TestWeb testWeb = new TestWeb();
@@ -90,7 +91,7 @@
             {
                 // 鐗╂枡浼橀��
                 MaterialSelectControl ms = new MaterialSelectControl(SwApp);
-                HandlePlugin(ms, tabControl);
+                HandlePlugin(ms, mainTab.tabControl);
             }
             if (permissions.Contains("PDM:PLUGIN:CONTROL:PropertySetting"))
             {
@@ -98,31 +99,32 @@
                 if (CustomerSetting.Instance["customer"] == "YWT")
                 {
                     CommonSettingControl cs = new CommonSettingControl(SwApp);
-                    HandlePlugin(cs, tabControl);
+                    HandlePlugin(cs, mainTab.tabControl);
+                    cs.InitPropertyData();
                 }
                 else
                 {
                     PropertySettingControl ps = new PropertySettingControl(SwApp);
-                    HandlePlugin(ps, tabControl);
+                    HandlePlugin(ps, mainTab.tabControl);
                 }
             }
             if (permissions.Contains("PDM:PLUGIN:CONTROL:PDM"))
             {
                 // PDM
                 PdmControl pdm = new PdmControl(SwApp);
-                HandlePlugin(pdm, tabControl);
+                HandlePlugin(pdm, mainTab.tabControl);
             }
             if (permissions.Contains("PDM:PLUGIN:CONTROL:PriceCheck"))
             {
                 // 鍔犲伐浠舵牳浠�
                 PriceCheckControl priceCheck = new PriceCheckControl(SwApp);
-                HandlePlugin(priceCheck, tabControl);
+                HandlePlugin(priceCheck, mainTab.tabControl);
             }
             if (permissions.Contains("PDM:PLUGIN:CONTROL:DrawApprove"))
             {
                 // 鍥剧焊瀹℃牳
                 DrawApproveControl drawApprove = new DrawApproveControl(SwApp);
-                HandlePlugin(drawApprove, tabControl);
+                HandlePlugin(drawApprove, mainTab.tabControl);
                 /*UserSettingControl userSettingControl = new UserSettingControl();
                 HandlePlugin(userSettingControl, tabControl);*/
             }
@@ -130,7 +132,7 @@
             {
                 // 鍥剧焊瀹℃牳
                 DrawAuditHisControl drawAuditHisControl = new DrawAuditHisControl(SwApp);
-                HandlePlugin(drawAuditHisControl, tabControl);
+                HandlePlugin(drawAuditHisControl, mainTab.tabControl);
                 /*UserSettingControl userSettingControl = new UserSettingControl();
                 HandlePlugin(userSettingControl, tabControl);*/
             }
@@ -140,19 +142,19 @@
         {
             // 鐗╂枡浼橀��
             MaterialSelectControl ms = new MaterialSelectControl(SwApp);
-            HandlePlugin(ms, tabControl);
+            HandlePlugin(ms, mainTab.tabControl);
             // 灞炴�ц缃�
             PropertySettingControl ps = new PropertySettingControl(SwApp);
-            HandlePlugin(ps, tabControl);
+            HandlePlugin(ps, mainTab.tabControl);
             // PDM
             PdmControl pdm = new PdmControl(SwApp);
-            HandlePlugin(pdm, tabControl);
+            HandlePlugin(pdm, mainTab.tabControl);
             // 鍔犲伐浠舵牳浠�
             PriceCheckControl priceCheck = new PriceCheckControl(SwApp);
-            HandlePlugin(priceCheck, tabControl);
+            HandlePlugin(priceCheck, mainTab.tabControl);
             // 鍥剧焊瀹℃牳
             DrawApproveControl drawApprove = new DrawApproveControl(SwApp);
-            HandlePlugin(drawApprove, tabControl);
+            HandlePlugin(drawApprove, mainTab.tabControl);
         }
 
         private void LoadPlugins()
@@ -176,7 +178,7 @@
                     // p.GetInstance(type.FullName);
                     // 澶勭悊鎻掍欢
                     HandlePlugin(attr, obj);
-                    tabControl.Items.Add(new TabItem
+                    mainTab.tabControl.Items.Add(new TabItem
                     {
                         Header = attr.Title,
                         Content = obj
@@ -281,6 +283,23 @@
             AfterDocDestroy?.Invoke();
         }
 
+        public void DeActiveHandler()
+        {
+            foreach (TabItem item in mainTab.tabControl.Items)
+            {
+                // 鍚戜富Control娉ㄥ唽浜嬩欢
+                if (item.Content is IActiveDocChangeHandler handler)
+                {
+                    ActiveDocChangeEvent -= handler.OnSwActiveDocChange;
+                    ActiveDocSavedEvent -= handler.OnSwActiveDocSaved;
+                    ActiveDocCustomPropertyChange -= handler.OnCustomPropertyChange;
+                    DocDestroy -= handler.OnDocDestroy;
+                    AfterDocDestroy -= handler.AfterDocDestroy;
+                }
+            }
+            PluginInfos.Clear();
+        }
+
         /// <summary>
         /// 杩炴帴鍒癝olidWorks涔嬪悗锛屾縺娲讳腑鐨勬枃妗h嚜瀹氫箟灞炴�у彉鏇寸殑鎿嶄綔
         /// </summary>

--
Gitblit v1.9.1