public XmlTextReader GetSyntaxModeFile(SyntaxMode syntaxMode) { string syntaxModeFile = Path.Combine(directory, syntaxMode.FileName); if (!File.Exists(syntaxModeFile)) { MessageBox.Show("Can't load highlighting definition " + syntaxModeFile + " (file not found)!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); return(null); } return(new XmlTextReader(File.OpenRead(syntaxModeFile))); }
public ResourceSyntaxModeProvider() { Assembly assembly = typeof(SyntaxMode).Assembly; Stream syntaxModeStream = assembly.GetManifestResourceStream("Netron.Neon.Actinium.TextEditor.syntaxmodes.SyntaxModes.xml"); if (syntaxModeStream == null) { throw new ApplicationException("Could not fetch the manifest resource stream containing the syntax mode in path 'Netron.Neon.Actinium.TextEditor.syntaxmodes.SyntaxModes.xml'"); } syntaxModes = SyntaxMode.GetSyntaxModes(syntaxModeStream); }
IHighlightingStrategy LoadDefinition(DictionaryEntry entry) { SyntaxMode syntaxMode = (SyntaxMode)entry.Key; ISyntaxModeFileProvider syntaxModeFileProvider = (ISyntaxModeFileProvider)entry.Value; DefaultHighlightingStrategy highlightingStrategy = HighlightingDefinitionParser.Parse(syntaxMode, syntaxModeFileProvider.GetSyntaxModeFile(syntaxMode)); highlightingDefs[syntaxMode.Name] = highlightingStrategy; highlightingStrategy.ResolveReferences(); return(highlightingStrategy); }
public FileSyntaxModeProvider(string directory) { this.directory = directory; string syntaxModeFile = Path.Combine(directory, "SyntaxModes.xml"); if (File.Exists(syntaxModeFile)) { Stream s = File.OpenRead(syntaxModeFile); syntaxModes = SyntaxMode.GetSyntaxModes(s); s.Close(); } else { syntaxModes = ScanDirectory(directory); } }
public static DefaultHighlightingStrategy Parse(SyntaxMode syntaxMode, XmlTextReader xmlTextReader) { try { XmlValidatingReader validatingReader = new XmlValidatingReader(xmlTextReader); Stream shemaStream = Assembly.GetCallingAssembly().GetManifestResourceStream("Netron.Neon.Actinium.TextEditor.syntaxmodes.Mode.xsd"); validatingReader.Schemas.Add("", new XmlTextReader(shemaStream)); validatingReader.ValidationType = ValidationType.Schema; validatingReader.ValidationEventHandler += new ValidationEventHandler(ValidationHandler); XmlDocument doc = new XmlDocument(); doc.Load(validatingReader); DefaultHighlightingStrategy highlighter = new DefaultHighlightingStrategy(doc.DocumentElement.Attributes["name"].InnerText); if (doc.DocumentElement.Attributes["extensions"] != null) { highlighter.Extensions = doc.DocumentElement.Attributes["extensions"].InnerText.Split(new char[] { ';', '|' }); } XmlElement environment = doc.DocumentElement["Environment"]; if (environment != null) { foreach (XmlNode node in environment.ChildNodes) { if (node is XmlElement) { XmlElement el = (XmlElement)node; highlighter.SetColorFor(el.Name, el.HasAttribute("bgcolor") ? new HighlightBackground(el) : new HighlightColor(el)); } } } // parse properties if (doc.DocumentElement["Properties"] != null) { foreach (XmlElement propertyElement in doc.DocumentElement["Properties"].ChildNodes) { highlighter.Properties[propertyElement.Attributes["name"].InnerText] = propertyElement.Attributes["value"].InnerText; } } if (doc.DocumentElement["Digits"] != null) { highlighter.DigitColor = new HighlightColor(doc.DocumentElement["Digits"]); } XmlNodeList nodes = doc.DocumentElement.GetElementsByTagName("RuleSet"); foreach (XmlElement element in nodes) { highlighter.AddRuleSet(new HighlightRuleSet(element)); } xmlTextReader.Close(); if (errors != null) { ReportErrors(syntaxMode.FileName); errors = null; return(null); } else { return(highlighter); } } catch (Exception e) { MessageBox.Show("Could not load mode definition file.\n" + e.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); return(null); } }
public XmlTextReader GetSyntaxModeFile(SyntaxMode syntaxMode) { Assembly assembly = typeof(SyntaxMode).Assembly; return(new XmlTextReader(assembly.GetManifestResourceStream("Netron.Neon.Actinium.TextEditor.syntaxmodes." + syntaxMode.FileName))); }