コード例 #1
0
        public XmlDocument CreateDocumentFromData()
        {
            var xmlDoc      = new XmlDocument();
            var decl        = xmlDoc.CreateXmlDeclaration(_xmlVersion, _xmlEncoding, "yes");
            var abletonNode = xmlDoc.CreateElement("Ableton");

            abletonNode.SetAttribute("MajorVersion", abletonHeader.MajorVersion.ToString());
            abletonNode.SetAttribute("MinorVersion", abletonHeader.MinorVersion);
            abletonNode.SetAttribute("SchemaChangeCount", abletonHeader.SchemaChangeCount.ToString());
            abletonNode.SetAttribute("Creator", abletonHeader.Creator);
            abletonNode.SetAttribute("Revision", abletonHeader.Revision);
            var firstChild = xmlDoc.CreateElement("LiveSet");

            foreach (var el in intValues)
            {
                var element = xmlDoc.CreateElement(el.Key);
                element.SetAttribute("Value", el.Value.ToString());
                firstChild.AppendChild(element);
            }

            foreach (var el in boolValues)
            {
                var element = xmlDoc.CreateElement(el.Key);
                element.SetAttribute("Value", el.Value.ToString().ToLower());
                firstChild.AppendChild(element);
            }

            var videoRectElement = xmlDoc.CreateElement("VideoWindowRect");

            foreach (var el in videoRect)
            {
                videoRectElement.SetAttribute(el.Key, el.Value.ToString());
            }

            var viewDataElement = xmlDoc.CreateElement("ViewData");

            viewDataElement.SetAttribute("Value", viewData);
            var annotationElement = xmlDoc.CreateElement("Annotation");

            annotationElement.SetAttribute("Value", annotation);

            var trackNode = xmlDoc.CreateElement("Tracks");

            foreach (var mt in midiTracks)
            {
                mt.CreateXmlNode(xmlDoc, trackNode);
            }

            foreach (var at in audioTracks)
            {
                at.CreateXmlNode(xmlDoc, trackNode);
            }

            foreach (var rt in returnTracks)
            {
                rt.CreateXmlNode(xmlDoc, trackNode);
            }

            masterTrack.CreateXmlNode(xmlDoc, firstChild);
            firstChild.AppendChild(trackNode);

            contentSplitterProperties.CreateXmlNode(xmlDoc, firstChild);
            sequencerNavigator.CreateXmlNode(xmlDoc, firstChild);
            timeSelection.CreateXmlNode(xmlDoc, firstChild);
            scaleInformation.CreateXmlNode(xmlDoc, firstChild);
            grid.CreateXmlNode(xmlDoc, firstChild);

            var playerColourPickerNode = xmlDoc.CreateElement("AutoColorPickerForPlayerAndGroupTracks");
            var playerNextColourIndex  = xmlDoc.CreateElement("NextColorIndex");

            playerNextColourIndex.SetAttribute("Value", autoColourPickerPlayerTracks.ToString());
            playerColourPickerNode.AppendChild(playerNextColourIndex);
            firstChild.AppendChild(playerColourPickerNode);

            var masterColourPickerNode = xmlDoc.CreateElement("AutoColorPickerForReturnAndMasterTracks");
            var masterNextColourIndex  = xmlDoc.CreateElement("NextColorIndex");

            masterNextColourIndex.SetAttribute("Value", autoColourPickerMasterTracks.ToString());
            masterColourPickerNode.AppendChild(masterNextColourIndex);
            firstChild.AppendChild(masterColourPickerNode);

            viewStates.CreateXmlNode(xmlDoc, firstChild);
            firstChild.AppendChild(videoRectElement);
            firstChild.AppendChild(viewDataElement);
            firstChild.AppendChild(annotationElement);
            abletonNode.AppendChild(firstChild);
            xmlDoc.AppendChild(abletonNode);
            xmlDoc.InsertBefore(decl, abletonNode);
            return(xmlDoc);
        }