From 34ee2c9c1e7287ca1002ede66a70bdbf9268cd27 Mon Sep 17 00:00:00 2001
From: wells.liu <wells.liu@broconcentric.com>
Date: 星期四, 02 七月 2020 18:22:46 +0800
Subject: [PATCH] 合并
---
src/Bro.Common.Model/Helper/PropertyConvertHelper.cs | 83 --------------------
src/Bro.Common.Device/DeviceBase/MotionCardBase.cs | 111 +++++++++++++++++++++++++++
src/Bro.Common.Model/Model/IOItem.cs | 20 +++++
src/Bro.Common.Model/Forms/FrmDeviceOpConfigEditor.cs | 7 +
src/Bro.UI.Config/MenuForms/FrmOperation.resx | 4
src/Bro.Process/ProcessControl.cs | 4
6 files changed, 143 insertions(+), 86 deletions(-)
diff --git a/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs b/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs
index 1b11a50..271562e 100644
--- a/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs
+++ b/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs
@@ -1,14 +1,17 @@
-锘縰sing Bro.Common.Helper;
+锘縰sing Autofac;
+using Bro.Common.Helper;
using Bro.Common.Interface;
using Bro.Common.Model;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
+using System.ComponentModel.Design;
using System.Drawing.Design;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Windows.Forms;
namespace Bro.Common.Base
{
@@ -157,4 +160,110 @@
}
}
+ public class IORefrenceItemCollectionEditor : CollectionEditor
+ {
+ protected override CollectionForm CreateCollectionForm()
+ {
+ var form = base.CreateCollectionForm();
+
+ var prop = form.GetType().GetField("propertyBrowser", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
+
+ if (prop != null)
+ {
+ if (prop.GetValue(form) is PropertyGrid grid)
+ {
+ grid.HelpVisible = true;
+ grid.ToolbarVisible = false;
+ }
+ }
+
+ return form;
+ }
+
+ //protected override object CreateInstance(Type itemType)
+ //{
+ // return base.CreateInstance(itemType);
+ //}
+
+ //protected override object[] GetItems(object editValue)
+ //{
+ // return base.GetItems(editValue);
+ //}
+
+ //protected override object SetItems(object editValue, object[] value)
+ //{
+ // return base.SetItems(editValue, value);
+ //}
+
+ public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
+ {
+ if (context.Instance is IOperationConfig opConfig)
+ {
+ if (string.IsNullOrWhiteSpace(opConfig.DeviceId))
+ {
+ return base.EditValue(context, provider, value);
+ }
+
+ using (var scope = GlobalVar.Container.BeginLifetimeScope())
+ {
+ List<IDevice> deviceList = scope.Resolve<List<IDevice>>();
+
+ var device = deviceList.FirstOrDefault(u => u.Id == opConfig.DeviceId);
+
+ if (device == null)
+ {
+ return base.EditValue(context, provider, value);
+ }
+
+ if (device is MotionCardBase motionCard)
+ {
+ if (value is IORefrenceItem item)
+ {
+ item.IOItemSource = (motionCard.InitialConfig as MotionCardInitialConfigBase).IODefinitionCollection;
+ }
+ }
+ }
+ }
+
+ return base.EditValue(context, provider, value);
+ }
+
+ public IORefrenceItemCollectionEditor(Type type) : base(type)
+ {
+ }
+
+ /// <summary>
+ /// 闄愬埗涓�娆¢�変竴涓疄渚�
+ /// </summary>
+ /// <returns></returns>
+ protected override bool CanSelectMultipleInstances()
+ {
+ return false;
+ }
+
+ /// <summary>
+ /// 鎸囧畾鍒涘缓鐨勫璞$被鍨�
+ /// </summary>
+ /// <returns></returns>
+ protected override Type CreateCollectionItemType()
+ {
+ return typeof(IORefrenceItem);
+ }
+
+ protected override string GetDisplayText(object value)
+ {
+ if (value is IComplexDisplay)
+ {
+ return (value as IComplexDisplay).GetDisplayText();
+ }
+
+ return base.GetDisplayText(value);
+ }
+
+ //protected override void DestroyInstance(object instance)
+ //{
+ // base.DestroyInstance(instance);//閲嶈锛佽嚜鍔ㄥ垹闄ょ粍浠剁殑璁捐鏃朵唬鐮侊紒
+ //}
+ }
+
}
diff --git a/src/Bro.Common.Model/Forms/FrmDeviceOpConfigEditor.cs b/src/Bro.Common.Model/Forms/FrmDeviceOpConfigEditor.cs
index 10d6598..26b8303 100644
--- a/src/Bro.Common.Model/Forms/FrmDeviceOpConfigEditor.cs
+++ b/src/Bro.Common.Model/Forms/FrmDeviceOpConfigEditor.cs
@@ -70,9 +70,12 @@
}
}
+ bind.OpConfig.DeviceId = bind.Device;
+
backOpConfig.DataFrom(bind.OpConfig);
propGrid.SelectedObject = bind.OpConfig;
+
}
private void CboDevice_SelectedIndexChanged(object sender, EventArgs e)
@@ -88,7 +91,9 @@
var attr = device.GetType().GetCustomAttribute<DeviceAttribute>();
if (attr != null)
{
- propGrid.SelectedObject = ConfigFactory.GetOperationConfig(attr.TypeCode);
+ var opConfig= ConfigFactory.GetOperationConfig(attr.TypeCode);
+ opConfig.DeviceId = device.Id;
+ propGrid.SelectedObject = opConfig;
}
}
}
diff --git a/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs b/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs
index 6dc252c..dd48235 100644
--- a/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs
+++ b/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs
@@ -1,4 +1,5 @@
-锘縰sing Bro.Common.Factory;
+锘縰sing Autofac;
+using Bro.Common.Factory;
using Bro.Common.Interface;
using Bro.Common.Model;
using Newtonsoft.Json;
@@ -915,85 +916,7 @@
return base.EditValue(context, provider, value);
}
- }
-
- public class IORefrenceItemCollectionEditor : CollectionEditor
- {
- protected override CollectionForm CreateCollectionForm()
- {
- var form = base.CreateCollectionForm();
-
- var prop = form.GetType().GetField("propertyBrowser", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
-
- if (prop != null)
- {
- if (prop.GetValue(form) is PropertyGrid grid)
- {
- grid.HelpVisible = true;
- grid.ToolbarVisible = false;
- }
- }
-
- return form;
- }
-
- //protected override object CreateInstance(Type itemType)
- //{
- // return base.CreateInstance(itemType);
- //}
-
- //protected override object[] GetItems(object editValue)
- //{
- // return base.GetItems(editValue);
- //}
-
- //protected override object SetItems(object editValue, object[] value)
- //{
- // return base.SetItems(editValue, value);
- //}
-
- public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
- {
- return base.EditValue(context, provider, value);
- }
-
- public IORefrenceItemCollectionEditor(Type type) : base(type)
- {
- }
-
- /// <summary>
- /// 闄愬埗涓�娆¢�変竴涓疄渚�
- /// </summary>
- /// <returns></returns>
- protected override bool CanSelectMultipleInstances()
- {
- return false;
- }
-
- /// <summary>
- /// 鎸囧畾鍒涘缓鐨勫璞$被鍨�
- /// </summary>
- /// <returns></returns>
- protected override Type CreateCollectionItemType()
- {
- return typeof(IORefrenceItem);
- }
-
- protected override string GetDisplayText(object value)
- {
- if (value is IComplexDisplay)
- {
- return (value as IComplexDisplay).GetDisplayText();
- }
-
- return base.GetDisplayText(value);
- }
-
- //protected override void DestroyInstance(object instance)
- //{
- // base.DestroyInstance(instance);//閲嶈锛佽嚜鍔ㄥ垹闄ょ粍浠剁殑璁捐鏃朵唬鐮侊紒
- //}
- }
+ }
#endregion
}
diff --git a/src/Bro.Common.Model/Model/IOItem.cs b/src/Bro.Common.Model/Model/IOItem.cs
index 11283eb..486d0ff 100644
--- a/src/Bro.Common.Model/Model/IOItem.cs
+++ b/src/Bro.Common.Model/Model/IOItem.cs
@@ -1,6 +1,7 @@
锘縰sing Bro.Common.Helper;
using Newtonsoft.Json;
using System;
+using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using static Bro.Common.Helper.EnumHelper;
@@ -60,6 +61,7 @@
{
[Category("IO鎿嶄綔閰嶇疆")]
[Description("闇�瑕佹搷浣滅殑IO")]
+ [TypeConverter(typeof(IORefrenceItemSourceConverter))]
public IOItem IOItem { get; set; } = new IOItem();
[Category("IO鎿嶄綔閰嶇疆")]
@@ -70,4 +72,22 @@
[JsonIgnore]
public List<IODefinition> IOItemSource { get; set; } = new List<IODefinition>();
}
+
+ public class IORefrenceItemSourceConverter : ComboBoxItemTypeConvert
+ {
+ public override Hashtable GetConvertHash(ITypeDescriptorContext context)
+ {
+ Hashtable table = new Hashtable();
+
+ if (context.Instance is IORefrenceItem item)
+ {
+ item.IOItemSource.ForEach(i =>
+ {
+ table[i.IODesc + i.IOType.GetEnumDescription() + i.IONum] = i as IOItem;
+ });
+ }
+
+ return table;
+ }
+ }
}
diff --git a/src/Bro.Process/ProcessControl.cs b/src/Bro.Process/ProcessControl.cs
index ece460d..29d3170 100644
--- a/src/Bro.Process/ProcessControl.cs
+++ b/src/Bro.Process/ProcessControl.cs
@@ -32,8 +32,8 @@
#region AutoFac娉ㄥ唽
GlobalVar.Builder.RegisterInstance(this).As<IProcess>().ExternallyOwned();
GlobalVar.Builder.RegisterInstance(IConfig).As<IProcessConfig>().ExternallyOwned();
- GlobalVar.Builder.RegisterInstance(DeviceCollection);
- GlobalVar.Builder.RegisterInstance(ProcessMethodCollection);
+ GlobalVar.Builder.RegisterInstance(DeviceCollection).ExternallyOwned();
+ GlobalVar.Builder.RegisterInstance(ProcessMethodCollection).ExternallyOwned();
//if (isBuild)
//{
diff --git a/src/Bro.UI.Config/MenuForms/FrmOperation.resx b/src/Bro.UI.Config/MenuForms/FrmOperation.resx
index b1a77b1..28530b7 100644
--- a/src/Bro.UI.Config/MenuForms/FrmOperation.resx
+++ b/src/Bro.UI.Config/MenuForms/FrmOperation.resx
@@ -125,7 +125,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADm
- CgAAAk1TRnQBSQFMAgEBAgEAAdABAAHQAQABGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ CgAAAk1TRnQBSQFMAgEBAgEAAdgBAAHYAQABGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABYAMAARgDAAEBAQABCAYAAQkYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -182,7 +182,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD4
- CAAAAk1TRnQBSQFMAwEBAAHQAQAB0AEAARgBAAEYAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
+ CAAAAk1TRnQBSQFMAwEBAAHYAQAB2AEAARgBAAEYAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
AWADAAEYAwABAQEAAQgGAAEJGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
--
Gitblit v1.8.0