Esempio n. 1
0
        private void ParseDisplayConfigAndAdd(XDocument doc, SettingsDisplayConfiguration config)
        {
            if (!doc.IsXmlValid(Properties.Resources.SettingsInfoSchema))
            {
                return;
            }

            foreach (XElement identifierE in doc.Root.Elements("Identifier"))
            {
                IdentifierInfo identifier = new IdentifierInfo();
                identifier.Name = identifierE.Attribute("Name").Value;

                identifier.DisplayText = identifierE.TryGetAttributeValue("DisplayText", identifier.Name);
                identifier.Description = identifierE.TryGetAttributeValue("Description", null);
                identifier.Order = identifierE.TryGetAttributeValue("Order", 0);
                identifier.Parent = identifierE.TryGetAttributeValue("Parent", null);

                foreach (XElement settingE in identifierE.Elements("Setting"))
                {
                    SettingInfo setting = new SettingInfo();
                    setting.Identifier = identifier.Name;
                    setting.Name = settingE.Attribute("Name").Value;

                    setting.Category = settingE.TryGetAttributeValue("Category", null);
                    setting.DisplayText = settingE.TryGetAttributeValue("DisplayText", setting.Name);
                    setting.Description = settingE.TryGetAttributeValue("Description", null);
                    setting.Order = settingE.TryGetAttributeValue("Order", 0);
                    setting.Editor = settingE.TryGetAttributeValue("Editor", null);
                    setting.EditorParameter = settingE.TryGetAttributeValue("EditorParameter", null);
                    setting.IsDynamic = settingE.TryGetAttributeValue("IsDynamic", false);

                    identifier.Settings.Add(setting);
                }

                config.Identifiers.Add(identifier);
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SettingItemViewModel"/> class.
        /// </summary>
        /// <param name="info"></param>
        /// <param name="setting"></param>
        public SettingItemViewModel(SettingInfo info, SettingItem setting)
        {
            Assertions.AssertNotNull(info, "info");
            Assertions.AssertNotNull(setting, "setting");

            Info = info;
            Setting = setting;

            // Find out editor
            string editorName = Editor;
            if (string.IsNullOrWhiteSpace(editorName))
            {
                editorName = Setting.SettingType.FullName;
            }

            this.TypeEditor = TypeEditors.TypeEditorCache.CreateTypeEditor(editorName);
            this.TypeEditor.Initialize(this.EditorParameter);
            try
            {
                this.TypeEditor.Value = Setting.Value;
            }
            catch (Exception ex)
            {
                Logger.Instance.LogFormat(LogType.Warning, this, Properties.Resources.SettingItemViewModelSetSettingError, Info.Name, Info.Identifier);
                Logger.Instance.LogException(this, ex);

                Setting.ResetValue();
                this.TypeEditor.Value = Setting.Value;
            }
        }
        internal void Add(SettingInfo info, SettingItem setting)
        {
            string categoryText = GetCategoryText(info.Category);

            CategoryViewModel cvm = CategoryItems.Find(c => c.Category == categoryText);
            if (cvm == null)
            {
                cvm = new CategoryViewModel();
                cvm.Category = categoryText;
                CategoryItems.Add(cvm);
            }

            cvm.SettingItems.Add(new SettingItemViewModel(info, setting));
        }