Data bindings - Highlight current property

Data bindings - Disable data-bound property inputs
Data bindings - Use toggle to indicate data bindings being enabled
This commit is contained in:
SpoinkyNL committed 2020-09-15 23:18:21 +02:00
1 parent 0c25d0bbec
commit d788183f25
29 files changed
+295 -58

No files matched your search

@@ -56,14 +56,16 @@ namespace Artemis.UI.Screens.ProfileEditor.DisplayConditions
public bool ConditionBehaviourEnabled => RenderProfileElement != null;
protected override void OnActivate()
protected override void OnInitialActivate()
{
_profileEditorService.ProfileElementSelected += ProfileEditorServiceOnProfileElementSelected;
base.OnInitialActivate();
}
protected override void OnDeactivate()
protected override void OnClose()
{
_profileEditorService.ProfileElementSelected -= ProfileEditorServiceOnProfileElementSelected;
base.OnClose();
}
private void ProfileEditorServiceOnProfileElementSelected(object sender, RenderProfileElementEventArgs e)
@@ -40,6 +40,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
set => SetAndNotify(ref _isVisible, value);
}
public bool IsHighlighted => false;
public bool IsExpanded
{
get => LayerPropertyGroup.ProfileElement.IsPropertyGroupExpanded(LayerPropertyGroup);
@@ -10,6 +10,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
public class LayerPropertyViewModel : PropertyChangedBase, IDisposable
{
private bool _isVisible;
private bool _isHighlighted;
private bool _isExpanded;
public LayerPropertyViewModel(ILayerProperty layerProperty, IPropertyVmFactory propertyVmFactory)
{
@@ -29,8 +31,18 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
set => SetAndNotify(ref _isVisible, value);
}
public bool IsExpanded => false;
public bool IsHighlighted
{
get => _isHighlighted;
set => SetAndNotify(ref _isHighlighted, value);
}
public bool IsExpanded
{
get => _isExpanded;
set => SetAndNotify(ref _isExpanded, value);
}
public void Dispose()
{
TreePropertyViewModel?.Dispose();
@@ -5,6 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:s="https://github.com/canton7/Stylet"
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid Height="22" Margin="-20 0 0 0">
@@ -43,15 +44,17 @@
</ContentControl.Resources>
</ContentControl>
<ToggleButton Grid.Column="3"
Style="{StaticResource MaterialDesignFlatPrimaryToggleButton}"
<shared:LockableToggleButton Grid.Column="3"
Style="{StaticResource MaterialDesignFlatToggleButton}"
ToolTip="Change the property's data binding"
Width="20"
Height="20"
VerticalAlignment="Center"
IsLocked="True"
IsEnabled="{Binding LayerProperty.DataBindingsSupported}"
IsChecked="{Binding DataBindingsOpen}">
IsChecked="{Binding HasDataBinding, Mode=OneWay}"
Click="{s:Action ActivateDataBindingViewModel}">
<materialDesign:PackIcon Kind="VectorLink" Height="13" Width="13" />
</ToggleButton>
</shared:LockableToggleButton>
</Grid>
</UserControl>
@@ -22,10 +22,11 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
PropertyInputViewModel = _profileEditorService.CreatePropertyInputViewModel(LayerProperty);
_profileEditorService.SelectedDataBindingChanged += ProfileEditorServiceOnSelectedDataBindingChanged;
LayerProperty.VisibilityChanged += LayerPropertyOnVisibilityChanged;
LayerProperty.DataBindingEnabled += LayerPropertyOnDataBindingChange;
LayerProperty.DataBindingDisabled += LayerPropertyOnDataBindingChange;
LayerPropertyViewModel.IsVisible = !LayerProperty.IsHidden;
}
public LayerProperty<T> LayerProperty { get; }
public LayerPropertyViewModel LayerPropertyViewModel { get; }
@@ -35,6 +36,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
set => SetAndNotify(ref _propertyInputViewModel, value);
}
public bool HasDataBinding => LayerProperty.HasDataBinding;
public bool HasPropertyInputViewModel => PropertyInputViewModel != null;
public bool KeyframesEnabled
@@ -43,10 +46,12 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
set => ApplyKeyframesEnabled(value);
}
public bool DataBindingsOpen
public void ActivateDataBindingViewModel()
{
get => _profileEditorService.SelectedDataBinding == LayerProperty;
set => _profileEditorService.ChangeSelectedDataBinding(value ? LayerProperty : null);
if (_profileEditorService.SelectedDataBinding == LayerProperty)
_profileEditorService.ChangeSelectedDataBinding(null);
else
_profileEditorService.ChangeSelectedDataBinding(LayerProperty);
}
#region IDisposable
@@ -56,6 +61,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
_propertyInputViewModel?.Dispose();
_profileEditorService.SelectedDataBindingChanged -= ProfileEditorServiceOnSelectedDataBindingChanged;
LayerProperty.VisibilityChanged -= LayerPropertyOnVisibilityChanged;
LayerProperty.DataBindingEnabled -= LayerPropertyOnDataBindingChange;
LayerProperty.DataBindingDisabled -= LayerPropertyOnDataBindingChange;
}
#endregion
@@ -85,7 +92,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
private void ProfileEditorServiceOnSelectedDataBindingChanged(object sender, EventArgs e)
{
NotifyOfPropertyChange(nameof(DataBindingsOpen));
LayerPropertyViewModel.IsHighlighted = _profileEditorService.SelectedDataBinding == LayerProperty;
}
private void LayerPropertyOnVisibilityChanged(object? sender, LayerPropertyEventArgs<T> e)
@@ -93,12 +100,17 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
LayerPropertyViewModel.IsVisible = !LayerProperty.IsHidden;
}
private void LayerPropertyOnDataBindingChange(object? sender, LayerPropertyEventArgs<T> e)
{
NotifyOfPropertyChange(nameof(HasDataBinding));
}
#endregion
}
public interface ITreePropertyViewModel : IScreen, INotifyPropertyChanged, IDisposable
public interface ITreePropertyViewModel : IScreen, IDisposable
{
bool HasPropertyInputViewModel { get; }
bool DataBindingsOpen { get; set; }
bool HasDataBinding { get; }
}
}
@@ -96,7 +96,7 @@
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="Visibility" Value="{Binding IsVisible, Converter={x:Static s:BoolToVisibilityConverter.Instance}, Mode=OneWay}" />
<Style.Triggers>
<DataTrigger Binding="{Binding TreePropertyViewModel.DataBindingsOpen}" Value="True">
<DataTrigger Binding="{Binding IsHighlighted, Mode=OneWay}" Value="True">
<Setter Property="Background" Value="{DynamicResource MaterialDesignPaper}" />
</DataTrigger>
</Style.Triggers>
@@ -234,7 +234,7 @@ namespace Artemis.UI.Screens.ProfileEditor
_snackbarMessageQueue.Enqueue("Redid profile update", "UNDO", Undo);
}
protected override void OnActivate()
protected override void OnInitialActivate()
{
LoadWorkspaceSettings();
Module.IsProfileUpdatingDisabled = true;
@@ -246,10 +246,10 @@ namespace Artemis.UI.Screens.ProfileEditor
SelectedProfile = Profiles.FirstOrDefault(d => d.Id == Module.ActiveProfile.EntityId);
Task.Run(async () => { await _moduleService.SetActiveModuleOverride(Module); });
base.OnActivate();
base.OnInitialActivate();
}
protected override void OnDeactivate()
protected override void OnClose()
{
SaveWorkspaceSettings();
Module.IsProfileUpdatingDisabled = false;
@@ -257,7 +257,7 @@ namespace Artemis.UI.Screens.ProfileEditor
_profileEditorService.ChangeSelectedProfile(null);
Task.Run(async () => { await _moduleService.SetActiveModuleOverride(null); });
base.OnDeactivate();
base.OnClose();
}
private void RemoveProfile(ProfileDescriptor profileDescriptor)
@@ -96,16 +96,16 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree
ActiveItem?.AddLayer();
}
protected override void OnActivate()
protected override void OnInitialActivate()
{
Subscribe();
base.OnActivate();
base.OnInitialActivate();
}
protected override void OnDeactivate()
protected override void OnClose()
{
Unsubscribe();
base.OnDeactivate();
base.OnClose();
}
private void CreateRootFolderViewModel()
@@ -173,7 +173,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization
.ToList();
}
protected override void OnActivate()
protected override void OnInitialActivate()
{
ApplyActiveProfile();
@@ -186,10 +186,10 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization
_profileEditorService.ProfileElementSelected += OnProfileElementSelected;
_profileEditorService.SelectedProfileElementUpdated += OnSelectedProfileElementUpdated;
base.OnActivate();
base.OnInitialActivate();
}
protected override void OnDeactivate()
protected override void OnClose()
{
HighlightSelectedLayer.SettingChanged -= HighlightSelectedLayerOnSettingChanged;
_surfaceService.ActiveSurfaceConfigurationSelected -= OnActiveSurfaceConfigurationSelected;
@@ -206,7 +206,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization
canvasViewModel.Dispose();
CanvasViewModels.Clear();
base.OnDeactivate();
base.OnClose();
}
private void OnActiveSurfaceConfigurationSelected(object sender, SurfaceConfigurationEventArgs e)