public static void Save(string filename)
{
var xmlDoc = new EnhancedXmlDocument();
var rootNode = xmlDoc.CreateElement("MediaConvertGUIConfiguration");
xmlDoc.AppendChild(rootNode);
xmlDoc.CreateTextSingleValueElement(rootNode, "MediaInfoPath", MediaInfoPath);
xmlDoc.CreateTextSingleValueElement(rootNode, "FFMpegPath", FFMpegPath);
var appNode = xmlDoc.CreateElement("Applications");
rootNode.AppendChild(appNode);
var appOpenWithNode = xmlDoc.CreateElement("OpenWith");
appNode.AppendChild(appOpenWithNode);
var appOpenWithCommentNode = xmlDoc.CreateComment(" <Application>vlc</Application> ");
appOpenWithNode.AppendChild(appOpenWithCommentNode);
foreach (var app in OpenWithApplications)
{
var node = xmlDoc.CreateElement("Application");
node.InnerText = app;
appOpenWithNode.AppendChild(node);
}
var codecsNode = xmlDoc.CreateElement("AvailableCodecs");
var videoCodecsNode = xmlDoc.CreateElement("Video");
var audioCodecsNode = xmlDoc.CreateElement("Audio");
rootNode.AppendChild(codecsNode);
codecsNode.AppendChild(videoCodecsNode);
codecsNode.AppendChild(audioCodecsNode);
foreach (var codec in VideoCodecs)
{
codec.SaveToXmlnode(xmlDoc, videoCodecsNode);
}
foreach (var codec in AudioCodecs)
{
codec.SaveToXmlnode(xmlDoc, audioCodecsNode);
}
var containersNode = xmlDoc.CreateElement("AvailableContainers");
rootNode.AppendChild(containersNode);
foreach (var container in Containers)
{
container.SaveToXmlnode(xmlDoc, containersNode);
}
SaveDictionaryToXmlNode(DefaultVideoBitRates, xmlDoc, rootNode, "DefaultVideoBitrates", "Bitrate");
SaveDictionaryToXmlNode(DefaultSamplingRates, xmlDoc, rootNode, "DefaultSamplingRates", "Rate");
SaveDictionaryToXmlNode(DefaultAudioBitrates, xmlDoc, rootNode, "DefaultAudioBitrates", "Bitrate");
xmlDoc.Save(filename);
}