示例#1
0
 public static IFormBuilder <TForm, TControl> ApplyTheme <TForm, TControl>(this IFormBuilder <TForm, TControl> builder, ITheme theme)
     where TForm : BaseForm
     where TControl : BaseControl
 {
     builder.ConfigureForm(form => form.ApplyTheme(theme));
     return(builder);
 }
示例#2
0
 public void Add(
     IFormBuilder form, IDamageRelatedStatBuilder stat,
     IDamageRelatedStatBuilder vp1, IDamageRelatedStatBuilder vp2, IDamageRelatedStatBuilder vp3,
     Func <IStatBuilder, IStatBuilder, IStatBuilder, IValueBuilder> value)
 {
     Add(form, stat, new[] { vp1, vp2, vp3 }, ss => value(ss[0], ss[1], ss[2]));
 }
示例#3
0
 public void Add(
     IFormBuilder form, Func <DamageType, IDamageRelatedStatBuilder> stat,
     Func <DamageType, IDamageRelatedStatBuilder> vp,
     Func <DamageType, IStatBuilder, IValueBuilder> value)
 {
     Add(form, stat, a => new[] { vp(a) }, (a, ss) => value(a, ss.Single()));
 }
示例#4
0
 public static Form CreateForm(IFormBuilder builder)
 {
     builder.InitializePrimarySource();
     builder.InitializeSecondarySource();
     builder.InitializeCommands();
     return(builder.GetForm);
 }
示例#5
0
 public void Add(
     IFormBuilder form, Func <DamageType, IDamageRelatedStatBuilder> stat,
     Func <DamageType, IDamageRelatedStatBuilder> vp1, Func <DamageType, IDamageRelatedStatBuilder> vp2,
     Func <DamageType, IStatBuilder, IStatBuilder, IValueBuilder> value)
 {
     Add(form, stat, dt => new[] { vp1(dt), vp2(dt) }, (dt, ss) => value(dt, ss[0], ss[1]));
 }
示例#6
0
        public static async Task <IFormBuilder <T> > Field <T>(this IFormBuilder <T> builder, string name, Func <Task <string> > prompt, ActiveDelegate <T> active = null, ValidateAsyncDelegate <T> validate = null)
            where T : class
        {
            string prmpt = await prompt();

            return(builder.Field(name, prmpt, active, validate));
        }
 private IntermediateModifierEntry(IFormBuilder form, IStatBuilder stat, IValueBuilder value, 
     IConditionBuilder condition)
 {
     Form = form;
     Stat = stat;
     Value = value;
     Condition = condition;
 }
示例#8
0
 public static IFormBuilder <TControl> SetTitleBar <TControl>(this IFormBuilder <TControl> builder,
                                                              bool showTitle, bool showClose)
     where TControl : BaseControl
 {
     builder.Configure(control => control.ParentForm.ShowTitle = showTitle);
     builder.Configure(control => control.ParentForm.ShowClose = showClose);
     return(builder);
 }
示例#9
0
 public void Add(
     IFormBuilder form, Func <Ailment, IDamageRelatedStatBuilder> stat,
     Func <Ailment, IDamageRelatedStatBuilder> vp1, Func <Ailment, IDamageRelatedStatBuilder> vp2,
     Func <Ailment, IDamageRelatedStatBuilder> vp3,
     Func <Ailment, IStatBuilder, IStatBuilder, IStatBuilder, IValueBuilder> value)
 {
     Add(form, stat, a => new[] { vp1(a), vp2(a), vp3(a) }, (a, ss) => value(a, ss[0], ss[1], ss[2]));
 }
 public IntermediateModifierEntry WithForm(IFormBuilder form)
 {
     if (Form != null && form != null)
     {
         throw new InvalidOperationException(nameof(WithForm) + " must not be called multiple times");
     }
     return(new IntermediateModifierEntry(form, Stat, Value, Condition));
 }
        public void Add([RegexPattern] string regex, IFormBuilder form, IValueBuilder value)
        {
            var builder = ModifierBuilder
                          .WithForm(form)
                          .WithValue(value);

            Add(regex, builder);
        }
 private static IntermediateModifierEntry CreateFilledEntry(
     IFormBuilder form           = null, IStatBuilder stat = null, IValueBuilder value = null,
     IConditionBuilder condition = null)
 => new IntermediateModifierEntry(
     form ?? Mock.Of <IFormBuilder>(),
     stat ?? Mock.Of <IStatBuilder>(),
     value ?? Mock.Of <IValueBuilder>(),
     condition ?? Mock.Of <IConditionBuilder>());
        public void Add([RegexPattern] string regex, IFormBuilder form, double value)
        {
            var builder = ModifierBuilder
                          .WithForm(form)
                          .WithValue(_valueFactory.Create(value));

            Add(regex, builder);
        }
