Exemple #1
0
        //!!!!new. тут?
        public static string GetUserFriendlyCategory(Metadata.Member member)
        {
            var ar = member.GetCustomAttributes(typeof(CategoryAttribute), true);

            if (ar.Length != 0)
            {
                return(((CategoryAttribute)ar[0]).Category);
            }

            {
                //if( property.Creator == null )
                //	throw new ArgumentException( "property.Creator == null" );

                var category = member.Owner.ToString();

                //!!!!
                {
                    int index = category.LastIndexOf('_');
                    if (index != -1)
                    {
                        category = category.Substring(index + 1);
                    }
                }

                //!!!!
                {
                    //string[] prefixes = new string[ 2 ];
                    //prefixes[ 0 ] = "NeoAxis.";
                    //prefixes[ 1 ] = "UI";

                    foreach (var prefix in prefixesToRemove)
                    //foreach( var prefix in prefixes )
                    {
                        if (category.Length > prefix.Length && category.Substring(0, prefix.Length) == prefix)
                        {
                            category = category.Substring(prefix.Length);
                        }
                    }
                }
                ////!!!!почему только этот префикс
                //{
                //	string prefix = "NeoAxis.";
                //	if( category.Length > prefix.Length && category.Substring( 0, prefix.Length ) == prefix )
                //		category = category.Substring( prefix.Length );
                //}

                category = DisplayNameAddSpaces(category);

                return(category);
            }
        }
        public virtual Type GetSuitableItemType(Metadata.Member member)
        {
            Type itemType = null;

            //override item type
            GetSuitableItemTypeOverride?.Invoke(this, member, ref itemType);

            if (itemType == null)
            {
                var editorAttr = (EditorAttribute)member.GetCustomAttributes(typeof(EditorAttribute), true).FirstOrDefault();
                if (editorAttr != null)
                {
                    var editorType = EditorUtility.GetTypeByName(editorAttr.EditorTypeName);
                    if (typeof(HCItemProperty).IsAssignableFrom(editorType))
                    {
                        return(editorType);
                    }
                }

                var property = member as Metadata.Property;
                if (property != null)
                {
                    //var attribs = property.GetCustomAttributes( typeof( SelectBaseAttribute ), true );
                    //if( attribs.Length != 0 )
                    //{
                    //	//get item type by SelectBaseAttribute
                    //	var attrib = (SelectBaseAttribute)attribs[ 0 ];
                    //	itemType = attrib.GetHierarchicalContainerItemType();
                    //}
                    //else
                    //{
                    //get item type by property type
                    var originalType = property.Type.GetNetType();
                    var unrefType    = ReferenceUtility.GetUnreferencedType(originalType);
                    itemType = GetSuitableItemTypeByPropertyType(unrefType);
                    //}
                }

                var _event = member as Metadata.Event;
                if (_event != null)
                {
                    return(EditorAssemblyInterface.Instance.GetTypeByName("NeoAxis.Editor.HCItemEvent"));                     // typeof( HCItemEvent );
                }
            }

            return(itemType);
        }