public static void SaveSettings() { XMLScribe scribe = new XMLScribe(SettingsPath); scribe.mode = XMLScribe.ScribeMode.Saving; scribe.EnterNode("Settings"); { XmlNode settingData = scribe.EnterNode("SettingsData"); scribe.SaveValueIntoNode(data); scribe.ExitNode(); } scribe.ExitNode(); scribe.SaveDocument(); }
public void ExposeData(XMLScribe scribe) { if (scribe.mode == XMLScribe.ScribeMode.Saving) { if (targetMovable != null) { scribe.LookupValue(ref targetMovable, "targetMovable"); } else { scribe.LookupValue(ref targetLocation, "targetLocation"); } } else if (scribe.mode == XMLScribe.ScribeMode.Loading) { scribe.LookupValue(ref targetMovable, "targetMovable"); scribe.LookupValue(ref targetLocation, "targetLocation"); } }
public static void ReloadSettings() { Log.Message($"Settings file: {SettingsPath}"); if (System.IO.File.Exists(SettingsPath)) { Log.Message("Settings file found."); XMLScribe scribe = new XMLScribe(SettingsPath); scribe.mode = XMLScribe.ScribeMode.Loading; scribe.EnterNode("Settings"); { scribe.LookupValue(ref data, "SettingsData"); } scribe.ExitNode(); } else { Log.Message("Settings file NOT found."); } }
public override void SaveToXML(object targetObject, XMLScribe scribe) { //Log.Message($"[Object] SaveToXML='{targetObject?.ToString()}'"); if (targetObject == null) { return; } Type type = targetObject.GetType(); //Custom behavior. if (targetObject is IExposeData exposed) { exposed.ExposeData(scribe); return; } //Default behavior. if (type.IsClass) { foreach (FieldInfo field in type.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)) { //Log.Message($"Field='{field.Name}'"); XMLTypeConverter converter = XMLTools.GetXMLProperTypeConverter(field.FieldType); if (converter == null) { Log.Error($"Found no suitable converter for Node='{(scribe.Current.Name + '/' + field.Name)}' in Document='{scribe.DocumentPath}'"); } else { object targetObjectField = field.GetValue(targetObject); XmlNode targetNode = scribe.EnterNode(field.Name); converter.SaveToXML(targetObjectField, scribe); scribe.ExitNode(); } } } }
public override void SaveToXML(object targetObject, XMLScribe scribe) { if (targetObject == null) { return; } Type type = targetObject.GetType(); //Log.Message($"Value='{targetObject?.ToString()}'"); if (type == typeof(int)) { int value = (int)targetObject; scribe.Current.InnerText = value.ToString(); } else if (type == typeof(float)) { float value = (float)targetObject; scribe.Current.InnerText = value.ToString(); } else if (type == typeof(double)) { double value = (double)targetObject; scribe.Current.InnerText = value.ToString(); } else if (type == typeof(bool)) { bool value = (bool)targetObject; scribe.Current.InnerText = value.ToString(); } else if (type == typeof(string)) { string value = (string)targetObject; scribe.Current.InnerText = value; } }
public void ExposeData(XMLScribe scribe) { }
public virtual void SaveToXML(object targetObject, XMLScribe scribe) { }