public void SetNode(DataNode node, DataNode selected, Color color, bool readOnly) { _node = node as EnumDataValue; _readOnly = readOnly; if (_isLoaded) { SetupFrame(); } }
private static DataNode GetNode(string name, object o, Dictionary <Type, Guid> derivedTypes, bool readOnly) { DataNode ret = null; if (o != null) { Type t = o.GetType(); if (o is DataNode) { ret = ((DataNode)o).CloneNode(); } else if (t.IsEnum) { ret = new EnumDataValue(name, (Enum)o); } else if (t.IsPrimitive) { ret = GetPrimitiveType(name, t, o); } else if (o is IPrimitiveValue) { object v = ((IPrimitiveValue)o).Value; ret = GetPrimitiveType(name, v.GetType(), v); } else if (t == typeof(DateTime)) { // Use a unix datetime, doesn't _really_ matter ret = new UnixDateTimeDataValue(name, false, (DateTime)o); } else if (t == typeof(string)) { ret = new StringDataValue(name, (string)o); } else if (t == typeof(BigInteger)) { ret = new BigIntegerDataValue(name, (BigInteger)o); } else if (t.IsArray) { if (t.GetElementType() == typeof(byte)) { byte[] newArr = (byte[])((byte[])o).Clone(); ret = new ByteArrayDataValue(name, (byte[])o); } else if (t.GetElementType() == typeof(char)) { ret = new StringDataValue(name, new string((char[])o)); } else { DataKey key = new DataKey(name); GetArrayType(key, t, o, derivedTypes, readOnly); ret = key; } } else if (t == typeof(IPAddress)) { ret = new IPAddressDataValue(name, (IPAddress)o); } else { INodeConverter converter = o as INodeConverter; if (converter != null) { ret = converter.ToNode(name); } else { DataKey key = new DataKey(name); GetComplexType(key, t, o, derivedTypes); ret = key; } } if (ret != null) { ret.Readonly = readOnly; } } return(ret); }