public bool Write(SetupProfile profile, XmlNode root, XmlDocument document) { if (profile == null) { throw new ArgumentNullException("profile"); } if (root == null) { throw new ArgumentNullException("root"); } if (document == null) { throw new ArgumentNullException("document"); } foreach (int index in profile.BindingIndexes) { CapInputRelay settings = profile.GetBindings(index); XmlNode node = WriteRelay(index, settings, document); if (node != null) { root.AppendChild(node); } } return(true); }
public bool Read(SetupProfile profile, XmlNode root) { if (profile == null) { throw new ArgumentNullException("profile"); } if (root == null) { throw new ArgumentNullException("root"); } foreach (XmlNode node in root.ChildNodes) { if (node.Name.Equals("Bindings")) { if (node.Attributes["Index"] == null) { return(false); } int index = JsonString.ParseInt(node.Attributes["Index"].InnerText, -1); if (index < 0) { return(false); } CapInputRelay settings = ReadRelay(node); if (settings == null) { return(false); } profile.AddBindings(index, settings); } } return(true); }
public void AddBindings(int index, CapInputRelay settings) { if (settings == null) { throw new ArgumentNullException("settings"); } bindings[index] = settings; }
private CapInputRelay ReadRelay(XmlNode root) { var result = new CapInputRelay(); foreach (XmlNode node in root.ChildNodes) { if (node.Name.Equals("Bind")) { // read information for a single axis if (node.Attributes["Axis"] == null || node.Attributes["Index"] == null || node.Attributes["Capability"] == null) { return(null); } HeadAxis axis; if (!Enum.TryParse(node.Attributes["Axis"].InnerText, out axis)) { return(null); } int device = JsonString.ParseInt(node.Attributes["Index"].InnerText, -1); if (device < 0) { return(null); } VirtualDeviceCapability capability; if (!Enum.TryParse(node.Attributes["Capability"].InnerText, out capability)) { return(null); } object key1 = null; if (node.Attributes["Key1"] != null) { key1 = node.Attributes["Key1"].InnerText; } object key2 = null; if (node.Attributes["Key2"] != null) { key2 = node.Attributes["Key2"].InnerText; } object mapping = null; result.AddBinding(axis, device, capability, key1, key2, mapping); } } return(result); }
private XmlNode WriteRelay(int index, CapInputRelay settings, XmlDocument document) { var result = document.CreateElement("Bindings"); result.SetAttribute("Index", index.ToString()); foreach (HeadAxis axis in (HeadAxis[])Enum.GetValues(typeof(HeadAxis))) { int device = settings.GetDeviceIndex(axis); if (device < 0) { continue; } XmlElement node = document.CreateElement("Bind"); result.AppendChild(node); node.SetAttribute("Axis", axis.ToString()); node.SetAttribute("Index", device.ToString()); VirtualDeviceCapability capability = settings.GetDeviceCapability(axis); node.SetAttribute("Capability", capability.ToString()); Tuple <object, object> keys = settings.GetDeviceKeys(axis); node.SetAttribute("Key1", keys.Item1.ToString()); node.SetAttribute("Key2", keys.Item2.ToString()); } return(result); }