Пример #1
0
        private void CheckForMissingVersions()
        {
            var requiredVersions = GenComposer.GetAllRequiredVersions(GetUserSelection());
            var missingVersions  = new List <RequiredVersionInfo>();

            foreach (var requiredVersion in requiredVersions)
            {
                var requirementInfo = RequiredVersionService.GetVersionInfo(requiredVersion);
                var isInstalled     = RequiredVersionService.Instance.IsVersionInstalled(requirementInfo);
                if (!isInstalled)
                {
                    missingVersions.Add(requirementInfo);
                }
            }

            if (missingVersions.Any())
            {
                var missingSdkVersions = missingVersions.Select(v => RequiredVersionService.GetRequirementDisplayName(v));

                var notification = Notification.Warning(string.Format(StringRes.NotificationMissingVersions, missingSdkVersions.Aggregate((i, j) => $"{i}, {j}")), Category.MissingVersion, TimerType.None);
                NotificationsControl.AddNotificationAsync(notification).FireAndForget();
            }
            else
            {
                NotificationsControl.CleanCategoryNotificationsAsync(Category.MissingVersion).FireAndForget();
            }
        }
Пример #2
0
        private async Task <IEnumerable <SavedTemplateViewModel> > RemoveAsync(SavedTemplateViewModel savedTemplate)
        {
            // Look if is there any templates that depends on item
            var dependencies = GetSavedTemplateDependencies(savedTemplate);

            if (!dependencies.Any())
            {
                var group = GetGroup(savedTemplate.TemplateType);
                if (group.Items.Contains(savedTemplate))
                {
                    group.Remove(savedTemplate);
                }

                if (savedTemplate.HasErrors)
                {
                    await NotificationsControl.CleanErrorNotificationsAsync(ErrorCategory.NamingValidation);

                    WizardStatus.Current.HasValidationErrors = false;
                }

                var template = MainViewModel.Instance.GetTemplate(savedTemplate.Template);
                template?.DecreaseSelection();

                await TryRemoveHiddenDependenciesAsync(savedTemplate);

                UpdateHasItemsAddedByUser();

                BuildLicenses();
                CheckForMissingVersions();

                AppHealth.Current.Telemetry.TrackEditSummaryItemAsync(EditItemActionEnum.Remove).FireAndForget();
            }

            return(dependencies);
        }
Пример #3
0
        private async void OnSyncStatusChanged(object sender, SyncStatusEventArgs args)
        {
            var notification = args.GetNotification();

            if (notification?.Category == Category.TemplatesSync)
            {
                await NotificationsControl.AddOrUpdateNotificationAsync(notification);
            }
            else
            {
                await NotificationsControl.AddNotificationAsync(notification);
            }

            if (args.Status == SyncStatus.NoUpdates || args.Status == SyncStatus.Ready)
            {
                NotificationsControl.RemoveNotification();
            }

            if (args.Status == SyncStatus.Updated || args.Status == SyncStatus.Ready)
            {
                WizardStatus.SetVersions();

                await OnTemplatesAvailableAsync();
            }
        }
        private void BeginStoryboard()
        {
            Storyboard story = NotificationsControl.FindResource("MovieStoryboard") as Storyboard;

            story.Stop();
            ThicknessAnimation anim       = (ThicknessAnimation)story.Children[0];
            Thickness          fromPosion = new Thickness(0, 100, 0, 0);
            Thickness          toPosion   = new Thickness(0, 0, 0, 0);

            if (MainWin != null)
            {
                if (MainWin.WindowState == System.Windows.WindowState.Maximized)
                {
                    fromPosion = new Thickness(0, 100, 0, 0);
                    toPosion   = new Thickness(0, 0, 0, 0);
                }
                else
                {
                    toPosion   = new Thickness(0, 0, 0, 0);
                    fromPosion = new Thickness(0, 100, 0, 0);
                }
            }

            anim.From     = fromPosion;
            anim.To       = toPosion;
            anim.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
            story.Begin(this, true);
        }
Пример #5
0
        private async Task ShowDependencyNotificationAsync(string name, IEnumerable <string> dependencyNames)
        {
            var allDependencyNames = ConcatTemplateNames(dependencyNames);

            var message      = string.Format(StringRes.NotificationRemoveError_Dependency, name, allDependencyNames);
            var notification = Notification.Warning(message, Category.RemoveTemplateValidation);
            await NotificationsControl.AddNotificationAsync(notification);
        }
Пример #6
0
        private async Task ShowRemoveRequirementNotificationAsync(string name, IEnumerable <string> requiredForNames)
        {
            var allRequiredForNames = ConcatTemplateNames(requiredForNames);

            var message = string.Format(StringRes.NotificationRemoveError_Requirement, name, allRequiredForNames);

            var notification = Notification.Warning(message, Category.RemoveTemplateValidation);
            await NotificationsControl.AddNotificationAsync(notification);
        }
Пример #7
0
        private async Task ShowAddTemplateExclusionsNotificationAsync(string name, IEnumerable <string> exludedTemplateNames)
        {
            var allExludedTemplateNames = ConcatTemplateNames(exludedTemplateNames);

            var message = string.Format(StringRes.NotificationAdditionError_Exclusion, name, allExludedTemplateNames);

            var notification = Notification.Warning(message, Category.AddTemplateValidation);
            await NotificationsControl.AddNotificationAsync(notification);
        }
