Example #1
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);
        }
Example #2
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));
        }
Example #3
0
        public IForm <T> Build()
        {
            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("Is this your selection?\n{*}");
            }
            Validate();
            return(this._form);
        }