private static string GetSignals(Type componentType)
        {
            var memberNames = CoreReflector.GetFieldAndPropertyNames(componentType);
            //memberNames.Sort(MemberInfoSort);
            List<MemberInfo> infos = new List<MemberInfo>();
            foreach (var name in memberNames)
            {
                MemberWrapper mw = new MemberWrapper(componentType, name);
                if (mw.MemberType == typeof(Signal))
                    infos.Add(mw.MemberInfo);
            }

            infos.Sort(MemberInfoSort);

            StringBuilder sb = new StringBuilder();
            foreach (var memberInfo in infos)
            {
                sb.AppendLine(memberInfo.Name);
            }

            return string.Format(@"Signals ({0}):
{1}
{2}", infos.Count, Line, sb) + NewLine/* + NewLine*/;
        }
        /*private static int ClassNameSort(Type x, Type y)
        {
            return String.Compare(x.Name, y.Name, StringComparison.OrdinalIgnoreCase);
        }*/

        #endregion

        #region Skin parts
        
        /// <summary>
        /// Describes skin parts
        /// </summary>
        /// <param name="componentType"></param>
        /// <returns></returns>
        public static string GetSkinParts(Type componentType)
        {
            if (!typeof(SkinnableComponent).IsAssignableFrom(componentType))
            {
                return string.Format(@"Skin parts: Not a skinnable component." + NewLine + NewLine);
            }

            var dict = GuiReflector.GetSkinParts(componentType); // string->bool

            var list = new List<string>();
            foreach (string key in dict.Keys)
            {
                list.Add(key);
            }
            list.Sort();

            StringBuilder sb = new StringBuilder();
            foreach (var name in list)
            {
                MemberWrapper mw = new MemberWrapper(componentType, name);
                sb.AppendLine(string.Format("{0} [Type: {1}, Required: {2}]", name, mw.MemberType, dict[name]));
            }

            return string.Format(@"Skin parts ({0}):
{1}
{2}", list.Count, Line, sb) + NewLine/* + NewLine*/;
        }
        /// <summary>
        /// Describes mulricast delegates
        /// </summary>
        /// <param name="componentType"></param>
        /// <returns></returns>
        public static string GetMulticastDelegates(Type componentType)
        {
            var memberNames = CoreReflector.GetFieldAndPropertyNames(componentType);
            //memberNames.Sort(MemberInfoSort);
            List<string> data = new List<string>();
            foreach (var name in memberNames)
            {
                MemberWrapper mw = new MemberWrapper(componentType, name);
                if (mw.MemberType == typeof (Core.Events.MulticastDelegate))
                {
                    var output = mw.MemberInfo.Name;

                    /*var clazz = mw.MemberInfo.DeclaringType;
                    if (null != clazz)
                    {
                        var types = 


                        var instance = Activator.CreateInstance(clazz);
                        var value = mw.GetValue(instance);
                        if (null != value)
                            output = string.Format(@"{0} [{1}]", output, value.GetType().FullName);
                    }*/
                    
                    var attributes = CoreReflector.GetMemberAttributes<EventAttribute>(mw.MemberInfo);
                    if (attributes.Count > 0)
                    {
                        var eventAttribute = attributes[0];
                        output = string.Format(@"{0} → {1}", output, eventAttribute);
                    }

                    data.Add(output);
                }
            }

            data.Sort();

            StringBuilder sb = new StringBuilder();
            foreach (var item in data)
            {
                sb.AppendLine(item);
            }

            return string.Format(@"Multicast delegates ({0}):
{1}
{2}", data.Count, Line, sb) + NewLine/* + NewLine*/;
        }
Example #4
0
        /**
         *  
         */
        private List<object> CopySelectedItemsForDragDrop()
        {
            // Copy the vector so that we don't modify the original
             // since SelectedIndices returns a reference.
            var draggedIndices = new List<int>(SelectedIndices);
            var result = new List<Object>(draggedIndices.Count);

            // Sort in the order of the data source
            draggedIndices.Sort(CompareValues);
            
            // Copy the items
            var count = draggedIndices.Count;
            for (var i = 0; i < count; i++) {
                result[i] = DataProvider.GetItemAt(draggedIndices[i]);
            }
            return result;
        }