Пример #8
0
 private void ValidateProjectPaths()
 {
     if (GenContext.Current.ProjectName != new DirectoryInfo(GenContext.Current.DestinationPath).Name)
     {
         var notification = Notification.Error(StringRes.NotificationValidationError_ProjectNameAndPathDoNotMatch, ErrorCategory.ProjectPathValidation);
         NotificationsControl.AddNotificationAsync(notification).FireAndForget();
         ChangesSummary.DoNotMerge          = true;
         ChangesSummary.IsDoNotMergeEnabled = false;
     }
     else
     {
         ChangesSummary.DoNotMerge          = false;
         ChangesSummary.IsDoNotMergeEnabled = true;
     }
 }
Пример #9
0
        private void CheckForMissingSdks()
        {
            var sdks = GenComposer.GetAllRequiredSdks(GetUserSelection());

            var missingSdks = sdks.Where(sdk => !GenContext.ToolBox.Shell.IsSdkInstalled(sdk)).Select(sdk => Regex.Match(sdk, @"\d+(\.\d+)+").Value);

            if (missingSdks.Any())
            {
                var notification = Notification.Warning(string.Format(StringRes.NotificationMissingSdk, missingSdks.Aggregate((i, j) => $"{i},{j}")), Category.MissingSdk, TimerType.None);
                NotificationsControl.AddNotificationAsync(notification).FireAndForget();
            }
            else
            {
                NotificationsControl.CleanCategoryNotificationsAsync(Category.MissingSdk).FireAndForget();
            }
        }
Пример #10
0
        private async Task <bool> IsStepAvailableAsync(StepData step)
        {
            if (step.Id == NewItemStepChangesSummary && !WizardStatus.HasValidationErrors)
            {
                _output = await CleanupAndGenerateNewItemAsync();

                if (!_output.HasChangesToApply)
                {
                    var message = GetNewItemHasNoChangesMessage(TemplateType);
                    message = string.Format(message, TemplateSelection.Name);
                    var notification = Notification.Warning(message, Category.RightClickItemHasNoChanges);
                    NotificationsControl.AddNotificationAsync(notification).FireAndForget();
                }

                return(_output.HasChangesToApply);
            }

            return(true);
        }
        protected override async Task <bool> IsStepAvailableAsync(int step)
        {
            if (step == 1 && !WizardStatus.HasValidationErrors)
            {
                _output = await CleanupAndGenerateNewItemAsync();

                if (!_output.HasChangesToApply)
                {
                    var message = TemplateType == TemplateType.Page ? StringRes.NewItemHasNoChangesPage : StringRes.NewItemHasNoChangesFeature;
                    message = string.Format(message, TemplateSelection.Name);
                    var notification = Notification.Warning(message, Category.RightClickItemHasNoChanges);
                    NotificationsControl.AddNotificationAsync(notification).FireAndForget();
                }

                return(_output.HasChangesToApply);
            }

            return(await base.IsStepAvailableAsync(step));
        }
        private async Task ShowDependencyNotificationAsync(string name, IEnumerable <string> dependencyNames)
        {
            var dependencyNamesFormated = string.Empty;

            foreach (var dependencyName in dependencyNames.Take(3))
            {
                dependencyNamesFormated += $" **{dependencyName}**,";
            }

            dependencyNamesFormated = dependencyNamesFormated.Remove(dependencyNamesFormated.Length - 1);
            if (dependencyNames.Count() > 3)
            {
                dependencyNamesFormated += "...";
            }

            var message      = string.Format(StringRes.NotificationRemoveError_Dependency, name, dependencyNamesFormated);
            var notification = Notification.Warning(message, Category.RemoveTemplateValidation);
            await NotificationsControl.AddNotificationAsync(notification);
        }
Пример #13
0
        protected async Task OnRefreshTemplatesAsync()
        {
            try
            {
                WizardStatus.IsLoading = true;
                await GenContext.ToolBox.Repo.RefreshAsync(true);
            }
            catch (Exception ex)
            {
                await NotificationsControl.AddNotificationAsync(Notification.Error(StringRes.NotificationSyncError_Refresh));

                await AppHealth.Current.Error.TrackAsync(ex.ToString());

                await AppHealth.Current.Exception.TrackAsync(ex);
            }
            finally
            {
                WizardStatus.IsLoading = GenContext.ToolBox.Repo.SyncInProgress;
            }
        }
Пример #14
0
 private void OnUnloaded(object sender, RoutedEventArgs e)
 {
     ViewModel.UnsubscribeEventHandlers();
     NotificationsControl.UnsubscribeEventHandlers();
 }
Пример #15
0
 private async Task ShowReadOnlyNotificationAsync(string name)
 {
     var message      = string.Format(StringRes.NotificationRemoveError_ReadOnly, name);
     var notification = Notification.Warning(message, Category.RemoveTemplateValidation);
     await NotificationsControl.AddNotificationAsync(notification);
 }