示例#1
0
        /// <summary>
        /// Called when [activated].
        /// </summary>
        /// <param name="disposables">The disposables.</param>
        protected override void OnActivated(CompositeDisposable disposables)
        {
            var saveEnabled = this.WhenAnyValue(v => v.AllowSave, v => v == true);
            var loadEnabled = this.WhenAnyValue(v => v.AllowLoad, v => v == true);

            this.WhenAnyValue(v => v.Path).Subscribe(s =>
            {
                EvalConditions();
            }).DisposeWith(disposables);

            this.WhenAnyValue(v => v.CurrentEditText).Subscribe(s =>
            {
                EvalConditions();
            }).DisposeWith(disposables);

            CloseCommand = ReactiveCommand.Create(() =>
            {
                ForceClosePopup();
            }).DisposeWith(disposables);

            CustomPatchCommand = ReactiveCommand.Create(() =>
            {
                Document = new TextDocument(CurrentEditText ?? string.Empty);
                IsOpen   = true;
            }).DisposeWith(disposables);

            SaveCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                var definition = InitDefinition();
                if (ConflictResult.CustomConflicts.GetByFile(Path.StandardizeDirectorySeparator()).Count() > 0)
                {
                    await modPatchCollectionService.ResetCustomConflictAsync(ConflictResult, definition.TypeAndId, CollectionName);
                }
                if (await modPatchCollectionService.AddCustomModPatchAsync(ConflictResult, definition, CollectionName))
                {
                    Saved           = true;
                    Saved           = false;
                    Path            = string.Empty;
                    CurrentEditText = string.Empty;
                    Document        = new TextDocument(CurrentEditText);
                }
            }, saveEnabled).DisposeWith(disposables);

            LoadCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                var definition = ConflictResult.CustomConflicts.GetByFile(Path.StandardizeDirectorySeparator()).FirstOrDefault();
                if (definition != null)
                {
                    var code        = await modPatchCollectionService.LoadDefinitionContentsAsync(definition, CollectionName);
                    CurrentEditText = code;
                    Document        = new TextDocument(CurrentEditText ?? string.Empty);
                }
            }, loadEnabled).DisposeWith(disposables);

            base.OnActivated(disposables);
        }
示例#2
0
        /// <summary>
        /// Called when [activated].
        /// </summary>
        /// <param name="disposables">The disposables.</param>
        protected override void OnActivated(CompositeDisposable disposables)
        {
            var saveEnabled = this.WhenAnyValue(v => v.AllowSave, v => v == true);
            var loadEnabled = this.WhenAnyValue(v => v.AllowLoad, v => v == true);

            this.WhenAnyValue(v => v.Path).Subscribe(s =>
            {
                EvalConditions();
            }).DisposeWith(disposables);

            this.WhenAnyValue(v => v.CurrentEditText).Subscribe(s =>
            {
                EvalConditions();
            }).DisposeWith(disposables);

            CloseCommand = ReactiveCommand.Create(() =>
            {
                ForceClosePopup();
            }).DisposeWith(disposables);

            CustomPatchCommand = ReactiveCommand.Create(() =>
            {
                Document = new TextDocument(CurrentEditText ?? string.Empty);
                IsOpen   = true;
            }).DisposeWith(disposables);

            SaveCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                var definition = InitDefinition();
                if (ConflictResult.CustomConflicts.GetByFile(Path.StandardizeDirectorySeparator()).Any())
                {
                    await modPatchCollectionService.ResetCustomConflictAsync(ConflictResult, definition.TypeAndId, CollectionName);
                }
                if (await modPatchCollectionService.AddCustomModPatchAsync(ConflictResult, definition, CollectionName))
                {
                    if (!promptShown && ConflictResult.AllConflicts.GetByFile(definition.FileCI).Any())
                    {
                        promptShown = true;
                        var title   = localizationManager.GetResource(LocalizationResources.Notifications.CustomPatchRerunConflictSolver.Title);
                        var message = localizationManager.GetResource(LocalizationResources.Notifications.CustomPatchRerunConflictSolver.Message);
                        notificationAction.ShowNotification(title, message, NotificationType.Warning, 10);
                    }
                    Saved           = true;
                    Saved           = false;
                    Path            = string.Empty;
                    CurrentEditText = string.Empty;
                    Document        = new TextDocument(CurrentEditText);
                }
            }, saveEnabled).DisposeWith(disposables);

            LoadCommand = ReactiveCommand.CreateFromTask(async() =>
            {
                var definition = ConflictResult.CustomConflicts.GetByFile(Path.StandardizeDirectorySeparator()).FirstOrDefault();
                if (definition != null)
                {
                    var code        = await modPatchCollectionService.LoadDefinitionContentsAsync(definition, CollectionName);
                    CurrentEditText = code;
                    Document        = new TextDocument(CurrentEditText ?? string.Empty);
                }
            }, loadEnabled).DisposeWith(disposables);

            base.OnActivated(disposables);
        }