/// <summary> /// Creates a CustomUI from an XmlDocument /// </summary> /// <param name="document">The XmlDocument</param> /// <returns>The <see cref="TAPI.SDK.GUI.XmlUIConstructor"/> created from the XmlDocument</returns> public static XmlUIConstructor FromDocument(XmlDocument document) { if (document.FirstChild.Name.ToLower() != "sdkxmlui") return null; objects = new List<Tuple<string, object>>(); #region assemblies = new List<Assembly>() assemblies = new List<Assembly>() { Assembly.LoadFrom("mscorlib.dll"), Assembly.LoadFrom("System.dll"), Assembly.LoadFrom("System.Core.dll"), Assembly.LoadFrom("System.Data.dll"), Assembly.LoadFrom("System.Numerics.dll"), Assembly.LoadFrom("System.Xml.dll"), Assembly.LoadFrom("System.Windows.Forms.dll"), Assembly.LoadFrom("System.Drawing.dll"), Assembly.LoadFrom("WindowsBase.dll"), Assembly.LoadFrom("PresentationCore.dll"), Assembly.LoadFrom("PresentationFramework.dll"), Assembly.LoadFrom("WindowsFormsIntegration.dll"), Assembly.LoadFrom("Microsoft.Xna.Framework.dll"), Assembly.LoadFrom("Microsoft.Xna.Framework.Game.dll"), Assembly.LoadFrom("Microsoft.Xna.Framework.Graphics.dll"), Assembly.LoadFrom("Microsoft.Xna.Framework.Xact.dll"), Assembly.LoadFrom("PoroCYon.XnaExtensions.dll"), Assembly.LoadFrom("tAPI.exe"), Assembly.GetExecutingAssembly() }; #endregion #region namespaces = new List<string>() namespaces = new List<string>() { "System", "System.Collections.Generic", "System.Linq", "System.Text", "Microsoft.Xna.Framework", "Microsoft.Xna.Framework.Graphics", "PoroCYon.XnaExtensions", "TAPI", "TAPI.SDK", "TAPI.SDK.GUI", "TAPI.SDK.GUI.Controls" }; #endregion for (int i = 0; i < document.FirstChild.ChildNodes.Count; i++) { XmlNode Xn = document.FirstChild.ChildNodes[i]; #region references if (Xn.Name.ToLower() == "references") { for (int j = 0; j < Xn.ChildNodes.Count; j++) { if (Xn.ChildNodes[j].Name.ToLower() != "reference") continue; for (int k = 0; k < Xn.ChildNodes[j].ChildNodes.Count; k++) { XmlNode XN = Xn.ChildNodes[j].ChildNodes[k]; #region attributes for (int l = 0; l < XN.Attributes.Count; l++) { XmlAttribute xa = XN.Attributes[l]; if (xa.Name.ToLower() == "assembly") { string asm = xa.Value.ToLower(); Assembly a = Assembly.LoadFrom(xa.Value); if (asm == "$calling$") a = Assembly.GetCallingAssembly(); if (asm == "$entry$") a = Assembly.GetEntryAssembly(); if (asm == "$executing$") a = Assembly.GetExecutingAssembly(); if (!assemblies.Contains(a)) assemblies.Add(a); } if (xa.Name.ToLower() == "namespace") if (!namespaces.ConvertAll<string>((s) => { return s.ToLower(); }).Contains(xa.Value.ToLower())) namespaces.Add(xa.Value); } #endregion #region inner if (XN.Name.ToLower() == "assembly") { string asm = XN.InnerText.ToLower(); Assembly a = Assembly.LoadFrom(XN.InnerText); if (asm == "$calling$") a = Assembly.GetCallingAssembly(); if (asm == "$entry$") a = Assembly.GetEntryAssembly(); if (asm == "$executing$") a = Assembly.GetExecutingAssembly(); if (!assemblies.Contains(a)) assemblies.Add(a); } if (XN.Name.ToLower() == "namespace") if (!namespaces.ConvertAll<string>((s) => { return s.ToLower(); }).Contains(XN.InnerText.ToLower())) namespaces.Add(XN.InnerText); #endregion } } continue; } #endregion objects.Add(CreateObject(Xn)); } XmlUIConstructor ret = new XmlUIConstructor(); for (int i = 0; i < objects.Count; i++) ret.AddControl(objects[i].Item2 as Control); // null will be filtered in the first line of AddControl return ret; }
/// <summary> /// Creates a CustomUI from an XmlDocument /// </summary> /// <param name="document">The XmlDocument</param> /// <returns>The <see cref="TAPI.SDK.GUI.XmlUIConstructor"/> created from the XmlDocument</returns> public static XmlUIConstructor FromDocument(XmlDocument document) { if (document.FirstChild.Name.ToLower() != "sdkxmlui") { return(null); } objects = new List <Tuple <string, object> >(); #region assemblies = new List<Assembly>() assemblies = new List <Assembly>() { Assembly.LoadFrom("mscorlib.dll"), Assembly.LoadFrom("System.dll"), Assembly.LoadFrom("System.Core.dll"), Assembly.LoadFrom("System.Data.dll"), Assembly.LoadFrom("System.Numerics.dll"), Assembly.LoadFrom("System.Xml.dll"), Assembly.LoadFrom("System.Windows.Forms.dll"), Assembly.LoadFrom("System.Drawing.dll"), Assembly.LoadFrom("WindowsBase.dll"), Assembly.LoadFrom("PresentationCore.dll"), Assembly.LoadFrom("PresentationFramework.dll"), Assembly.LoadFrom("WindowsFormsIntegration.dll"), Assembly.LoadFrom("Microsoft.Xna.Framework.dll"), Assembly.LoadFrom("Microsoft.Xna.Framework.Game.dll"), Assembly.LoadFrom("Microsoft.Xna.Framework.Graphics.dll"), Assembly.LoadFrom("Microsoft.Xna.Framework.Xact.dll"), Assembly.LoadFrom("PoroCYon.XnaExtensions.dll"), Assembly.LoadFrom("tAPI.exe"), Assembly.GetExecutingAssembly() }; #endregion #region namespaces = new List<string>() namespaces = new List <string>() { "System", "System.Collections.Generic", "System.Linq", "System.Text", "Microsoft.Xna.Framework", "Microsoft.Xna.Framework.Graphics", "PoroCYon.XnaExtensions", "TAPI", "TAPI.SDK", "TAPI.SDK.GUI", "TAPI.SDK.GUI.Controls" }; #endregion for (int i = 0; i < document.FirstChild.ChildNodes.Count; i++) { XmlNode Xn = document.FirstChild.ChildNodes[i]; #region references if (Xn.Name.ToLower() == "references") { for (int j = 0; j < Xn.ChildNodes.Count; j++) { if (Xn.ChildNodes[j].Name.ToLower() != "reference") { continue; } for (int k = 0; k < Xn.ChildNodes[j].ChildNodes.Count; k++) { XmlNode XN = Xn.ChildNodes[j].ChildNodes[k]; #region attributes for (int l = 0; l < XN.Attributes.Count; l++) { XmlAttribute xa = XN.Attributes[l]; if (xa.Name.ToLower() == "assembly") { string asm = xa.Value.ToLower(); Assembly a = Assembly.LoadFrom(xa.Value); if (asm == "$calling$") { a = Assembly.GetCallingAssembly(); } if (asm == "$entry$") { a = Assembly.GetEntryAssembly(); } if (asm == "$executing$") { a = Assembly.GetExecutingAssembly(); } if (!assemblies.Contains(a)) { assemblies.Add(a); } } if (xa.Name.ToLower() == "namespace") { if (!namespaces.ConvertAll <string>((s) => { return(s.ToLower()); }).Contains(xa.Value.ToLower())) { namespaces.Add(xa.Value); } } } #endregion #region inner if (XN.Name.ToLower() == "assembly") { string asm = XN.InnerText.ToLower(); Assembly a = Assembly.LoadFrom(XN.InnerText); if (asm == "$calling$") { a = Assembly.GetCallingAssembly(); } if (asm == "$entry$") { a = Assembly.GetEntryAssembly(); } if (asm == "$executing$") { a = Assembly.GetExecutingAssembly(); } if (!assemblies.Contains(a)) { assemblies.Add(a); } } if (XN.Name.ToLower() == "namespace") { if (!namespaces.ConvertAll <string>((s) => { return(s.ToLower()); }).Contains(XN.InnerText.ToLower())) { namespaces.Add(XN.InnerText); } } #endregion } } continue; } #endregion objects.Add(CreateObject(Xn)); } XmlUIConstructor ret = new XmlUIConstructor(); for (int i = 0; i < objects.Count; i++) { ret.AddControl(objects[i].Item2 as Control); // null will be filtered in the first line of AddControl } return(ret); }