// This file is part of the Noddybox.Emulation C# suite. // // Noddybox.Emulation is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Noddybox.Emulation is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Noddybox.Emulation. If not, see . // // Copyright (c) 2012 Ian Cowburn // using System; using System.Xml; using System.Collections.Generic; namespace Noddybox.Emulation.Keyboard.Schema { /// /// Provides the schema for the keyboard definition. /// public class KeyboardDefinition { #region Properties /// /// Get the list of keyboard key defintiions. /// public List Definitions {get; private set;} #endregion #region Xml functions /// /// Create the XML for this keyboard definition. /// /// The created XML document. public XmlDocument CreateXML() { XmlDocument doc = new XmlDocument(); doc.AppendChild(doc.CreateXmlDeclaration("1.0", null, null)); doc.AppendChild(doc.CreateElement("Keyboard")); foreach (KeyboardKey k in Definitions) { XmlElement e = doc.CreateElement("Key"); k.SetElement(e); doc.DocumentElement.AppendChild(e); } return doc; } /// /// Create an object from XML. /// /// The XML document to load from. /// The created object. public static KeyboardDefinition CreateFromXML(XmlDocument doc) { KeyboardDefinition definition = new KeyboardDefinition(); if (doc.DocumentElement.Name != "Keyboard") { throw new ArgumentException("Root element not a keyboard"); } foreach (XmlNode n in doc.DocumentElement.ChildNodes) { if (n is XmlElement) { XmlElement e = (XmlElement)n; if (e.Name == "Key") { definition.Definitions.Add(KeyboardKey.CreateFromElement(e)); } } } return definition; } #endregion #region Constructors public KeyboardDefinition() { Definitions = new List(); } #endregion } }