Esempio n. 1
0
        private void ApplyDisplayPropertyToInstanceMember(InstanceMemberDisplayProperties displayProperties, InstanceMember member, MemberCategory category)
        {
            if (displayProperties.IsHiddenDelegate != null && mMembersWithOptionalVisibility.ContainsKey(member) == false)
            {
                mMembersWithOptionalVisibility.Add(member, displayProperties.IsHiddenDelegate);
            }

            //if (displayProperties.GetEffectiveIsHidden(member.Instance))
            // let's instead just use the hidden property - we will apply functions after
            if (displayProperties.IsHidden)
            {
                category.Members.Remove(member);
            }
            else
            {
                // Put an if-statement for debugging
                if (member.PreferredDisplayer != displayProperties.PreferredDisplayer)
                {
                    member.PreferredDisplayer = displayProperties.PreferredDisplayer;
                }
                member.DisplayName = displayProperties.DisplayName;
                if (!string.IsNullOrEmpty(displayProperties.Category) && category.Name != displayProperties.Category)
                {
                    category.Members.Remove(member);

                    MemberCategory newCategory = GetOrInstantiateAndAddMemberCategory(displayProperties.Category);
                    member.Category = newCategory;
                    newCategory.Members.Add(member);
                }
            }
        }
Esempio n. 2
0
        private static void CreateCategoriesAndVariables(NamedObjectSave instance, IElement container,
                                                         List <MemberCategory> categories, AssetTypeInfo ati)
        {
            // May 13, 2017
            // I'd like to get
            // completely rid of
            // TypedMembers and move
            // to using the custom variables.
            // We'll try this out:
            if (ati?.VariableDefinitions != null && ati.VariableDefinitions.Count > 0)
            {
                foreach (var variableDefinition in ati.VariableDefinitions)
                {
                    bool fallBackToTypedMember = false;
                    try
                    {
                        var             type        = FlatRedBall.Glue.Parsing.TypeManager.GetTypeFromString(variableDefinition.Type);
                        TypedMemberBase typedMember = null;

                        if (type == null)
                        {
                            fallBackToTypedMember = true;
                        }
                        else
                        {
                            typedMember = TypedMemberBase.GetTypedMember(variableDefinition.Name, type);

                            InstanceMember instanceMember = CreateInstanceMember(instance, container, typedMember, ati, variableDefinition);


                            if (instanceMember != null)
                            {
                                var categoryToAddTo = GetOrCreateCategoryToAddTo(categories, ati, typedMember);
                                categoryToAddTo.Members.Add(instanceMember);
                            }
                        }
                    }
                    catch
                    {
                        fallBackToTypedMember = true;
                    }

                    if (fallBackToTypedMember)
                    {
                        // this new code isn't working with some things like generics. Until I fix that, let's fall back:

                        var typedMember = instance.TypedMembers.FirstOrDefault(item => item.MemberName == variableDefinition.Name);

                        if (typedMember != null)
                        {
                            AddForTypedMember(instance, container, categories, ati, typedMember);
                        }
                    }
                }
            }

            else // This is used when viewing a  NOS that is of entity type (no ATI)
            {
                for (int i = 0; i < instance.TypedMembers.Count; i++)
                {
                    TypedMemberBase typedMember = instance.TypedMembers[i];
                    AddForTypedMember(instance, container, categories, ati, typedMember);
                }
            }
            bool shouldAddSourceNameVariable = instance.SourceType == SourceType.File &&
                                               !string.IsNullOrEmpty(instance.SourceFile);

            if (shouldAddSourceNameVariable)
            {
                AddSourceNameVariable(instance, categories);
            }
        }