Implemented layer element saving

Added a working setting to the brush element
This commit is contained in:
Robert committed 2019-12-04 13:26:18 +01:00
1 parent 275d2b32a6
commit 1a44e34d16
24 files changed
+440 -85

No files matched your search

@@ -19,7 +19,9 @@
</TextBlock>
<Separator Style="{StaticResource MaterialDesignDarkSeparator}" Margin="8 0" />
</StackPanel>
<ContentControl Grid.Row="1" s:View.Model="{Binding LayerElementViewModel}" />
<ScrollViewer Grid.Row="1">
<ContentControl s:View.Model="{Binding LayerElementViewModel}" Margin="0 0 10 0"/>
</ScrollViewer>
</Grid>
</UserControl>
@@ -1,4 +1,5 @@
using System;
using System.ComponentModel;
using Artemis.Core.Plugins.LayerElement;
using Artemis.UI.Services.Interfaces;
@@ -19,7 +20,18 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.ElementProperties
private void OnSelectedLayerElementChanged(object sender, EventArgs e)
{
if (LayerElementViewModel?.LayerElement?.Settings != null)
LayerElementViewModel.LayerElement.Settings.PropertyChanged -= SettingsOnPropertyChanged;
LayerElementViewModel = _profileEditorService.SelectedLayerElement?.GetViewModel();
if (LayerElementViewModel?.LayerElement?.Settings != null)
LayerElementViewModel.LayerElement.Settings.PropertyChanged += SettingsOnPropertyChanged;
}
private void SettingsOnPropertyChanged(object sender, PropertyChangedEventArgs e)
{
_profileEditorService.UpdateSelectedProfileElement();
}
}
}
@@ -31,12 +31,16 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerElements.Dialogs
public void Accept()
{
if (Session.IsEnded)
return;
var layerElement = _layerService.InstantiateLayerElement(Layer, SelectedLayerElementDescriptor);
Session.Close(layerElement);
}
public void Cancel()
{
if (Session.IsEnded)
return;
Session.Close();
}
@@ -4,6 +4,7 @@ using System.Linq;
using Artemis.Core.Models.Profile;
using Artemis.Core.Models.Profile.Abstract;
using Artemis.Core.Plugins.LayerElement;
using Artemis.Core.Services.Interfaces;
using Artemis.UI.Screens.Module.ProfileEditor.LayerElements.Dialogs;
using Artemis.UI.Services.Interfaces;
using Stylet;
@@ -14,11 +15,13 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerElements
{
private readonly IDialogService _dialogService;
private readonly IProfileEditorService _profileEditorService;
private readonly ILayerService _layerService;
private LayerElementViewModel _selectedLayerElement;
public LayerElementsViewModel(IProfileEditorService profileEditorService, IDialogService dialogService)
public LayerElementsViewModel(IProfileEditorService profileEditorService, ILayerService layerService, IDialogService dialogService)
{
_profileEditorService = profileEditorService;
_layerService = layerService;
_dialogService = dialogService;
LayerElements = new BindableCollection<LayerElementViewModel>();
@@ -74,8 +77,11 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerElements
new Dictionary<string, object> {{"layer", (Layer) SelectedProfileElement}}
);
if (result is LayerElement layerElement)
LayerElements.Add(new LayerElementViewModel(layerElement));
if (!(result is LayerElement layerElement))
return;
LayerElements.Add(new LayerElementViewModel(layerElement));
_profileEditorService.UpdateSelectedProfileElement();
}
public async void DeleteSelectedLayerElement()
@@ -88,8 +94,18 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerElements
"Delete layer element",
"Are you sure you want to delete the selected layer element?"
);
if (!result)
return;
var layerElement = SelectedLayerElement.LayerElement;
var layer = (Layer) SelectedProfileElement;
LayerElements.Remove(SelectedLayerElement);
SelectedLayerElement = null;
_layerService.RemoveLayerElement(layer, layerElement);
_profileEditorService.UpdateSelectedProfileElement();
}
}
}