From b503906b9a63f477591ffc0119559cf8d117d794 Mon Sep 17 00:00:00 2001 From: Robert Date: Mon, 14 Feb 2022 23:51:55 +0100 Subject: [PATCH] Profile editor - Added element removal --- src/Artemis.Core/Models/Profile/Folder.cs | 14 +------------ src/Artemis.Core/Models/Profile/Layer.cs | 12 ----------- .../Models/Profile/ProfileElement.cs | 2 +- .../Models/Profile/RenderProfileElement.cs | 12 +---------- .../Commands/RemoveProfileElement.cs | 10 +++++++--- .../Panels/ProfileTree/ProfileTreeView.axaml | 2 +- .../ProfileTree/ProfileTreeView.axaml.cs | 10 ++++++++++ .../Panels/ProfileTree/TreeItemViewModel.cs | 20 ++++++++++++++----- 8 files changed, 36 insertions(+), 46 deletions(-) diff --git a/src/Artemis.Core/Models/Profile/Folder.cs b/src/Artemis.Core/Models/Profile/Folder.cs index e77a5a6ad..96dd20416 100644 --- a/src/Artemis.Core/Models/Profile/Folder.cs +++ b/src/Artemis.Core/Models/Profile/Folder.cs @@ -266,19 +266,7 @@ namespace Artemis.Core /// Occurs when a property affecting the rendering properties of this folder has been updated /// public event EventHandler? RenderPropertiesUpdated; - - /// - public override void Activate() - { - throw new NotImplementedException(); - } - - /// - public override void Deactivate() - { - throw new NotImplementedException(); - } - + /// protected override void Dispose(bool disposing) { diff --git a/src/Artemis.Core/Models/Profile/Layer.cs b/src/Artemis.Core/Models/Profile/Layer.cs index 1a8a26905..21a8a113f 100644 --- a/src/Artemis.Core/Models/Profile/Layer.cs +++ b/src/Artemis.Core/Models/Profile/Layer.cs @@ -488,18 +488,6 @@ namespace Artemis.Core baseLayerEffect.InternalUpdate(Timeline); } - /// - public override void Activate() - { - throw new NotImplementedException(); - } - - /// - public override void Deactivate() - { - throw new NotImplementedException(); - } - /// public override void Disable() { diff --git a/src/Artemis.Core/Models/Profile/ProfileElement.cs b/src/Artemis.Core/Models/Profile/ProfileElement.cs index f94cdce28..9d97fd638 100644 --- a/src/Artemis.Core/Models/Profile/ProfileElement.cs +++ b/src/Artemis.Core/Models/Profile/ProfileElement.cs @@ -182,7 +182,7 @@ namespace Artemis.Core private void StreamlineOrder() { for (int index = 0; index < ChildrenList.Count; index++) - ChildrenList[index].Order = index; + ChildrenList[index].Order = index + 1; } /// diff --git a/src/Artemis.Core/Models/Profile/RenderProfileElement.cs b/src/Artemis.Core/Models/Profile/RenderProfileElement.cs index 85aec916d..3c7322f97 100644 --- a/src/Artemis.Core/Models/Profile/RenderProfileElement.cs +++ b/src/Artemis.Core/Models/Profile/RenderProfileElement.cs @@ -52,17 +52,7 @@ namespace Artemis.Core /// Occurs when a layer effect has been added or removed to this render element /// public event EventHandler? LayerEffectsUpdated; - - /// - /// Activates the render profile element, loading required brushes, effects or anything else needed for rendering - /// - public abstract void Activate(); - - /// - /// Deactivates the render profile element, disposing required brushes, effects or anything else needed for rendering - /// - public abstract void Deactivate(); - + /// protected override void Dispose(bool disposing) { diff --git a/src/Avalonia/Artemis.UI.Shared/Services/ProfileEditor/Commands/RemoveProfileElement.cs b/src/Avalonia/Artemis.UI.Shared/Services/ProfileEditor/Commands/RemoveProfileElement.cs index ddeab19aa..a6289da6b 100644 --- a/src/Avalonia/Artemis.UI.Shared/Services/ProfileEditor/Commands/RemoveProfileElement.cs +++ b/src/Avalonia/Artemis.UI.Shared/Services/ProfileEditor/Commands/RemoveProfileElement.cs @@ -12,6 +12,7 @@ public class RemoveProfileElement : IProfileEditorCommand, IDisposable private readonly RenderProfileElement _subject; private readonly ProfileElement _target; private bool _isRemoved; + private readonly bool _wasEnabled; /// /// Creates a new instance of the class. @@ -23,7 +24,8 @@ public class RemoveProfileElement : IProfileEditorCommand, IDisposable _subject = subject; _target = _subject.Parent; - _index = _subject.Children.IndexOf(_subject); + _index = _target.Children.IndexOf(_subject); + _wasEnabled = _subject.Enabled; DisplayName = subject switch { @@ -50,15 +52,17 @@ public class RemoveProfileElement : IProfileEditorCommand, IDisposable { _isRemoved = true; _target.RemoveChild(_subject); - _subject.Deactivate(); + _subject.Disable(); } /// public void Undo() { _isRemoved = false; - _subject.Activate(); _target.AddChild(_subject, _index); + + if (_wasEnabled) + _subject.Enable(); } #endregion diff --git a/src/Avalonia/Artemis.UI/Screens/ProfileEditor/Panels/ProfileTree/ProfileTreeView.axaml b/src/Avalonia/Artemis.UI/Screens/ProfileEditor/Panels/ProfileTree/ProfileTreeView.axaml index 6896dae98..d55cb17d9 100644 --- a/src/Avalonia/Artemis.UI/Screens/ProfileEditor/Panels/ProfileTree/ProfileTreeView.axaml +++ b/src/Avalonia/Artemis.UI/Screens/ProfileEditor/Panels/ProfileTree/ProfileTreeView.axaml @@ -8,7 +8,7 @@ x:Class="Artemis.UI.Screens.ProfileEditor.ProfileTree.ProfileTreeView" x:DataType="profileTree:ProfileTreeViewModel"> - +