private static void Main(string[] args) { var builder = new ContainerBuilder(); builder.RegisterModule(new TagsCloudModule()); var container = builder.Build(); Parser.Default.ParseArguments <InputOptions>(args).WithParsed(opts => { ITagsCloudLayouter selectedLayouter = default; ITagsCloudRenderer selectedRenderer = default; IFilter[] selectedFilters = default; if (DetermineLayouter(opts, container) .Then(layouter => selectedLayouter = layouter) .Then(layouter => DetermineRenderer(opts, container)) .Then(renderer => selectedRenderer = renderer) .Then(renderer => DetermineFilters(opts, container)) .Then(filters => { selectedFilters = filters; var wordsLoader = container.Resolve <WordsLoader>(); return(wordsLoader.LoadWords(opts.InputFile)); }) .Then(words => { var wordsFilterer = container.Resolve <WordsFilterer>(new NamedParameter("filters", selectedFilters)); return(wordsFilterer.FilterWords(words)); }) .Then(filteredWords => { var tagCloud = container.Resolve <TagsCloudGenerator>( new NamedParameter("layouter", selectedLayouter), new NamedParameter("renderer", selectedRenderer)); return(tagCloud.GenerateCloud(filteredWords)); }) .Then(image => { var imageSaveHelper = container.Resolve <ImageSaveHelper>(); return(imageSaveHelper.SaveTo(image, opts.OutputFile)); }) .OnFail(msg => Console.Error.WriteLine(msg)) .IsSuccess) { Console.WriteLine("OK"); } }); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); }
public TagsCloudContainerApplication (IWordsReader reader, FormattingComponent formattingComponent, FilteringComponent filteringComponent, IWordsSizer wordsSizer, ITagsCloudRenderer renderer, IColorManager colorManager, IBoringWordsRepository boringWordsRepository, ITagsCloudFactory tagsCloudFactory, ITagsCloudLayouterFactory layouterFactory) { this.reader = reader; this.formattingComponent = formattingComponent; this.filteringComponent = filteringComponent; this.renderer = renderer; this.colorManager = colorManager; this.boringWordsRepository = boringWordsRepository; this.wordsSizer = wordsSizer; this.tagsCloudFactory = tagsCloudFactory; this.layouterFactory = layouterFactory; }
private void PrepareRendersMenu() { ComboBoxRenders.ItemsSource = knownRenderers.OrderBy(d => d.GetType().Name).Select(renderer => new KeyValuePair <ITagsCloudRenderer, string>(renderer, renderer.GetType().Name)); ComboBoxRenders.DisplayMemberPath = "Value"; ComboBoxRenders.SelectionChanged += (sender, e) => { if (sender is ComboBox comboBox && comboBox.SelectedValue is KeyValuePair <ITagsCloudRenderer, string> kv) { selectedRenderer = kv.Key; } if (selectedRenderer == null) { return; } FillPropertiesPanel(selectedRenderer, RenderSettingsPanel); }; ComboBoxRenders.SelectedIndex = 0; }
public TagsCloudGenerator(ITagsCloudLayouter layouter, ITagsCloudRenderer renderer) { this.layouter = layouter; this.renderer = renderer; }