Browse Source

Hide input fields when a output is connected

CPKreuz 1 year ago
parent
commit
9b9154634b

+ 19 - 2
src/PixiEditor.AvaloniaUI/ViewModels/Nodes/NodePropertyViewModel.cs

@@ -42,7 +42,13 @@ internal abstract class NodePropertyViewModel : ViewModelBase, INodePropertyHand
     public bool IsInput
     {
         get => isInput;
-        set => SetProperty(ref isInput, value);
+        set
+        {
+            if (SetProperty(ref isInput, value))
+            {
+                OnPropertyChanged(nameof(ShowInputField));
+            }
+        }
     }
 
     public bool IsFunc
@@ -54,7 +60,18 @@ internal abstract class NodePropertyViewModel : ViewModelBase, INodePropertyHand
     public INodePropertyHandler? ConnectedOutput
     {
         get => connectedOutput;
-        set => SetProperty(ref connectedOutput, value);
+        set
+        {
+            if (SetProperty(ref connectedOutput, value))
+            {
+                OnPropertyChanged(nameof(ShowInputField));
+            }
+        }
+    }
+
+    public bool ShowInputField
+    {
+        get => IsInput && ConnectedOutput == null;
     }
 
     public ObservableCollection<INodePropertyHandler> ConnectedInputs

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Nodes/Properties/BooleanPropertyView.axaml

@@ -8,7 +8,7 @@
                              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
                              x:Class="PixiEditor.AvaloniaUI.Views.Nodes.Properties.BooleanPropertyView">
     <StackPanel Orientation="Horizontal" HorizontalAlignment="{Binding IsInput, Converter={converters:BoolToValueConverter FalseValue='Right', TrueValue='Stretch'}}">
-        <CheckBox Margin="0,0,4,0" IsVisible="{Binding IsInput}" IsChecked="{Binding Value}"/>
+        <CheckBox Margin="0,0,4,0" IsVisible="{Binding ShowInputField}" IsChecked="{Binding Value}"/>
         <TextBlock VerticalAlignment="Center" ui:Translator.Key="{Binding DisplayName}"/>
     </StackPanel>
 </properties:NodePropertyView>

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Nodes/Properties/ColorMatrixPropertyView.axaml

@@ -10,7 +10,7 @@
                              x:Class="PixiEditor.AvaloniaUI.Views.Nodes.Properties.ColorMatrixPropertyView">
     <StackPanel HorizontalAlignment="{Binding IsInput, Converter={converters:BoolToValueConverter FalseValue='Right', TrueValue='Stretch'}}">
         <TextBlock ui:Translator.Key="{Binding DisplayName}" />
-        <Grid IsVisible="{Binding IsInput}" ColumnDefinitions="Auto,*,*,*,*,*" RowDefinitions="Auto, Auto, Auto, Auto, Auto">
+        <Grid IsVisible="{Binding ShowInputField}" ColumnDefinitions="Auto,*,*,*,*,*" RowDefinitions="Auto, Auto, Auto, Auto, Auto">
             <TextBlock Grid.Row="0" Grid.Column="0" Text="T\F" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center"  />
             
             <TextBlock Grid.Row="1" Grid.Column="0" Text="R" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="1,0" TextAlignment="Center" />

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Nodes/Properties/ColorPropertyView.axaml

@@ -14,7 +14,7 @@
         <colorPicker:PortableColorPicker
             PointerPressed="InputElement_OnPointerPressed"
             Width="40" Height="20"
-            IsVisible="{Binding IsInput}"
+            IsVisible="{Binding ShowInputField}"
             SelectedColor="{Binding Value, Mode=TwoWay}" />
     </Grid>
 </properties:NodePropertyView>

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Nodes/Properties/DoublePropertyView.axaml

@@ -11,6 +11,6 @@
                              x:Class="PixiEditor.AvaloniaUI.Views.Nodes.Properties.DoublePropertyView">
     <Grid HorizontalAlignment="{Binding IsInput, Converter={converters:BoolToValueConverter FalseValue='Right', TrueValue='Stretch'}}">
         <TextBlock VerticalAlignment="Center" ui:Translator.Key="{Binding DisplayName}"/>
-        <input:NumberInput HorizontalAlignment="Right" MinWidth="100" Decimals="6" IsVisible="{Binding IsInput}" Value="{Binding Value, Mode=TwoWay}" />
+        <input:NumberInput HorizontalAlignment="Right" MinWidth="100" Decimals="6" IsVisible="{Binding ShowInputField}" Value="{Binding Value, Mode=TwoWay}" />
     </Grid>
 </properties:NodePropertyView>

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Nodes/Properties/GenericEnumPropertyView.axaml

