ICSharpCode.Core.AddIn.SetupAddIn C# (CSharp) Method

SetupAddIn() static private method

static private SetupAddIn ( XmlReader reader, AddIn addIn, string hintPath ) : void
reader XmlReader
addIn AddIn
hintPath string
return void
        static void SetupAddIn(XmlReader reader, AddIn addIn, string hintPath)
        {
            while (reader.Read()) {
                if (reader.NodeType == XmlNodeType.Element && reader.IsStartElement()) {
                    switch (reader.LocalName) {
                        case "StringResources":
                        case "BitmapResources":
                            if (reader.AttributeCount != 1) {
                                throw new AddInLoadException("BitmapResources requires ONE attribute.");
                            }

                            string filename = StringParser.Parse(reader.GetAttribute("file"));

                            if(reader.LocalName == "BitmapResources")
                            {
                                addIn.BitmapResources.Add(filename);
                            }
                            else
                            {
                                addIn.StringResources.Add(filename);
                            }
                            break;
                        case "Runtime":
                            if (!reader.IsEmptyElement) {
                                Runtime.ReadSection(reader, addIn, hintPath);
                            }
                            break;
                        case "Include":
                            if (reader.AttributeCount != 1) {
                                throw new AddInLoadException("Include requires ONE attribute.");
                            }
                            if (!reader.IsEmptyElement) {
                                throw new AddInLoadException("Include nodes must be empty!");
                            }
                            if (hintPath == null) {
                                throw new AddInLoadException("Cannot use include nodes when hintPath was not specified (e.g. when AddInManager reads a .addin file)!");
                            }
                            string fileName = Path.Combine(hintPath, reader.GetAttribute(0));
                            XmlReaderSettings xrs = new XmlReaderSettings();
                            xrs.ConformanceLevel = ConformanceLevel.Fragment;
                            using (XmlReader includeReader = XmlTextReader.Create(fileName, xrs)) {
                                SetupAddIn(includeReader, addIn, Path.GetDirectoryName(fileName));
                            }
                            break;
                        case "Path":
                            if (reader.AttributeCount != 1) {
                                throw new AddInLoadException("Import node requires ONE attribute.");
                            }
                            string pathName = reader.GetAttribute(0);
                            ExtensionPath extensionPath = addIn.GetExtensionPath(pathName);
                            if (!reader.IsEmptyElement) {
                                ExtensionPath.SetUp(extensionPath, reader, "Path");
                            }
                            break;
                        case "Manifest":
                            addIn.Manifest.ReadManifestSection(reader, hintPath);
                            break;
                        default:
                            throw new AddInLoadException("Unknown root path node:" + reader.LocalName);
                    }
                }
            }
        }

Usage Example

Exemplo n.º 1
0
        public static AddIn Load(System.IO.TextReader textReader, string hintPath)
        {
            AddIn addIn = new AddIn();

            using (XmlTextReader xmlTextReader = new XmlTextReader(textReader))
            {
                while (xmlTextReader.Read())
                {
                    if (xmlTextReader.IsStartElement())
                    {
                        string localName;
                        if ((localName = xmlTextReader.LocalName) == null || !(localName == "AddIn"))
                        {
                            throw new System.NotSupportedException("Unknown add-in file.");
                        }
                        addIn.properties = Properties.ReadFromAttributes(xmlTextReader);
                        AddIn.SetupAddIn(xmlTextReader, addIn, hintPath);
                    }
                }
            }
            return(addIn);
        }