Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 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");
     }
 }
Exemplo n.º 3
0
        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.");
            }
        }
Exemplo n.º 4
0
        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();
                    }
                }
            }
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
 public void ExposeData(XMLScribe scribe)
 {
 }
Exemplo n.º 7
0
 public virtual void SaveToXML(object targetObject, XMLScribe scribe)
 {
 }