コード例 #1
0
        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}");
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public IPluginParameter GetParam(ePluginParameterID name)
 {
     return(_ListSettings.First(x => x.ID == name));
 }
コード例 #4
0
 public T GetParamValue <T>(ePluginParameterID name)
 {
     return(_ListSettings.First(x => x.ID == name).GetValue <T>());
 }
コード例 #5
0
 public PluginParameterList(ePluginParameterID parameterName, int defaultValue, Type ListType) : base(parameterName, defaultValue)
 {
     ListItems      = Helper.GetTypeDescriptions(ListType);
     ParamterUIType = ePluginParameterUIType.List;
 }