public MegaSolutionWizardPresenter(KickstartWizardModel kickstartWizard, IKickstartService kickstartService, IKickstartWizardService kickstartWizardService, IMessageBoxDisplayService messageBoxDisplayService, IKickstartWizardView kickstartWizardView, IMenuView menuView, IProjectView projectView, IProtoFileView protoFileView, IDatabaseSqlView databaseSqlView, IGenerationView generationView, IProtoToKProtoConverter protoToKProtoConverter) { _kickstartService = kickstartService; _kickstartWizardService = kickstartWizardService; _messageBoxDisplayService = messageBoxDisplayService; _kickstartWizardView = kickstartWizardView; _menuView = menuView; _protoFileView = protoFileView; _databaseSqlView = databaseSqlView; _generationView = generationView; _projectView = projectView; _protoToKProtoConverter = protoToKProtoConverter; kickstartWizardView.Load += KickstartWizardViewLoad; kickstartWizardView.NextClicked += KickstartWizardViewNextClicked; kickstartWizardView.PreviousStep += KickstartWizardViewPreviousStep; protoFileView.ProtoTextChanged += ProtoFileViewProtoTextChanged; databaseSqlView.GenerateStoredProcAsEmbeddedQueryChanged += (a, b) => { _kickstartWizardModel.GenerateStoredProcAsEmbeddedQuery = _databaseSqlView.GenerateStoredProcAsEmbeddedQuery; return(Task.CompletedTask); }; databaseSqlView.SqlStoredProcTextChanged += (a, b) => { _kickstartWizardModel.SqlStoredProcText = _databaseSqlView.SqlStoredProcText; return(Task.CompletedTask); }; databaseSqlView.SqlTableTextChanged += (a, b) => { _kickstartWizardModel.SqlTableText = _databaseSqlView.SqlTableText; return(Task.CompletedTask); }; databaseSqlView.SqlTableTypeTextChanged += (a, b) => { _kickstartWizardModel.SqlTableTypeText = _databaseSqlView.SqlTableTypeText; return(Task.CompletedTask); }; _kickstartWizardModel = kickstartWizard; kickstartWizardView.AddView(menuView); kickstartWizardView.AddView(protoFileView); kickstartWizardView.AddView(databaseSqlView); kickstartWizardView.AddView(generationView); //where should this go in MVP ? _projectView.SolutionName = _kickstartWizardModel.SolutionName; _projectView.CompanyName = _kickstartWizardModel.CompanyName; _projectView.ProjectName = _kickstartWizardModel.ProjectName; }
public void RunStarted(object automationObject, Dictionary <string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) { var resultOfPrompt = MessageBox.Show("Use winforms?", "", MessageBoxButtons.YesNo); AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve; _dte = (DTE)automationObject; _projectDirectory = replacementsDictionary["$destinationdirectory$"]; var serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(); //var logger = new LoggerConfiguration() // .CreateLogger(); var configuration = new ConfigurationBuilder() .AddJsonFile(Path.Combine(AssemblyDirectory, "appsettings.json"), false) .Build(); serviceCollection.AddSingleton(configuration); //serviceCollection.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); //serviceCollection.AddSingleton(typeof(Serilog.ILogger), logger); var serviceProvider = serviceCollection.ConfigureContainer(); var loggerFactory = serviceProvider.GetService <ILoggerFactory>(); ConfigureLogger(loggerFactory); var prereqChecker = serviceProvider.GetService <IPrereqChecker>(); if (!prereqChecker.CheckGrpcNugets()) { MessageBox.Show("Grpc tools (Nugets) have not been installed"); throw new WizardBackoutException(); } _kickstartWizardPresenter = serviceProvider.GetRequiredService <IKickstartWizardPresenter>(); var kickstartService = serviceProvider.GetRequiredService <IKickstartService>(); //List<KSolutionGroup> unfiliteredSolutionGroupList = service.GetSolutionGroupListFromCode(); ; //pass1 //read metadata from code/sql/proto files into K objects //unfiliteredSolutionGroupList = service.GetSolutionGroupListFromExcel(); var kickstartWizard = new KickstartWizardModel() { SolutionName = replacementsDictionary["$specifiedsolutionname$"], CompanyName = "Company", ProjectName = replacementsDictionary["$specifiedsolutionname$"], // _dialog.AvailableTemplateSolutions = unfiliteredSolutionGroupList.SelectMany(g => g.Solution).ToList(); ProjectDirectory = _projectDirectory }; if (resultOfPrompt == DialogResult.Yes) { _dialog = new KickstartWizardDialog(); } else { _dialog = new KickstartWizardDialogWeb(); } var menuView = new MenuStep(); menuView.Tag = new MenuPresenter(kickstartWizard, menuView); /* _kickstartWizardPresenter = new KickstartWizardPresenter(kickstartWizard, kickstartService, * new KickstartWizardService( new ProtoToKProtoConverter(configuration), new SProtoFileToProtoFileConverter(), new KDataLayerProjectToKProtoFileConverter(), new DbToKSolutionConverter(new SqlServerTableTypeReader(), new SqlServerTableReader(), new SqlServerTableToCTableConverter(), new SqlServerViewReader(), new SqlServerViewToCViewConverter()), new DataLayerServiceFactory(null)), * new MessageBoxDisplayService(), _dialog, menuView, _dialog.ProjectView, new ProtoFileStep(), new DatabaseSqlStep(), new GenerationStep(), new ProtoToKProtoConverter(configuration) ); */ _dialog.Tag = _kickstartWizardPresenter; var exclusiveProject = Boolean.Parse(replacementsDictionary["$exclusiveproject$"]); var parentWindow = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle; // Control.FromHandle(new IntPtr(_dte.ActiveWindow.HWnd)); var result = (DialogResult)_dialog.ShowDialog(parentWindow); if (result == DialogResult.Cancel) { throw new WizardBackoutException(); } replacementsDictionary["$specifiedsolutionname$"] = kickstartWizard.SolutionName; if (exclusiveProject) { if (kickstartWizard.SelectedTemplateSolutions.Count > 1 || kickstartWizard.SelectedTemplateSolutions.Count > 1) { //open the root "master" solution var solutionName = $"{kickstartWizard.SolutionName}.sln"; var fullSolutionPath = Path.Combine(kickstartWizard.ProjectDirectory, solutionName); _dte.Solution.Open(fullSolutionPath); } else { _dte.Solution.Open(kickstartWizard.SelectedTemplateSolutions.First().GeneratedSolution.SolutionPath); } } else { foreach (var solution2 in kickstartWizard.SelectedTemplateSolutions) { foreach (var project in solution2.GeneratedSolution.Project) { try { _dte.Solution.AddFromFile(project.Path); } catch { } } } } throw new WizardCancelledException(); }