| | |
| | | using Bro.Common.Factory; |
| | | using Autofac; |
| | | using Bro.Common.Factory; |
| | | using Bro.Common.Interface; |
| | | using Bro.Common.Model; |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections; |
| | |
| | | // set => hash = value; |
| | | //} |
| | | |
| | | public abstract Hashtable GetConvertHash(); |
| | | public abstract Hashtable GetConvertHash(ITypeDescriptorContext context); |
| | | |
| | | public override bool GetStandardValuesSupported(ITypeDescriptorContext context) |
| | | { |
| | |
| | | |
| | | public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) |
| | | { |
| | | Hash = GetConvertHash(); |
| | | Hash = GetConvertHash(context); |
| | | |
| | | string[] ids = new string[Hash.Values.Count]; |
| | | int i = 0; |
| | |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | //foreach (DictionaryEntry myDE in Hash) |
| | | //{ |
| | | // if (myDE.Key.Equals(v)) |
| | | // return myDE.Value; |
| | | //} |
| | | return null; |
| | | } |
| | | } |
| | | catch (Exception) |
| | |
| | | { |
| | | return (value as IComplexDisplay).GetDisplayText(); |
| | | } |
| | | else |
| | | else if (value is IEnumerable enumList) |
| | | { |
| | | string display = ""; |
| | | bool iComplexDisplayMatch = false; |
| | | var enumrator = enumList.GetEnumerator(); |
| | | while (enumrator.MoveNext()) |
| | | { |
| | | if (enumrator.Current is IComplexDisplay d) |
| | | { |
| | | iComplexDisplayMatch = true; |
| | | display += $"{d.GetDisplayText()} "; |
| | | } |
| | | } |
| | | |
| | | if (iComplexDisplayMatch) |
| | | { |
| | | return display.Trim(); |
| | | } |
| | | } |
| | | |
| | | { |
| | | return JsonConvert.SerializeObject(value); |
| | | } |
| | |
| | | public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | public class EnumDescriptionConverter<T> : TypeConverter where T : Enum |
| | | { |
| | | Dictionary<T, string> itemDict = new Dictionary<T, string>(); |
| | | public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) |
| | | { |
| | | typeof(T).GetEnumNames().ToList().ForEach(e => |
| | | { |
| | | T temp = (T)Enum.Parse(typeof(T), e); |
| | | itemDict[temp] = temp.GetEnumDescription(); |
| | | }); |
| | | |
| | | return new StandardValuesCollection(itemDict.Keys); |
| | | } |
| | | public override bool GetStandardValuesSupported(ITypeDescriptorContext context) |
| | | { |
| | | return true; |
| | | } |
| | | |
| | | public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) |
| | | { |
| | | return true; |
| | | } |
| | | |
| | | public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) |
| | | { |
| | | if (sourceType == typeof(String)) |
| | | return true; |
| | | |
| | | return base.CanConvertFrom(context, sourceType); |
| | | } |
| | | |
| | | public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) |
| | | { |
| | | return base.CanConvertTo(context, destinationType); |
| | | } |
| | | |
| | | public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues) |
| | | { |
| | | return base.CreateInstance(context, propertyValues); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="context"></param> |
| | | /// <param name="culture"></param> |
| | | /// <param name="value">string</param> |
| | | /// <returns></returns> |
| | | public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) |
| | | { |
| | | try |
| | | { |
| | | foreach (string e in typeof(T).GetEnumNames().ToList()) |
| | | { |
| | | T temp = (T)Enum.Parse(typeof(T), e); |
| | | |
| | | if (temp.GetEnumDescription() == value.ToString()) |
| | | return temp; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | } |
| | | |
| | | return base.ConvertFrom(context, culture, value); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="context"></param> |
| | | /// <param name="culture"></param> |
| | | /// <param name="value">IOItem</param> |
| | | /// <param name="destinationType"></param> |
| | | /// <returns></returns> |
| | | public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) |
| | | { |
| | | if (value is T temp) |
| | | { |
| | | //foreach (KeyValuePair<T, string> pair in itemDict) |
| | | //{ |
| | | // if (Convert.ToInt32(pair.Key) == Convert.ToInt32(temp)) |
| | | // { |
| | | // return pair.Value; |
| | | // } |
| | | //} |
| | | |
| | | return temp.GetEnumDescription(); |
| | | } |
| | | |
| | | return base.ConvertTo(context, culture, value, destinationType); |
| | | } |
| | | } |
| | | #endregion |
| | |
| | | } |
| | | |
| | | form.ShowDialog(); |
| | | List<string> returnStrs = tbox.Text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList(); |
| | | List<string> returnStrs = tbox.Text.Split(new char[] { '\r', '\n', ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); |
| | | |
| | | switch (typeof(T).Name) |
| | | { |
| | |
| | | return form; |
| | | } |
| | | |
| | | //protected override object CreateInstance(Type itemType) |
| | | //{ |
| | | // return base.CreateInstance(itemType); |
| | | //} |
| | | protected override object CreateInstance(Type itemType) |
| | | { |
| | | return base.CreateInstance(itemType); |
| | | } |
| | | |
| | | //protected override object[] GetItems(object editValue) |
| | | //{ |
| | |
| | | } |
| | | } |
| | | |
| | | public class DeviceTypeConverter : StringConverter |
| | | public class DeviceTypeConverter : StringConverter |
| | | { |
| | | public override bool GetStandardValuesSupported(ITypeDescriptorContext context) |
| | | { |
| | |
| | | return new StandardValuesCollection(devices); |
| | | } |
| | | } |
| | | |
| | | |
| | | public class DeviceInitialConfigEditor<T> : UITypeEditor where T : class, IInitialConfig |
| | | { |
| | | public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context) |