private void SaveUserSettings(object sender, EventArgs e) { _userSettings.WindowState = this.WindowState; _userSettings.WindowsSize = this.Size; _userSettings.WindowsLocation = this.Location; _userSettings.PointColor = _storage.PointColor; _userSettings.PointSize = _storage.PointSize; _userSettings.BackColor = _canvas.BackgroundColor; _userSettings.AddedPoints = _storage.InputPoints; _userSettings.AddedAlgorithms = _algorithms.Select(o => { return o.GetType().AssemblyQualifiedName; }).ToList(); _userSettings.AddedAlgorithmsData = _algorithms.Select(o => { return o.Settings.Select(s => { return string.Format("{0}:{1}", s.Name, s.Serialize()); }).Aggregate((a, b) => { return string.Format("{0};{1}", a, b); }); }).ToList(); try { File.WriteAllText(_userSettingsPath, SerializationUtils.Serialize(_userSettings)); } catch (Exception ex) { InterAppComunication.ReportError("Saving userSettings", ex); _userSettings = new GuiUserSettings(); } }
private void LoadUserSettings() { _userSettings = null; try { _userSettings = SerializationUtils.Deserialize<GuiUserSettings>(File.ReadAllText(_userSettingsPath)); } catch (Exception ex) { InterAppComunication.ReportError("Loading userSettings", ex); } if (_userSettings == null) _userSettings = new GuiUserSettings(); UserSettingsChanged(); this.WindowState = _userSettings.WindowState; this.Size = _userSettings.WindowsSize; this.Location = _userSettings.WindowsLocation; if (_userSettings.AddedPoints != null) _storage.InputPoints.AddRange(_userSettings.AddedPoints); for (int i = 0; i < _userSettings.AddedAlgorithms.Count && i < _userSettings.AddedAlgorithmsData.Count; i++) { try { var algName = _userSettings.AddedAlgorithms[i]; var algData = _userSettings.AddedAlgorithmsData[i]; var assemblies = AppDomain.CurrentDomain.GetAssemblies(); var type = Type.GetType(algName); var alg = CreateAlgInstance(type); if (alg == null) continue; var dict = algData.Split(';') .Select(o => { return o.Split(':'); }) .GroupBy(o => o[0]) .Select(o => o.First()) .ToDictionary(k => { return k[0]; }, v => { return v[1]; }); foreach (var set in alg.Settings) { if (dict.ContainsKey(set.Name)) { var value = dict[set.Name]; set.Parse(value); } } AddAlgoritmControl(alg); } catch(Exception ex) { InterAppComunication.ReportError("Adding Alg in LoadUserSettings",ex); } } }