mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 11:56:30 +00:00
Started work on layer visualization
This commit is contained in:
1 parent
dda3cf442d
commit
2afb1ea284
5 files changed
+192
-1
No files matched your search
@@ -42,14 +42,17 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization
|
||||
});
|
||||
|
||||
ApplySurfaceConfiguration(surfaceService.ActiveSurface);
|
||||
ApplyActiveProfile();
|
||||
CreateUpdateTrigger();
|
||||
ActivateToolByIndex(0);
|
||||
|
||||
_profileEditorService.SelectedProfileChanged += OnSelectedProfileChanged;
|
||||
_profileEditorService.SelectedProfileElementChanged += OnSelectedProfileElementChanged;
|
||||
_profileEditorService.SelectedProfileElementUpdated += OnSelectedProfileElementChanged;
|
||||
_profileEditorService.SelectedProfileElementUpdated += OnSelectedProfileElementUpdated;
|
||||
eventAggregator.Subscribe(this);
|
||||
}
|
||||
|
||||
|
||||
public bool IsInitializing { get; private set; }
|
||||
public ObservableCollection<CanvasViewModel> CanvasViewModels { get; set; }
|
||||
public PanZoomViewModel PanZoomViewModel { get; set; }
|
||||
@@ -116,6 +119,31 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization
|
||||
ApplySurfaceConfiguration(e.Surface);
|
||||
}
|
||||
|
||||
private void ApplyActiveProfile()
|
||||
{
|
||||
Execute.PostToUIThread(() =>
|
||||
{
|
||||
lock (CanvasViewModels)
|
||||
{
|
||||
var layerViewModels = CanvasViewModels.Where(vm => vm is ProfileLayerViewModel).Cast<ProfileLayerViewModel>().ToList();
|
||||
var layers = _profileEditorService.SelectedProfile?.GetAllLayers() ?? new List<Layer>();
|
||||
|
||||
|
||||
// Add new layers missing a VM
|
||||
foreach (var layer in layers)
|
||||
{
|
||||
if (layerViewModels.All(vm => vm.Layer != layer))
|
||||
CanvasViewModels.Add(new ProfileLayerViewModel(layer));
|
||||
}
|
||||
|
||||
// Remove layers that no longer exist
|
||||
var toRemove = layerViewModels.Where(vm => !layers.Contains(vm.Layer));
|
||||
foreach (var profileLayerViewModel in toRemove)
|
||||
CanvasViewModels.Remove(profileLayerViewModel);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void ApplySurfaceConfiguration(ArtemisSurface surface)
|
||||
{
|
||||
var devices = new List<ArtemisDevice>();
|
||||
@@ -324,12 +352,24 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization
|
||||
UpdateLedsDimStatus();
|
||||
}
|
||||
|
||||
private void OnSelectedProfileChanged(object sender, EventArgs e)
|
||||
{
|
||||
ApplyActiveProfile();
|
||||
}
|
||||
|
||||
private void OnSelectedProfileElementChanged(object sender, EventArgs e)
|
||||
{
|
||||
UpdateLedsDimStatus();
|
||||
CanApplyToLayer = _profileEditorService.SelectedProfileElement is Layer;
|
||||
}
|
||||
|
||||
private void OnSelectedProfileElementUpdated(object sender, EventArgs e)
|
||||
{
|
||||
ApplyActiveProfile();
|
||||
UpdateLedsDimStatus();
|
||||
CanApplyToLayer = _profileEditorService.SelectedProfileElement is Layer;
|
||||
}
|
||||
|
||||
public void Handle(MainWindowFocusChangedEvent message)
|
||||
{
|
||||
if (PauseRenderingOnFocusLoss == null || ScreenState != ScreenState.Active)
|
||||
|
||||
Reference in new issue
Block a user