示例#14
0
        public IForm <T> Build(Assembly resourceAssembly = null, string resourceName = null)
        {
            if (!_form._steps.Any((step) => step.Type == StepType.Field))
            {
                var paths = new List <string>();
                FormBuilder <T> .FieldPaths(typeof(T), "", paths);

                IFormBuilder <T> builder = this;
                foreach (var path in paths)
                {
                    builder.Field(new FieldReflector <T>(path));
                }
                builder.Confirm(new PromptAttribute(_form.Configuration.Template(TemplateUsage.Confirmation)));
            }
            if (resourceAssembly == null)
            {
                resourceAssembly = typeof(T).Assembly;
            }
            if (resourceName == null)
            {
                resourceName = typeof(T).FullName;
            }
            var lang = resourceAssembly.GetCustomAttribute <NeutralResourcesLanguageAttribute>();

            if (lang != null && !string.IsNullOrWhiteSpace(lang.CultureName))
            {
                try
                {
                    IEnumerable <string> missing, extra;
                    string name = null;
                    foreach (var resource in resourceAssembly.GetManifestResourceNames())
                    {
                        if (resource.Contains(resourceName))
                        {
                            var pieces = resource.Split('.');
                            name = string.Join(".", pieces.Take(pieces.Count() - 1));
                            break;
                        }
                    }
                    if (name != null)
                    {
                        var rm = new ResourceManager(name, resourceAssembly);
                        var rs = rm.GetResourceSet(Thread.CurrentThread.CurrentUICulture, true, true);
                        _form.Localize(rs.GetEnumerator(), out missing, out extra);
                        if (missing.Any())
                        {
                            throw new MissingManifestResourceException($"Missing resources {missing}");
                        }
                    }
                }
                catch (MissingManifestResourceException)
                {
                    // Resource was not localized
                }
            }
            Validate();
            return(this._form);
        }
        public void Add(IEffectBuilder effect, IFormBuilder form, IStatBuilder stat, IValueBuilder value)
        {
            var builder = _modifierBuilder
                          .WithForm(form)
                          .WithStat(effect.AddStat(stat))
                          .WithValue(value);

            _data.Add(builder.Build());
        }
示例#16
0
        public void Add(IEffectBuilder effect, IFormBuilder form, IStatBuilder stat, double value)
        {
            var builder = _modifierBuilder
                          .WithForm(form)
                          .WithStat(effect.AddStat(stat))
                          .WithValue(_valueFactory.Create(value));

            _data.Add(builder.Build());
        }
        /// <summary>
        /// Adds a matcher with a form, value and one or more stats.
        /// </summary>
        public void Add([RegexPattern] string regex, IFormBuilder form, double value, IEnumerable <IStatBuilder> stats)
        {
            var builder = ModifierBuilder
                          .WithForm(form)
                          .WithValue(_valueFactory.Create(value))
                          .WithStats(stats.ToList());

            Add(regex, builder);
        }
示例#18
0
        public IFormBuilder <T> Confirm(string prompt, ActiveDelegate <T> condition = null, IEnumerable <string> dependencies = null)
        {
            IFormBuilder <T> builder = this;

            return(builder.Confirm(new PromptAttribute(prompt)
            {
                ChoiceFormat = Resources.ConfirmChoiceFormat, AllowDefault = BoolDefault.False
            }, condition, dependencies));
        }
