public PluginParameter(ePluginParameterID parameterName, T DefaultValue) { Seri.Log.Here().Verbose($"Настройка параметра {parameterName}"); ID = parameterName; var ConstantName = parameterName.ToString(); try { // Создаём параметр в настройках приложения if (Properties.Settings.Default.Properties[ConstantName] == null) { // Создаём атрибут, что это пользовательский параметр SettingsAttributeDictionary Attributes = new SettingsAttributeDictionary(); Attributes.Add(typeof(UserScopedSettingAttribute), new UserScopedSettingAttribute()); // Провайдер по умолчанию где будет сохранены настройки var provider = Properties.Settings.Default.Providers["LocalFileSettingsProvider"]; // Создаем параметр var ParamSettingsProperty = new SettingsProperty(ConstantName, typeof(T), provider, false, DefaultValue, SettingsSerializeAs.String, Attributes, false, false); // Добавляем в настройки Properties.Settings.Default.Properties.Add(ParamSettingsProperty); // Создаём значение параметра var ParamSettingsPropertyValue = new SettingsPropertyValue(ParamSettingsProperty); // Добавляем в настройки Properties.Settings.Default.PropertyValues.Add(ParamSettingsPropertyValue); // Перезагружаем настройки. Так как мы добавили параметр, он теперь считается из файла настроек с диска (или возьмет значение по умолчанию) Properties.Settings.Default.Reload(); } Value = (T)Properties.Settings.Default[ConstantName]; } catch (Exception ex) { Seri.LogException(ex); throw ex; } if (typeof(T) == typeof(string)) { ParamterUIType = ePluginParameterUIType.Text; } else if (typeof(T) == typeof(bool)) { ParamterUIType = ePluginParameterUIType.CheckBox; } else if (typeof(T) == typeof(int)) { ParamterUIType = ePluginParameterUIType.Number; } Seri.Log.Here().Verbose($"Значение параметра {ID}: {Value}"); }
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values[1] == DependencyProperty.UnsetValue) { return(true); } ePluginParameterID Parent = (ePluginParameterID)values[1]; if (Parent == ePluginParameterID.NULL) { return(true); } IEnumerable Group = values[0] as IEnumerable; string exceptedStringValue = (string)values[2]; bool LoopFlag = false; while (!LoopFlag) { LoopFlag = true; // Ищем параметр родителя foreach (ParameterViewModel item in Group) { // Если нашли проверяем его if (item.ID == Parent) { if (item.ValueString != exceptedStringValue) { return(false); } else if (item.ParentParameterID == ePluginParameterID.NULL) { return(true); } else { // Родитель включен и сам имеет параметр родителя, поднимаемся выше Parent = item.ParentParameterID; exceptedStringValue = item.ParentParameterStringValue; LoopFlag = false; break; } } } } return(true); }
public IPluginParameter GetParam(ePluginParameterID name) { return(_ListSettings.First(x => x.ID == name)); }
public T GetParamValue <T>(ePluginParameterID name) { return(_ListSettings.First(x => x.ID == name).GetValue <T>()); }
public PluginParameterList(ePluginParameterID parameterName, int defaultValue, Type ListType) : base(parameterName, defaultValue) { ListItems = Helper.GetTypeDescriptions(ListType); ParamterUIType = ePluginParameterUIType.List; }