Changeset 1746


Ignore:
Timestamp:
Jul 21, 2010, 3:44:15 PM (11 years ago)
Author:
kopal
Message:

now PluginSettings will be persisted too

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/Model/ModelPersistance.cs

    r1740 r1746  
    4040        public static WorkspaceModel loadModel(string filename, WorkspaceManager workspaceManagerEditor)
    4141        {
    42             WorkspaceModel workspacemodel = (WorkspaceModel)XMLSerialization.XMLSerialization.Deserialize(filename);   
     42            PersistantModel persistantModel = (PersistantModel)XMLSerialization.XMLSerialization.Deserialize(filename);
     43            WorkspaceModel workspacemodel = persistantModel.WorkspaceModel;
    4344            workspacemodel.WorkspaceManagerEditor = workspaceManagerEditor;
     45
     46            foreach (PersistantPlugin persistantPlugin in persistantModel.PersistantPluginList)
     47            {
     48                foreach (PersistantSetting persistantSetting in persistantPlugin.PersistantSettingsList)
     49                {
     50
     51                    PropertyInfo[] arrpInfo = persistantPlugin.PluginModel.Plugin.Settings.GetType().GetProperties();
     52                    foreach (PropertyInfo pInfo in arrpInfo)
     53                    {
     54                        DontSaveAttribute[] dontSave = (DontSaveAttribute[])pInfo.GetCustomAttributes(typeof(DontSaveAttribute), false);
     55                        if (dontSave.Length == 0)
     56                        {
     57                            if (pInfo.Name.Equals(persistantSetting.Name))
     58                            {
     59                                if (persistantSetting.Type.Equals("System.String"))
     60                                {
     61                                    pInfo.SetValue(persistantPlugin.PluginModel.Plugin.Settings, (String)persistantSetting.Value, null);
     62                                }
     63                                else if (persistantSetting.Type.Equals("System.Int16"))
     64                                {
     65                                    pInfo.SetValue(persistantPlugin.PluginModel.Plugin.Settings, System.Int16.Parse((String)persistantSetting.Value), null);
     66                                }
     67                                else if (persistantSetting.Type.Equals("System.Int32"))
     68                                {
     69                                    pInfo.SetValue(persistantPlugin.PluginModel.Plugin.Settings, System.Int32.Parse((String)persistantSetting.Value), null);
     70                                }
     71                                else if (persistantSetting.Type.Equals("System.Int64"))
     72                                {
     73                                    pInfo.SetValue(persistantPlugin.PluginModel.Plugin.Settings, System.Int64.Parse((String)persistantSetting.Value), null);
     74                                }
     75                                else if (persistantSetting.Type.Equals("System.Double"))
     76                                {
     77                                    pInfo.SetValue(persistantPlugin.PluginModel.Plugin.Settings, System.Double.Parse((String)persistantSetting.Value), null);
     78                                }
     79                                else if (persistantSetting.Type.Equals("System.Boolean"))
     80                                {
     81                                    pInfo.SetValue(persistantPlugin.PluginModel.Plugin.Settings, System.Boolean.Parse((String)persistantSetting.Value), null);
     82                                }
     83                            }
     84                        }
     85                    }
     86                }
     87            }
    4488
    4589            foreach (PluginModel pluginModel in workspacemodel.AllPluginModels)
     
    63107                }
    64108            }
     109
    65110            return workspacemodel;         
    66111        }
     
    74119        public static void saveModel(WorkspaceModel workspaceModel, string filename)
    75120        {
    76            XMLSerialization.XMLSerialization.Serialize(workspaceModel, filename);
     121            PersistantModel persistantModel = new PersistantModel();
     122            persistantModel.WorkspaceModel = workspaceModel;
     123
     124            //Save all Settings of each Plugin
     125            foreach (PluginModel pluginModel in workspaceModel.AllPluginModels)
     126            {
     127                PropertyInfo[] arrpInfo = pluginModel.Plugin.Settings.GetType().GetProperties();
     128
     129                PersistantPlugin persistantPlugin = new PersistantPlugin();
     130                persistantPlugin.PluginModel = pluginModel;
     131
     132                foreach (PropertyInfo pInfo in arrpInfo)
     133                {
     134                    DontSaveAttribute[] dontSave = (DontSaveAttribute[])pInfo.GetCustomAttributes(typeof(DontSaveAttribute), false);
     135                    if (pInfo.CanWrite && dontSave.Length == 0)
     136                    {
     137                        PersistantSetting persistantSetting = new PersistantSetting();
     138                        persistantSetting.Value = "" + pInfo.GetValue(pluginModel.Plugin.Settings, null);
     139                        persistantSetting.Name = pInfo.Name;
     140                        persistantSetting.Type = pInfo.PropertyType.FullName;
     141                        persistantPlugin.PersistantSettingsList.Add(persistantSetting);
     142                    }
     143
     144                }
     145                persistantModel.PersistantPluginList.Add(persistantPlugin);
     146            }
     147            XMLSerialization.XMLSerialization.Serialize(persistantModel, filename);
    77148        }
    78149    }
     150
     151    [Serializable]
     152    public class PersistantModel{
     153        public WorkspaceModel WorkspaceModel{get;set;}
     154        public List<PersistantPlugin> PersistantPluginList = new List<PersistantPlugin>();
     155    }
     156
     157    [Serializable]
     158    public class PersistantPlugin
     159    {
     160        public PluginModel PluginModel { get; set; }
     161        public List<PersistantSetting> PersistantSettingsList = new List<PersistantSetting>();
     162    }
     163
     164    [Serializable]
     165    public class PersistantSetting
     166    {
     167        public string Name {get;set;}
     168        public string Type { get; set; }
     169        public string Value { get; set; }
     170    }
     171
    79172}
Note: See TracChangeset for help on using the changeset viewer.