bool canWrite(AApiVersionedFields owner, string field)
 {
     if (owner.GetType().Equals(typeof(AsKVP)))
     {
         return(true);
     }
     if (owner.GetType().Equals(typeof(ArrayOwner)))
     {
         return(true);
     }
     return(owner.GetType().GetProperty(field).CanWrite);
 }
        public static Type GetFieldType(AApiVersionedFields owner, string field)
        {
            try
            {
                Type type = AApiVersionedFields.GetContentFieldTypes(0, owner.GetType())[GetFieldName(field)];

                if (field.IndexOf(' ') == -1)
                {
                    return(type);
                }
                else
                {
                    if (type.HasElementType && !type.GetElementType().IsAbstract)
                    {
                        return(type.GetElementType());
                    }

                    Type baseType = GetGenericType(type);
                    if (baseType != null && !baseType.IsAbstract)
                    {
                        return(baseType);
                    }

                    return(GetFieldValue(owner, field).Type);
                }
            }
            catch (Exception ex) { throw ex; }
        }
        public void SetField(AApiVersionedFields owner, string field)
        {
            type = AApiVersionedFields.GetContentFieldTypes(0, owner.GetType())[field];
            if (!(typeof(TextReader).IsAssignableFrom(type) || typeof(BinaryReader).IsAssignableFrom(type)))
                throw new InvalidCastException();
            this.owner = owner;
            this.field = field;
            btnImport.Enabled = owner.GetType().GetProperty(field).CanWrite;
            btnExport.Enabled = owner.GetType().GetProperty(field).CanRead;

            //TextReader does not have BaseStream, which is needed for ViewHex
            btnViewHex.Enabled = typeof(BinaryReader).IsAssignableFrom(type);

            btnEdit.Enabled = false;
            if (btnExport.Enabled && btnImport.Enabled)
            {
                bool hasText = S4PIDemoFE.Properties.Settings.Default.TextEditorCmd != null && S4PIDemoFE.Properties.Settings.Default.TextEditorCmd.Length > 0;
                bool hasHex = S4PIDemoFE.Properties.Settings.Default.HexEditorCmd != null && S4PIDemoFE.Properties.Settings.Default.HexEditorCmd.Length > 0;

                btnEdit.Enabled = (typeof(TextReader).IsAssignableFrom(type) && hasText) || (typeof(BinaryReader).IsAssignableFrom(type) && hasHex);
            }
        }
Beispiel #4
0
                void setFlags(AApiVersionedFields owner, string field, ulong mask, bool value)
                {
                    ulong old = getFlags(owner, field);
                    ulong res = old & ~mask;

                    if (value)
                    {
                        res |= mask;
                    }
                    Type       t  = AApiVersionedFields.GetContentFieldTypes(0, owner.GetType())[field];
                    TypedValue tv = new TypedValue(t, Enum.ToObject(t, res));

                    owner[field] = tv;
                }
Beispiel #5
0
        public void SetField(AApiVersionedFields owner, string field)
        {
            type = AApiVersionedFields.GetContentFieldTypes(0, owner.GetType())[field];
            if (!(typeof(TextReader).IsAssignableFrom(type) || typeof(BinaryReader).IsAssignableFrom(type)))
            {
                throw new InvalidCastException();
            }
            this.owner        = owner;
            this.field        = field;
            btnImport.Enabled = owner.GetType().GetProperty(field).CanWrite;
            btnExport.Enabled = owner.GetType().GetProperty(field).CanRead;

            //TextReader does not have BaseStream, which is needed for ViewHex
            btnViewHex.Enabled = typeof(BinaryReader).IsAssignableFrom(type);

            btnEdit.Enabled = false;
            if (btnExport.Enabled && btnImport.Enabled)
            {
                bool hasText = S4PIDemoFE.Properties.Settings.Default.TextEditorCmd != null && S4PIDemoFE.Properties.Settings.Default.TextEditorCmd.Length > 0;
                bool hasHex  = S4PIDemoFE.Properties.Settings.Default.HexEditorCmd != null && S4PIDemoFE.Properties.Settings.Default.HexEditorCmd.Length > 0;

                btnEdit.Enabled = (typeof(TextReader).IsAssignableFrom(type) && hasText) || (typeof(BinaryReader).IsAssignableFrom(type) && hasHex);
            }
        }
 public TypedValuePropertyDescriptor(AApiVersionedFields owner, string field, Attribute[] attrs)
     : base(field, attrs)
 {
     try
     {
         this.owner = owner;
         if (typeof(ArrayOwner).Equals(owner.GetType()))
         {
             fieldType = ((ArrayOwner)owner).ElementType;
         }
         else if (typeof(AsKVP).Equals(owner.GetType()))
         {
             fieldType = ((AsKVP)owner).GetType(Name);
         }
         else
         {
             string name = GetFieldName(field);
             fieldType = GetFieldType(owner, field);
             priority  = ElementPriorityAttribute.GetPriority(owner.GetType(), name);
             tgiBlocks = owner.GetTGIBlocks(name);
         }
     }
     catch (Exception ex) { throw ex; }
 }