private GUIItem CreateFromXML(XmlElement element) { GUIItem item = element.Name switch { "Window" => CreateWindow(element), "Group" => CreateGroup(element), "MenuBar" => CreateMenuBar(element), "MainMenuBar" => CreateMainMenuBar(element), "Menu" => CreateMenu(element), "MenuItem" => CreateMenuItem(element), "Text" => CreateText(element), "Button" => CreateButton(element), "ImageButton" => CreateImageButton(element), "ArrowButton" => CreateArrowButton(element), "InputText" => CreateInputText(element), "InputTextMultiLine" => CreateInputTextMultiLine(element), "InputInt" => CreateInputInt(element), "InputFloat" => CreateInputFloat(element), "Combo" => CreateCombo(element), "Separator" => CreateSeparator(element), _ => throw new NotSupportedException() }; if (item.Name == "") { item.Name = element.GetAttribute("Name"); } if (item.Attr == "") { item.Attr = element.GetAttribute("Attr"); } if (Boolean.TryParse(element.GetAttribute("IsUpdated"), out bool isUpdated)) { item.IsUpdated = isUpdated; } return(item); }
private GUIMainMenuBar CreateMainMenuBar(XmlElement element) { GUIMainMenuBar item = new GUIMainMenuBar(); foreach (XmlNode child in element.ChildNodes) { if (child.Name == "SameLine") { for (int i = 0; i < child.ChildNodes.Count; ++i) { GUIItem sameLineItem = CreateFromXML((XmlElement)child.ChildNodes[i]); sameLineItem.IsSameLine = i != 0; item.AddGUIItem(sameLineItem); } } else { item.AddGUIItem(CreateFromXML((XmlElement)child)); } } return(item); }
public void RemoveGUIItem(GUIItem item) { _GUIItems.Remove(item); }
public void AddGUIItem(GUIItem item) { _GUIItems.Add(item); }
private GUIWindow CreateWindow(XmlElement element) { GUIWindow item = new GUIWindow(); string[] value = null; foreach (XmlElement e in element.ChildNodes) { if (e.Name == "Name") { item.Name = e.InnerText; } if (e.Name == "Size") { value = e.InnerText.Split(","); if (value.Length == 2) { if (Single.TryParse(value[0], out float width)) { if (Single.TryParse(value[1], out float height)) { item.Size = new Vector2F(width, height); } } } } if (e.Name == "Position") { value = e.InnerText.Split(","); if (value.Length == 2) { if (Single.TryParse(value[0], out float xPos)) { if (Single.TryParse(value[1], out float yPos)) { item.Position = new Vector2F(xPos, yPos); } } } } if (e.Name == "Flags") { foreach (string flag in e.InnerText.Split("|")) { if (Enum.TryParse <ToolWindowFlags>(flag, false, out ToolWindowFlags flags)) { item.Flags |= flags; } } } if (e.Name == "Body") { foreach (XmlNode child in e.ChildNodes) { if (child.Name == "SameLine") { for (int i = 0; i < child.ChildNodes.Count; ++i) { GUIItem sameLineItem = CreateFromXML((XmlElement)child.ChildNodes[i]); sameLineItem.IsSameLine = i != 0; item.AddGUIItem(sameLineItem); } } else { item.AddGUIItem(CreateFromXML((XmlElement)child)); } } } } return(item); }