Exemple #1
0
 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);
 }
Exemple #2
0
 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);
 }
Exemple #3
0
 public void AddBindings(int index, CapInputRelay settings)
 {
     if (settings == null)
     {
         throw new ArgumentNullException("settings");
     }
     bindings[index] = settings;
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }