Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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);
                }
            }
        }