private void AddInfoRecursive(GuiWidget widgetToAddInfoAbout, FlowLayoutWidget layoutToAddInfoTo, int level = 0) { FlowLayoutWidget indented = new FlowLayoutWidget(); indented.AddChild(new LineWidget(15, 5)); FlowLayoutWidget widgetInfo = new FlowLayoutWidget(FlowDirection.TopToBottom); string info = widgetToAddInfoAbout.GetType().ToString(); if (widgetToAddInfoAbout.Name != null && widgetToAddInfoAbout.Name != "") { info += " " + widgetToAddInfoAbout.Name; } else if (widgetToAddInfoAbout.Text != null && widgetToAddInfoAbout.Text != "") { info += " " + widgetToAddInfoAbout.Text; } widgetInfo.AddChild(new TextWidget(info)); TextWidget sizeAndPositon = new TextWidget(string.Format(" Size {0}, Position {1}", widgetToAddInfoAbout.LocalBounds, widgetToAddInfoAbout.OriginRelativeParent), pointSize: 8, textColor: RGBA_Bytes.Red); sizeAndPositon.AutoExpandBoundsToText = true; widgetInfo.AddChild(sizeAndPositon); TextWidget boundsText = new TextWidget(string.Format(" Bounds {0}", widgetToAddInfoAbout.BoundsRelativeToParent), pointSize: 8, textColor: RGBA_Bytes.Red); boundsText.AutoExpandBoundsToText = true; widgetInfo.AddChild(boundsText); if (!widgetRefList.ContainsKey(widgetToAddInfoAbout)) { widgetRefList.Add(widgetToAddInfoAbout, new WidgetInList(sizeAndPositon, boundsText)); widgetToAddInfoAbout.PositionChanged += new EventHandler(updateWidgetInfo); widgetToAddInfoAbout.BoundsChanged += new EventHandler(updateWidgetInfo); } FlowLayoutWidget childrenWidgetInfo = new FlowLayoutWidget(FlowDirection.TopToBottom); indented.AddChild(childrenWidgetInfo); widgetInfo.AddChild(indented); foreach (GuiWidget child in widgetToAddInfoAbout.Children) { AddInfoRecursive(child, childrenWidgetInfo, level + 1); } layoutToAddInfoTo.AddChild(widgetInfo); }