示例#1
0
        /// <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;
        }
示例#2
0
        /// <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);
        }