示例#19
0
        private static IEnumerable <Modifier> CreateModifier(
            IStatBuilder statBuilder, IFormBuilder formBuilder, IValueBuilder valueBuilder)
        {
            var statBuilderResults = statBuilder.Build(default(BuildParameters).With(new ModifierSource.Global()));

            var(form, formValueConverter) = formBuilder.Build();
            foreach (var(stats, source, statValueConverter) in statBuilderResults)
            {
                var value = formValueConverter(statValueConverter(valueBuilder)).Build(default);
示例#20
0
        private static Modifier CreateModifier(
            IStatBuilder statBuilder, IFormBuilder formBuilder, IValueBuilder valueBuilder)
        {
            var(stats, sourceConverter, statValueConverter) = statBuilder.Build();
            var(form, formValueConverter) = formBuilder.Build();
            var value = formValueConverter(statValueConverter(valueBuilder)).Build();

            return(new Modifier(stats, form, value, sourceConverter(new ModifierSource.Global())));
        }
 private void AddForSkillAndAilments(GivenStatCollection collection,
                                     IFormBuilder form, IDamageRelatedStatBuilder stat, IDamageRelatedStatBuilder valueStat)
 {
     collection.Add(form, stat.WithSkills, valueStat.WithSkills.Value);
     foreach (var ailment in Enums.GetValues <Ailment>())
     {
         var ailmentBuilder = Ailment.From(ailment);
         collection.Add(form, stat.With(ailmentBuilder), valueStat.With(ailmentBuilder).Value);
     }
 }
        /// <summary>
        /// Adds a substituting matcher with a form, value and stat.
        /// </summary>
        public void Add([RegexPattern] string regex, IFormBuilder form, IValueBuilder value, IStatBuilder stat,
                        string substitution)
        {
            var builder = ModifierBuilder
                          .WithForm(form)
                          .WithValue(value)
                          .WithStat(stat);

            Add(regex, builder, substitution);
        }
        /// <summary>
        /// Adds a matcher with a form, value and stats.
        /// </summary>
        public void Add(
            [RegexPattern] string regex, IFormBuilder form, IValueBuilder value, params IStatBuilder[] stats)
        {
            var builder = ModifierBuilder
                          .WithForm(form)
                          .WithStats(stats)
                          .WithValue(value);

            Add(regex, builder);
        }
示例#24
0
        /// <summary>
        /// Define a step for filling in a particular value in the form state.
        /// </summary>
        /// <param name="builder">Form builder.</param>
        /// <param name="name">Path in the form state to the value being filled in.</param>
        /// <param name="active">Delegate to test form state to see if step is active.</param>
        /// <param name="validate">Delegate to validate the field value.</param>
        /// <remarks>
        /// This step will use reflection to construct everything needed for a dialog from a combination
        /// of the <see cref="DescribeAttribute"/>, <see cref="TermsAttribute"/>, <see cref="PromptAttribute"/>, <see cref="OptionalAttribute"/>
        /// <see cref="NumericAttribute"/> and <see cref="TemplateAttribute"/> annotations that are supplied by default or you
        /// override.
        /// </remarks>
        /// <returns>This form.</returns>
        public static IFormBuilder <T> Field <T>(this IFormBuilder <T> builder, string name, ActiveDelegate <T> active = null, ValidateAsyncDelegate <T> validate = null)
            where T : class
        {
            var field = (active == null ? new FieldReflector <T>(name) : new Conditional <T>(name, active));

            if (validate != null)
            {
                field.SetValidate(validate);
            }
            return(builder.Field(field));
        }
    public static IForm <AdaptiveCardsFormFlow> BuildForm()
    {
        IFormBuilder <AdaptiveCardsFormFlow> formBuilder = GetFormbuilder();

        var built = formBuilder
                    .Field(nameof(Name), "What is your name?")
                    .Field(nameof(RequestedDate))
                    .Confirm("Is this information correct? {*}")
                    .Build();

        return(built);
    }
        public static IFormBuilder <T> DateTimeRangeField <T>(this IFormBuilder <T> formBuilder, string name, ActiveDelegate <T> active = null, ValidateAsyncDelegate <T> validate = null)
            where T : class
        {
            var prompt = typeof(T).GetProperty(name).GetCustomAttributes(typeof(PromptAttribute), false).Cast <PromptAttribute>().First();

            return(formBuilder.Field(new FieldReflector <T>(name)
                                     .SetType(typeof(string))
                                     .SetPrompt(prompt)
                                     .SetFieldDescription(name)
                                     .SetActive(active)
                                     .SetValidate(validate)));
        }
示例#27
0
 public void Add(
     IFormBuilder form, Func <Ailment, DamageType, IDamageRelatedStatBuilder> stat,
     Func <Ailment, DamageType, IDamageRelatedStatBuilder> vp1,
     Func <Ailment, DamageType, IDamageRelatedStatBuilder> vp2,
     Func <IStatBuilder, IStatBuilder, IValueBuilder> value)
 {
     foreach (var ailment in Enums.GetValues <Ailment>())
     {
         Add <DamageType>(form, dt => stat(ailment, dt), dt => new[] { vp1(ailment, dt), vp2(ailment, dt) },
                          (dt, ss) => value(ss[0], ss[1]));
     }
 }
        public void Add(IFormBuilder form, IStatBuilder stat, IValueBuilder value, IConditionBuilder?condition = null)
        {
            var builder = _modifierBuilder
                          .WithForm(form)
                          .WithStat(stat)
                          .WithValue(value);

            if (condition != null)
            {
                builder = builder.WithCondition(condition);
            }
            _data.Add(builder.Build());
        }
示例#29
0
        public static IForm<ScheduleCallbackDialog> BuildForm()
        {
            IFormBuilder<ScheduleCallbackDialog> formBuilder = GetFormbuilder();

            var built = formBuilder
                .Field(nameof(Name), "What is your name?")
                .Field(nameof(PhoneNumber), "Please enter your phone number.")
                .Field(nameof(RequestedDate))
                .Confirm("Is this information correct? {*}")
                .Build();

            return built;
        }
示例#30
0
 private void Add(
     IFormBuilder form, IDamageRelatedStatBuilder stat,
     IReadOnlyList <IDamageRelatedStatBuilder> valueParameters,
     Func <IReadOnlyList <IStatBuilder>, IValueBuilder> value)
 {
     Add(form, stat.With(AttackDamageHand.MainHand),
         value(valueParameters.Select(s => s.With(AttackDamageHand.MainHand)).ToList()));
     Add(form, stat.With(AttackDamageHand.OffHand),
         value(valueParameters.Select(s => s.With(AttackDamageHand.OffHand)).ToList()));
     Add(form, stat.With(DamageSource.Spell),
         value(valueParameters.Select(s => s.With(DamageSource.Spell)).ToList()));
     Add(form, stat.With(DamageSource.Secondary),
         value(valueParameters.Select(s => s.With(DamageSource.Secondary)).ToList()));
 }
示例#31
0
 public void Initialize(IFormBuilder InstanceForm, FormStyle FS)
 {
     switch (FS)
     {
         case FormStyle.StartPage:
             break;
         case FormStyle.Histogram:
             break;
         case FormStyle.Details:
             break;
         case FormStyle.ToolBox:
             break;
         case FormStyle.PaintHandleForm:
             //InstanceForm = (PaintHandlerForm)FormCreator(FormStyle.PaintHandleForm, 0, 0, 725, 390, Color.FromArgb(45, 45, 48), ((PaintHandlerForm)InstanceForm).Text);
             DockableFormInfo DFI04 = DockContainer01Panel.Add((PaintHandlerForm)InstanceForm, zAllowedDock.All, new Guid("a6402b80-2ebd-4fd3-8930-024a6201d001"));
             DFI04.ShowContextMenuButton = false;
             if (DockContainer01Panel.GetFormInfo(StartPageForm.Instance) != null)
                 DockContainer01Panel.DockForm(DFI04, DFI01, DockStyle.Fill, zDockMode.Inner);
             else
                 DockContainer01Panel.DockForm(DFI04, DockStyle.Fill, zDockMode.Inner);
             if (!EnableActivatedEventDictionary.ContainsKey(FormStyle.PaintHandleForm))
                 EnableActivatedEventDictionary.Add(FormStyle.PaintHandleForm, 0);
             EnableActivatedEventDictionary[FormStyle.PaintHandleForm]++;
             break;
         case FormStyle.ImageHandleForm:
             //InstanceForm = (ImageHandlerForm)FormCreator(FS, 0, 0, 725, 390, Color.FromArgb(45, 45, 48), ((ImageHandlerForm)InstanceForm).Text);
             DockableFormInfo DFI05 = DockContainer01Panel.Add((ImageHandlerForm)InstanceForm, zAllowedDock.All, new Guid("a6402b80-2ebd-4fd3-8930-024a6201d001"));
             DFI05.ShowContextMenuButton = false;
             if (DockContainer01Panel.GetFormInfo(StartPageForm.Instance) != null)
                 DockContainer01Panel.DockForm(DFI05, DFI01, DockStyle.Fill, zDockMode.Inner);
             else
                 DockContainer01Panel.DockForm(DFI05, DockStyle.Fill, zDockMode.Inner);
             if (!EnableActivatedEventDictionary.ContainsKey(FormStyle.ImageHandleForm))
                 EnableActivatedEventDictionary.Add(FormStyle.ImageHandleForm, 0);
             EnableActivatedEventDictionary[FormStyle.ImageHandleForm]++;
             break;
         case FormStyle.PsdHandlerForm:
             DockableFormInfo DFI06 = DockContainer01Panel.Add((PsdHandlerForm)InstanceForm, zAllowedDock.All, new Guid("a6402b80-2ebd-4fd3-8930-024a6201d001"));
             DFI06.ShowContextMenuButton = false;
             if(DockContainer01Panel.GetFormInfo(StartPageForm.Instance) != null)
                 DockContainer01Panel.DockForm(DFI06, DFI01, DockStyle.Fill, zDockMode.Inner);
             else
                 DockContainer01Panel.DockForm(DFI06, DockStyle.Fill, zDockMode.Inner);
             if (!EnableActivatedEventDictionary.ContainsKey(FormStyle.PsdHandlerForm))
                 EnableActivatedEventDictionary.Add(FormStyle.PsdHandlerForm, 0);
             EnableActivatedEventDictionary[FormStyle.PsdHandlerForm]++;
             break;
         default:
             break;
     }
 }