private void AddPlugin(Type t, string filename, XmlDocument catalog, XmlNode mapNode)
        {
            XmlNode newChild = mapNode.SelectSingleNode(t.BaseType.Name);

            if (newChild == null)
            {
                newChild = catalog.CreateElement(t.BaseType.Name);
                mapNode.AppendChild(newChild);
            }
            XmlNode      node2 = catalog.CreateElement("item");
            XmlAttribute node  = catalog.CreateAttribute("identity");

            node.Value = t.FullName.ToLower();
            node2.Attributes.Append(node);
            XmlAttribute attribute2 = catalog.CreateAttribute("file");

            attribute2.Value = filename;
            node2.Attributes.Append(attribute2);
            PluginAttribute customAttribute = (PluginAttribute)Attribute.GetCustomAttribute(t, typeof(PluginAttribute));

            if (customAttribute != null)
            {
                XmlAttribute attribute4 = catalog.CreateAttribute("name");
                attribute4.Value = customAttribute.Name;
                node2.Attributes.Append(attribute4);
                XmlAttribute attribute5 = catalog.CreateAttribute("seq");
                attribute5.Value = (customAttribute.Sequence > 0) ? customAttribute.Sequence.ToString(CultureInfo.InvariantCulture) : "0";
                node2.Attributes.Append(attribute5);
                ConfigablePlugin plugin     = Activator.CreateInstance(t) as ConfigablePlugin;
                XmlAttribute     attribute6 = catalog.CreateAttribute("logo");
                if (string.IsNullOrEmpty(plugin.Logo) || (plugin.Logo.Trim().Length == 0))
                {
                    attribute6.Value = "";
                }
                else
                {
                    attribute6.Value = this.PluginVirtualPath + "/images/" + plugin.Logo.Trim();
                }
                node2.Attributes.Append(attribute6);
                XmlAttribute attribute7 = catalog.CreateAttribute("shortDescription");
                attribute7.Value = plugin.ShortDescription;
                node2.Attributes.Append(attribute7);
                XmlAttribute attribute8 = catalog.CreateAttribute("description");
                attribute8.Value = plugin.Description;
                node2.Attributes.Append(attribute8);
            }
            XmlAttribute attribute9 = catalog.CreateAttribute("namespace");

            attribute9.Value = t.Namespace.ToLower();
            node2.Attributes.Append(attribute9);
            if ((customAttribute != null) && (customAttribute.Sequence > 0))
            {
                XmlNode refChild = FindNode(newChild.ChildNodes, customAttribute.Sequence);
                if (refChild == null)
                {
                    newChild.AppendChild(node2);
                }
                else
                {
                    newChild.InsertBefore(node2, refChild);
                }
            }
            else
            {
                newChild.AppendChild(node2);
            }
        }
Пример #2
0
        private void AddPlugin(Type t, string filename, XmlDocument catalog, XmlNode mapNode)
        {
            XmlNode xmlNode = mapNode.SelectSingleNode(t.BaseType.Name);

            if (xmlNode == null)
            {
                xmlNode = catalog.CreateElement(t.BaseType.Name);
                mapNode.AppendChild(xmlNode);
            }
            XmlNode      xmlNode2     = catalog.CreateElement("item");
            XmlAttribute xmlAttribute = catalog.CreateAttribute("identity");

            xmlAttribute.Value = t.FullName.ToLower();
            xmlNode2.Attributes.Append(xmlAttribute);
            XmlAttribute xmlAttribute2 = catalog.CreateAttribute("file");

            xmlAttribute2.Value = filename;
            xmlNode2.Attributes.Append(xmlAttribute2);
            PluginAttribute pluginAttribute = (PluginAttribute)Attribute.GetCustomAttribute(t, typeof(PluginAttribute));

            if (pluginAttribute != null)
            {
                XmlAttribute xmlAttribute3 = catalog.CreateAttribute("name");
                xmlAttribute3.Value = pluginAttribute.Name;
                xmlNode2.Attributes.Append(xmlAttribute3);
                XmlAttribute xmlAttribute4 = catalog.CreateAttribute("seq");
                xmlAttribute4.Value = ((pluginAttribute.Sequence > 0) ? pluginAttribute.Sequence.ToString(CultureInfo.InvariantCulture) : "0");
                xmlNode2.Attributes.Append(xmlAttribute4);
                ConfigablePlugin configablePlugin = Activator.CreateInstance(t) as ConfigablePlugin;
                XmlAttribute     xmlAttribute5    = catalog.CreateAttribute("logo");
                if (string.IsNullOrEmpty(configablePlugin.Logo) || configablePlugin.Logo.Trim().Length == 0)
                {
                    xmlAttribute5.Value = "";
                }
                else
                {
                    xmlAttribute5.Value = this.PluginVirtualPath + "/images/" + configablePlugin.Logo.Trim();
                }
                xmlNode2.Attributes.Append(xmlAttribute5);
                XmlAttribute xmlAttribute6 = catalog.CreateAttribute("shortDescription");
                xmlAttribute6.Value = configablePlugin.ShortDescription;
                xmlNode2.Attributes.Append(xmlAttribute6);
                XmlAttribute xmlAttribute7 = catalog.CreateAttribute("description");
                xmlAttribute7.Value = configablePlugin.Description;
                xmlNode2.Attributes.Append(xmlAttribute7);
            }
            XmlAttribute xmlAttribute8 = catalog.CreateAttribute("namespace");

            xmlAttribute8.Value = t.Namespace.ToLower();
            xmlNode2.Attributes.Append(xmlAttribute8);
            if (pluginAttribute != null && pluginAttribute.Sequence > 0)
            {
                XmlNode xmlNode3 = PluginContainer.FindNode(xmlNode.ChildNodes, pluginAttribute.Sequence);
                if (xmlNode3 == null)
                {
                    xmlNode.AppendChild(xmlNode2);
                }
                else
                {
                    xmlNode.InsertBefore(xmlNode2, xmlNode3);
                }
            }
            else
            {
                xmlNode.AppendChild(xmlNode2);
            }
        }