Data bindings - WIP commit

Layer/effect config dialogs - Don't require specific ctor parameter names
This commit is contained in:
Robert committed 2020-09-03 20:16:01 +02:00
1 parent c98fc51623
commit 21beffc0a9
15 files changed
+408 -130

No files matched your search

@@ -1,4 +1,5 @@
using System.Reflection;
using System.Linq;
using System.Reflection;
using Artemis.Core;
using Stylet;
@@ -6,15 +7,70 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings
{
public class DataBindingViewModel : PropertyChangedBase
{
public DataBindingViewModel(BaseLayerProperty layerProperty, PropertyInfo dataBindingProperty)
private DataBinding _dataBinding;
public DataBindingViewModel(BaseLayerProperty layerProperty, PropertyInfo targetProperty)
{
DisplayName = dataBindingProperty.Name.ToUpper();
LayerProperty = layerProperty;
DataBindingProperty = dataBindingProperty;
TargetProperty = targetProperty;
DisplayName = TargetProperty.Name.ToUpper();
ModifierViewModels = new BindableCollection<DataBindingModifierViewModel>();
DataBinding = layerProperty.DataBindings.FirstOrDefault(d => d.TargetProperty == targetProperty);
}
public string DisplayName { get; }
public BaseLayerProperty LayerProperty { get; }
public PropertyInfo DataBindingProperty { get; }
public PropertyInfo TargetProperty { get; }
public string DisplayName { get; }
public BindableCollection<DataBindingModifierViewModel> ModifierViewModels { get; }
public DataBinding DataBinding
{
get => _dataBinding;
set
{
if (!SetAndNotify(ref _dataBinding, value)) return;
UpdateModifierViewModels();
}
}
public void EnableDataBinding()
{
if (DataBinding != null)
return;
DataBinding = LayerProperty.AddDataBinding(TargetProperty);
}
public void RemoveDataBinding()
{
if (DataBinding == null)
return;
var toRemove = DataBinding;
DataBinding = null;
LayerProperty.RemoveDataBinding(toRemove);
}
public void AddModifier()
{
if (DataBinding == null)
return;
var modifier = new DataBindingModifier(ProfileRightSideType.Dynamic);
DataBinding.AddModifier(modifier);
ModifierViewModels.Add(new DataBindingModifierViewModel(modifier));
}
private void UpdateModifierViewModels()
{
ModifierViewModels.Clear();
if (DataBinding == null)
return;
foreach (var dataBindingModifier in DataBinding.Modifiers)
ModifierViewModels.Add(new DataBindingModifierViewModel(dataBindingModifier));
}
}
}