#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

89 lines
2.7 KiB

// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Xml;
namespace ICSharpCode.SettingsEditor
{
public class SettingsDocument
{
string generatedClassNamespace = "";
string generatedClassName = "";
List<SettingsEntry> entries = new List<SettingsEntry>();
public string GeneratedClassNamespace {
get { return generatedClassNamespace; }
set { generatedClassNamespace = value ?? ""; }
}
public string GeneratedClassName {
get { return generatedClassName; }
set { generatedClassName = value ?? ""; }
}
public string GeneratedFullClassName {
get {
if (string.IsNullOrEmpty(generatedClassNamespace))
return generatedClassName;
else
return generatedClassNamespace + "." + generatedClassName;
}
}
/// <summary>
/// VB "My" namespace integration
/// </summary>
public bool UseMySettingsClassName { get; set; }
public List<SettingsEntry> Entries {
get { return entries; }
}
public SettingsDocument()
{
}
const string XmlNamespace = "http://schemas.microsoft.com/VisualStudio/2004/01/settings";
public SettingsDocument(XmlElement settingsFile, ISettingsEntryHost host)
{
generatedClassNamespace = settingsFile.GetAttribute("GeneratedClassNamespace");
generatedClassName = settingsFile.GetAttribute("GeneratedClassName");
this.UseMySettingsClassName = "true".Equals(settingsFile.GetAttribute("UseMySettingsClassName"), StringComparison.OrdinalIgnoreCase);
XmlElement settings = settingsFile["Settings"];
foreach (XmlNode node in settings.ChildNodes) {
if (node is XmlElement) {
entries.Add(new SettingsEntry(host, node as XmlElement));
}
}
}
public void Save(XmlWriter writer)
{
writer.WriteStartElement("SettingsFile", XmlNamespace);
writer.WriteAttributeString("CurrentProfile", "(Default)");
writer.WriteAttributeString("GeneratedClassNamespace", generatedClassNamespace);
writer.WriteAttributeString("GeneratedClassName", generatedClassName);
if (this.UseMySettingsClassName)
writer.WriteAttributeString("UseMySettingsClassName", "true");
writer.WriteStartElement("Profiles");
writer.WriteStartElement("Profile");
writer.WriteAttributeString("Name", "(Default)");
writer.WriteEndElement(); // Profile
writer.WriteEndElement(); // Profiles
writer.WriteStartElement("Settings");
foreach (SettingsEntry e in entries) {
e.WriteTo(writer);
}
writer.WriteEndElement(); // Settings
writer.WriteEndElement(); // SettingsFile
}
}
}