@@ -10,7 +10,7 @@
                              x:Class="PixiEditor.AvaloniaUI.Views.Nodes.Properties.GenericEnumPropertyView">
     <Grid HorizontalAlignment="{Binding IsInput, Converter={converters:BoolToValueConverter FalseValue='Right', TrueValue='Stretch'}}">
         <TextBlock VerticalAlignment="Center" ui:Translator.Key="{Binding DisplayName}"/>
-        <ComboBox HorizontalAlignment="Right" MinWidth="100" IsVisible="{Binding IsInput}"
+        <ComboBox HorizontalAlignment="Right" MinWidth="100" IsVisible="{Binding ShowInputField}"
                   SelectedValue="{Binding Value, Mode=TwoWay}" ItemsSource="{Binding Values}" />
     </Grid>
 </properties:NodePropertyView>

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Nodes/Properties/Int32PropertyView.axaml

@@ -10,6 +10,6 @@
                              x:Class="PixiEditor.AvaloniaUI.Views.Nodes.Properties.Int32PropertyView">
     <Grid HorizontalAlignment="{Binding IsInput, Converter={converters:BoolToValueConverter FalseValue='Right', TrueValue='Stretch'}}">
         <TextBlock VerticalAlignment="Center" ui:Translator.Key="{Binding DisplayName}"/>
-        <input:NumberInput HorizontalAlignment="Right" MinWidth="100" IsVisible="{Binding IsInput}" Value="{Binding Value, Mode=TwoWay}" />
+        <input:NumberInput HorizontalAlignment="Right" MinWidth="100" IsVisible="{Binding ShowInputField}" Value="{Binding Value, Mode=TwoWay}" />
     </Grid>
 </properties:NodePropertyView>

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Nodes/Properties/Matrix4x5FPropertyView.axaml

@@ -10,7 +10,7 @@
                              x:Class="PixiEditor.AvaloniaUI.Views.Nodes.Properties.Matrix4x5FPropertyView">
     <StackPanel HorizontalAlignment="{Binding IsInput, Converter={converters:BoolToValueConverter FalseValue='Right', TrueValue='Stretch'}}">
         <TextBlock ui:Translator.Key="{Binding DisplayName}" />
-        <Grid IsVisible="{Binding IsInput}" ColumnDefinitions="Auto,*,*,*,*,*" RowDefinitions="Auto, Auto, Auto, Auto, Auto">
+        <Grid IsVisible="{Binding ShowInputField}" ColumnDefinitions="Auto,*,*,*,*,*" RowDefinitions="Auto, Auto, Auto, Auto, Auto">
             <TextBlock Grid.Row="1" Grid.Column="0" Text="1" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="1,0" />
             <TextBlock Grid.Row="2" Grid.Column="0" Text="2" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="1,0" />
             <TextBlock Grid.Row="3" Grid.Column="0" Text="3" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="1,0" />

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Nodes/Properties/VecDPropertyView.axaml

@@ -10,7 +10,7 @@
                              x:Class="PixiEditor.AvaloniaUI.Views.Nodes.Properties.VecDPropertyView">
     <StackPanel HorizontalAlignment="{Binding IsInput, Converter={converters:BoolToValueConverter FalseValue='Right', TrueValue='Stretch'}}">
         <TextBlock VerticalAlignment="Center" ui:Translator.Key="{Binding DisplayName}"/>
-        <StackPanel IsVisible="{Binding IsInput}">
+        <StackPanel IsVisible="{Binding ShowInputField}">
             <input:NumberInput MinWidth="100" Value="{Binding XValue, Mode=TwoWay}" Margin="0,2" />
             <input:NumberInput MinWidth="100" Value="{Binding YValue, Mode=TwoWay}" />
         </StackPanel>

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Nodes/Properties/VecIPropertyView.axaml

@@ -10,7 +10,7 @@
                              x:Class="PixiEditor.AvaloniaUI.Views.Nodes.Properties.VecIPropertyView">
     <StackPanel HorizontalAlignment="{Binding IsInput, Converter={converters:BoolToValueConverter FalseValue='Right', TrueValue='Stretch'}}">
         <TextBlock VerticalAlignment="Center" ui:Translator.Key="{Binding DisplayName}"/>
-        <StackPanel IsVisible="{Binding IsInput}">
+        <StackPanel IsVisible="{Binding ShowInputField}">
             <input:NumberInput MinWidth="100" Decimals="0" Value="{Binding XValue, Mode=TwoWay}" Margin="0,2" />
             <input:NumberInput MinWidth="100" Decimals="0" Value="{Binding YValue, Mode=TwoWay}" />
         </StackPanel>