mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Fixed dynamic properties being processed while configuring
This commit is contained in:
parent
ddc63473a3
commit
e30d85578e
@ -8,29 +8,33 @@ namespace Artemis.ViewModels.LayerEditor
|
|||||||
{
|
{
|
||||||
public class LayerDynamicPropertiesViewModel : Screen
|
public class LayerDynamicPropertiesViewModel : Screen
|
||||||
{
|
{
|
||||||
private LayerDynamicPropertiesModel _layerDynamicPropertiesModel;
|
private readonly LayerModel _layer;
|
||||||
|
private readonly string _property;
|
||||||
|
private LayerDynamicPropertiesModel _layerDynamicPropertiesModelProposed;
|
||||||
|
private LayerPropertyType _layerPropertyType;
|
||||||
private string _name;
|
private string _name;
|
||||||
private GeneralHelpers.PropertyCollection _selectedSource;
|
private GeneralHelpers.PropertyCollection _selectedSource;
|
||||||
private GeneralHelpers.PropertyCollection _selectedTarget;
|
private GeneralHelpers.PropertyCollection _selectedTarget;
|
||||||
private bool _sourcesIsVisible;
|
private bool _sourcesIsVisible;
|
||||||
private bool _userSourceIsVisible;
|
private bool _userSourceIsVisible;
|
||||||
private LayerPropertyType _layerPropertyType;
|
|
||||||
|
|
||||||
public LayerDynamicPropertiesViewModel(string property,
|
public LayerDynamicPropertiesViewModel(string property,
|
||||||
BindableCollection<GeneralHelpers.PropertyCollection> dataModelProps, LayerModel layer)
|
BindableCollection<GeneralHelpers.PropertyCollection> dataModelProps, LayerModel layer)
|
||||||
{
|
{
|
||||||
|
_property = property;
|
||||||
|
_layer = layer;
|
||||||
|
|
||||||
// Look for the existing property model
|
// Look for the existing property model
|
||||||
LayerDynamicPropertiesModel = layer.LayerProperties.FirstOrDefault(lp => lp.LayerProperty == property);
|
LayerDynamicPropertiesModelProposed = new LayerDynamicPropertiesModel();
|
||||||
if (LayerDynamicPropertiesModel == null)
|
var original = _layer.LayerProperties.FirstOrDefault(lp => lp.LayerProperty == _property);
|
||||||
|
if (original == null)
|
||||||
{
|
{
|
||||||
// If it doesn't exist, create a new one
|
LayerDynamicPropertiesModelProposed.LayerProperty = property;
|
||||||
LayerDynamicPropertiesModel = new LayerDynamicPropertiesModel
|
LayerDynamicPropertiesModelProposed.LayerPropertyType = LayerPropertyType.None;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
LayerProperty = property,
|
GeneralHelpers.CopyProperties(LayerDynamicPropertiesModelProposed, original);
|
||||||
LayerPropertyType = LayerPropertyType.None
|
|
||||||
};
|
|
||||||
// Add it to the layer
|
|
||||||
layer.LayerProperties.Add(LayerDynamicPropertiesModel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Name = property + ":";
|
Name = property + ":";
|
||||||
@ -41,9 +45,11 @@ namespace Artemis.ViewModels.LayerEditor
|
|||||||
|
|
||||||
PropertyChanged += OnPropertyChanged;
|
PropertyChanged += OnPropertyChanged;
|
||||||
|
|
||||||
SelectedTarget = dataModelProps.FirstOrDefault(p => p.Path == LayerDynamicPropertiesModel.GameProperty);
|
SelectedTarget =
|
||||||
SelectedSource = dataModelProps.FirstOrDefault(p => p.Path == LayerDynamicPropertiesModel.PercentageSource);
|
dataModelProps.FirstOrDefault(p => p.Path == LayerDynamicPropertiesModelProposed.GameProperty);
|
||||||
LayerPropertyType = LayerDynamicPropertiesModel.LayerPropertyType;
|
SelectedSource =
|
||||||
|
dataModelProps.FirstOrDefault(p => p.Path == LayerDynamicPropertiesModelProposed.PercentageSource);
|
||||||
|
LayerPropertyType = LayerDynamicPropertiesModelProposed.LayerPropertyType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LayerPropertyType LayerPropertyType
|
public LayerPropertyType LayerPropertyType
|
||||||
@ -68,14 +74,14 @@ namespace Artemis.ViewModels.LayerEditor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LayerDynamicPropertiesModel LayerDynamicPropertiesModel
|
public LayerDynamicPropertiesModel LayerDynamicPropertiesModelProposed
|
||||||
{
|
{
|
||||||
get { return _layerDynamicPropertiesModel; }
|
get { return _layerDynamicPropertiesModelProposed; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (Equals(value, _layerDynamicPropertiesModel)) return;
|
if (Equals(value, _layerDynamicPropertiesModelProposed)) return;
|
||||||
_layerDynamicPropertiesModel = value;
|
_layerDynamicPropertiesModelProposed = value;
|
||||||
NotifyOfPropertyChange(() => LayerDynamicPropertiesModel);
|
NotifyOfPropertyChange(() => LayerDynamicPropertiesModelProposed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,15 +136,24 @@ namespace Artemis.ViewModels.LayerEditor
|
|||||||
private void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
|
private void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.PropertyName == "SelectedTarget")
|
if (e.PropertyName == "SelectedTarget")
|
||||||
LayerDynamicPropertiesModel.GameProperty = SelectedTarget.Path;
|
LayerDynamicPropertiesModelProposed.GameProperty = SelectedTarget.Path;
|
||||||
if (e.PropertyName == "SelectedSource")
|
if (e.PropertyName == "SelectedSource")
|
||||||
LayerDynamicPropertiesModel.PercentageSource = SelectedSource.Path;
|
LayerDynamicPropertiesModelProposed.PercentageSource = SelectedSource.Path;
|
||||||
if (e.PropertyName == "LayerPropertyType")
|
if (e.PropertyName == "LayerPropertyType")
|
||||||
{
|
{
|
||||||
LayerDynamicPropertiesModel.LayerPropertyType = LayerPropertyType;
|
LayerDynamicPropertiesModelProposed.LayerPropertyType = LayerPropertyType;
|
||||||
UserSourceIsVisible = (LayerPropertyType == LayerPropertyType.PercentageOf);
|
UserSourceIsVisible = LayerPropertyType == LayerPropertyType.PercentageOf;
|
||||||
SourcesIsVisible = (LayerPropertyType == LayerPropertyType.PercentageOfProperty);
|
SourcesIsVisible = LayerPropertyType == LayerPropertyType.PercentageOfProperty;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Apply()
|
||||||
|
{
|
||||||
|
var original = _layer.LayerProperties.FirstOrDefault(lp => lp.LayerProperty == _property);
|
||||||
|
if (original == null)
|
||||||
|
_layer.LayerProperties.Add(LayerDynamicPropertiesModelProposed);
|
||||||
|
else
|
||||||
|
GeneralHelpers.CopyProperties(original, LayerDynamicPropertiesModelProposed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -16,6 +16,7 @@ namespace Artemis.ViewModels.LayerEditor
|
|||||||
private readonly BackgroundWorker _previewWorker;
|
private readonly BackgroundWorker _previewWorker;
|
||||||
private readonly bool _wasEnabled;
|
private readonly bool _wasEnabled;
|
||||||
private LayerModel _layer;
|
private LayerModel _layer;
|
||||||
|
private LayerModel _proposedLayer;
|
||||||
private LayerPropertiesModel _proposedProperties;
|
private LayerPropertiesModel _proposedProperties;
|
||||||
|
|
||||||
public LayerEditorViewModel(KeyboardProvider activeKeyboard, LayerModel layer)
|
public LayerEditorViewModel(KeyboardProvider activeKeyboard, LayerModel layer)
|
||||||
@ -24,11 +25,14 @@ namespace Artemis.ViewModels.LayerEditor
|
|||||||
_wasEnabled = layer.Enabled;
|
_wasEnabled = layer.Enabled;
|
||||||
|
|
||||||
Layer = layer;
|
Layer = layer;
|
||||||
|
ProposedLayer = new LayerModel();
|
||||||
|
GeneralHelpers.CopyProperties(ProposedLayer, Layer);
|
||||||
Layer.Enabled = false;
|
Layer.Enabled = false;
|
||||||
DataModelProps = new BindableCollection<GeneralHelpers.PropertyCollection>();
|
DataModelProps = new BindableCollection<GeneralHelpers.PropertyCollection>();
|
||||||
ProposedProperties = new LayerPropertiesModel();
|
ProposedProperties = new LayerPropertiesModel();
|
||||||
DataModelProps.AddRange(GeneralHelpers.GenerateTypeMap<T>());
|
DataModelProps.AddRange(GeneralHelpers.GenerateTypeMap<T>());
|
||||||
LayerConditionVms = new BindableCollection<LayerConditionViewModel<T>>(
|
LayerConditionVms =
|
||||||
|
new BindableCollection<LayerConditionViewModel<T>>(
|
||||||
layer.LayerConditions.Select(c => new LayerConditionViewModel<T>(this, c, DataModelProps)));
|
layer.LayerConditions.Select(c => new LayerConditionViewModel<T>(this, c, DataModelProps)));
|
||||||
HeightProperties = new LayerDynamicPropertiesViewModel("Height", DataModelProps, layer);
|
HeightProperties = new LayerDynamicPropertiesViewModel("Height", DataModelProps, layer);
|
||||||
WidthProperties = new LayerDynamicPropertiesViewModel("Width", DataModelProps, layer);
|
WidthProperties = new LayerDynamicPropertiesViewModel("Width", DataModelProps, layer);
|
||||||
@ -65,6 +69,17 @@ namespace Artemis.ViewModels.LayerEditor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LayerModel ProposedLayer
|
||||||
|
{
|
||||||
|
get { return _proposedLayer; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (Equals(value, _proposedLayer)) return;
|
||||||
|
_proposedLayer = value;
|
||||||
|
NotifyOfPropertyChange(() => ProposedLayer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public LayerPropertiesModel ProposedProperties
|
public LayerPropertiesModel ProposedProperties
|
||||||
{
|
{
|
||||||
get { return _proposedProperties; }
|
get { return _proposedProperties; }
|
||||||
@ -131,6 +146,9 @@ namespace Artemis.ViewModels.LayerEditor
|
|||||||
public void Apply()
|
public void Apply()
|
||||||
{
|
{
|
||||||
GeneralHelpers.CopyProperties(Layer.UserProps, ProposedProperties);
|
GeneralHelpers.CopyProperties(Layer.UserProps, ProposedProperties);
|
||||||
|
HeightProperties.Apply();
|
||||||
|
WidthProperties.Apply();
|
||||||
|
OpacityProperties.Apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteCondition(LayerConditionViewModel<T> layerConditionViewModel,
|
public void DeleteCondition(LayerConditionViewModel<T> layerConditionViewModel,
|
||||||
|
|||||||
@ -81,7 +81,7 @@
|
|||||||
|
|
||||||
<!-- PercentageOf -->
|
<!-- PercentageOf -->
|
||||||
<StackPanel Grid.Column="3" x:Name="UserSourceIsVisible" VerticalAlignment="Center">
|
<StackPanel Grid.Column="3" x:Name="UserSourceIsVisible" VerticalAlignment="Center">
|
||||||
<controls:NumericUpDown Margin="10,0" Height="22" Value="{Binding Path=LayerDynamicPropertiesModel.PercentageSource, Mode=TwoWay}" />
|
<controls:NumericUpDown Margin="10,0" Height="22" Value="{Binding Path=LayerDynamicPropertiesModelProposed.PercentageSource, Mode=TwoWay}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
Loading…
x
Reference in New Issue
Block a user