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)); }