예제 #1
0
		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);
		}