Beispiel #1
0
        private SolutionVariantData CreateSolutionVariant(SolutionVariant solutionVariant, string destinationFolder)
        {
            SolutionVariantData solutionVariantData = new SolutionVariantData
            {
                ContainerName = solutionVariant.ContainerName,
                Items = solutionVariant.SolutionTemplateInfo.Items
                    .Select(info => CreateSolutionItemData(info, destinationFolder))
                    .ToArray()
            };

            return solutionVariantData;
        }
Beispiel #2
0
        private void CreateSolution(SolutionVariantData solutionVariantData, SolutionDataViewModel solutionData)
        {
            var solution = GetSolution();

            var waitViewModel = new WaitViewModel();
            var window = WpfServices.CreateWindow<WaitView>(waitViewModel);
            WpfServices.SetWindowOwner(window, solution.DTE.MainWindow);
            waitViewModel.Completed += async (s, a) =>
            {
                await window.Dispatcher.InvokeAsync(() =>
                {
                    window.DialogResult = !a.Cancelled && a.Error == null;
                });
            };
            waitViewModel.Caption = "Creating solution...";
            waitViewModel.Run((p, ct) =>
            {
                int count = solutionVariantData.Items.Length;
                double k = 1.0/count;
                for (int i = 0; i < count; ++i)
                {
                    var pr = k*i;
                    p.Report(pr);
                    int j = i;
                    CreateSolutionItem(
                        null,
                        solutionVariantData.Items[i], progress =>
                        {
                            pr = k*j + progress*k;
                            p.Report(pr);
                        },
                        solutionData,
                        ct);
                    ct.ThrowIfCancellationRequested();
                }
            });
            var retVal = window.ShowDialog() ?? false;

            if (!retVal)
            {
                throw new WizardCancelledException();
            }
        }