mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
187 lines
12 KiB
XML
187 lines
12 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
|
|
xmlns:sharedConverters="clr-namespace:Artemis.UI.Shared.Converters;assembly=Artemis.UI.Shared"
|
|
xmlns:converters="clr-namespace:Artemis.UI.Converters"
|
|
xmlns:viewModel="clr-namespace:Artemis.UI.Screens.ProfileEditor.Properties.Tree"
|
|
xmlns:properties="clr-namespace:Artemis.UI.Screens.ProfileEditor.Properties"
|
|
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
|
x:Class="Artemis.UI.Screens.ProfileEditor.Properties.Tree.TreeGroupView"
|
|
x:DataType="viewModel:TreeGroupViewModel">
|
|
<UserControl.Resources>
|
|
<converters:PropertyTreeMarginConverter x:Key="PropertyTreeMarginConverter" Length="20" />
|
|
<sharedConverters:EnumToBooleanConverter x:Key="EnumBoolConverter" />
|
|
</UserControl.Resources>
|
|
<UserControl.Styles>
|
|
<Style Selector="avalonia|MaterialIcon.chevron-collapsed">
|
|
<Setter Property="RenderTransform" Value="rotate(-90deg)" />
|
|
</Style>
|
|
</UserControl.Styles>
|
|
<StackPanel>
|
|
<Border Name="Bd"
|
|
BorderBrush="{DynamicResource ButtonBorderBrush}"
|
|
BorderThickness="0,0,0,1"
|
|
Height="29">
|
|
<Grid Margin="{CompiledBinding Converter={StaticResource PropertyTreeMarginConverter}}" ColumnDefinitions="19,*">
|
|
|
|
<avalonia:MaterialIcon Classes.chevron-collapsed="{CompiledBinding !PropertyGroupViewModel.IsExpanded}"
|
|
IsVisible="{CompiledBinding PropertyGroupViewModel.HasChildren}"
|
|
Kind="ChevronDown"
|
|
Grid.Column="0"
|
|
Margin="5 0"
|
|
PointerPressed="InputElement_OnPointerPressed"
|
|
Background="Transparent">
|
|
<avalonia:MaterialIcon.Transitions>
|
|
<Transitions>
|
|
<TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.2" />
|
|
</Transitions>
|
|
</avalonia:MaterialIcon.Transitions>
|
|
</avalonia:MaterialIcon>
|
|
|
|
<StackPanel Grid.Column="1">
|
|
<!-- Type: None -->
|
|
<TextBlock Text="{CompiledBinding LayerPropertyGroup.GroupDescription.Name}"
|
|
ToolTip.Tip="{CompiledBinding LayerPropertyGroup.GroupDescription.Description}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left"
|
|
Margin="3 5 0 5"
|
|
IsVisible="{CompiledBinding GroupType, Converter={StaticResource EnumBoolConverter}, ConverterParameter={x:Static viewModel:LayerPropertyGroupType.None}}" />
|
|
|
|
<!-- Type: General -->
|
|
<StackPanel Orientation="Horizontal"
|
|
Margin="0 5"
|
|
IsVisible="{CompiledBinding GroupType, Converter={StaticResource EnumBoolConverter}, ConverterParameter={x:Static viewModel:LayerPropertyGroupType.General}}">
|
|
<avalonia:MaterialIcon Kind="HammerWrench" Margin="0 0 5 0" />
|
|
<TextBlock ToolTip.Tip="{CompiledBinding LayerPropertyGroup.GroupDescription.Description}">General</TextBlock>
|
|
</StackPanel>
|
|
|
|
<!-- Type: Transform -->
|
|
<StackPanel Orientation="Horizontal"
|
|
Margin="0 5"
|
|
IsVisible="{CompiledBinding GroupType, Converter={StaticResource EnumBoolConverter}, ConverterParameter={x:Static viewModel:LayerPropertyGroupType.Transform}}">
|
|
<avalonia:MaterialIcon Kind="TransitConnectionVariant" Margin="0 0 5 0" />
|
|
<TextBlock ToolTip.Tip="{CompiledBinding LayerPropertyGroup.GroupDescription.Description}">Transform</TextBlock>
|
|
</StackPanel>
|
|
|
|
<!-- Type: LayerBrushRoot -->
|
|
<Grid IsVisible="{CompiledBinding GroupType, Converter={StaticResource EnumBoolConverter}, ConverterParameter={x:Static viewModel:LayerPropertyGroupType.LayerBrushRoot}}"
|
|
Height="29"
|
|
ColumnDefinitions="Auto,Auto,Auto,*">
|
|
<shared:ArtemisIcon Grid.Column="0"
|
|
Icon="{CompiledBinding LayerBrush.Descriptor.Icon}"
|
|
Width="16"
|
|
Height="16"
|
|
Margin="0 0 5 0" />
|
|
<TextBlock Grid.Column="1"
|
|
ToolTip.Tip="{CompiledBinding LayerBrush.Descriptor.Description}"
|
|
Margin="0 5 5 0">
|
|
Brush -
|
|
</TextBlock>
|
|
<TextBlock Grid.Column="2"
|
|
Text="{CompiledBinding LayerBrush.Descriptor.DisplayName}"
|
|
ToolTip.Tip="{CompiledBinding LayerBrush.Descriptor.Description}"
|
|
Margin="0 5 0 0" />
|
|
|
|
<StackPanel Grid.Column="3"
|
|
Orientation="Horizontal"
|
|
HorizontalAlignment="Right"
|
|
IsVisible="{CompiledBinding LayerBrush.ConfigurationDialog, Converter={x:Static ObjectConverters.IsNotNull}}">
|
|
<TextBlock VerticalAlignment="Center">Extra options available!</TextBlock>
|
|
<avalonia:MaterialIcon Kind="ChevronRight" VerticalAlignment="Center">
|
|
<avalonia:MaterialIcon.RenderTransform>
|
|
<TranslateTransform X="0" />
|
|
</avalonia:MaterialIcon.RenderTransform>
|
|
</avalonia:MaterialIcon>
|
|
<Button Classes="icon-button" ToolTip.Tip="Open brush settings" Width="24" Height="24" HorizontalAlignment="Right" Command="{CompiledBinding OpenBrushSettings}">
|
|
<avalonia:MaterialIcon Kind="Settings" Height="16" Width="16" />
|
|
</Button>
|
|
</StackPanel>
|
|
|
|
</Grid>
|
|
|
|
<!-- Type: LayerEffectRoot -->
|
|
<Grid IsVisible="{CompiledBinding GroupType, Converter={StaticResource EnumBoolConverter}, ConverterParameter={x:Static viewModel:LayerPropertyGroupType.LayerEffectRoot}}"
|
|
Height="29"
|
|
ColumnDefinitions="Auto,Auto,Auto,Auto,*,Auto">
|
|
<shared:ArtemisIcon
|
|
Grid.Column="0"
|
|
Cursor="SizeNorthSouth"
|
|
Icon="{CompiledBinding LayerEffect.Descriptor.Icon}"
|
|
Width="16"
|
|
Height="16"
|
|
Margin="0 0 5 0"
|
|
Background="Transparent" />
|
|
<TextBlock Grid.Column="1" ToolTip.Tip="{CompiledBinding LayerEffect.Descriptor.Description}" Margin="0 5 0 0">
|
|
Effect
|
|
</TextBlock>
|
|
<TextBlock Grid.Column="2"
|
|
ToolTip.Tip="{CompiledBinding LayerEffect.Descriptor.Description}"
|
|
Margin="3 5">
|
|
-
|
|
</TextBlock>
|
|
|
|
<!-- Show either the descriptors display name or, if set, the effect name -->
|
|
<TextBlock Grid.Column="3"
|
|
Text="{CompiledBinding LayerEffect.Descriptor.DisplayName}"
|
|
ToolTip.Tip="{CompiledBinding LayerEffect.Descriptor.Description}"
|
|
Margin="0 5"
|
|
IsVisible="{CompiledBinding !LayerEffect.HasBeenRenamed}" />
|
|
<TextBlock Grid.Column="4"
|
|
Text="{CompiledBinding LayerEffect.Name}"
|
|
ToolTip.Tip="{CompiledBinding LayerEffect.Descriptor.Description}"
|
|
Margin="0 5"
|
|
IsVisible="{CompiledBinding LayerEffect.HasBeenRenamed}" />
|
|
|
|
<StackPanel Grid.Column="5" Orientation="Horizontal" Spacing="2">
|
|
<Button Classes="icon-button"
|
|
ToolTip.Tip="Rename"
|
|
Width="24"
|
|
Height="24"
|
|
VerticalAlignment="Center"
|
|
Command="{CompiledBinding RenameEffect}">
|
|
<avalonia:MaterialIcon Kind="RenameBox" Height="16" Width="16" />
|
|
</Button>
|
|
<Button Classes="icon-button"
|
|
ToolTip.Tip="Open effect settings"
|
|
Width="24"
|
|
Height="24"
|
|
VerticalAlignment="Center"
|
|
Command="{CompiledBinding OpenEffectSettings}"
|
|
IsVisible="{CompiledBinding LayerEffect.ConfigurationDialog, Converter={x:Static ObjectConverters.IsNotNull}}">
|
|
<avalonia:MaterialIcon Kind="Settings" Height="16" Width="16" />
|
|
</Button>
|
|
<Button Classes="icon-button"
|
|
ToolTip.Tip="Remove"
|
|
Width="24"
|
|
Height="24"
|
|
VerticalAlignment="Center"
|
|
Command="{CompiledBinding DeleteEffect}">
|
|
<avalonia:MaterialIcon Kind="TrashCan" Height="16" Width="16" />
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!--
|
|
Do not bind directly to the PropertyGroupViewModel.Children collection
|
|
Instead use a reference provided by the VM that is null when collapsed, virtualization for noobs
|
|
-->
|
|
<ItemsControl ItemsSource="{CompiledBinding Children}"
|
|
IsVisible="{CompiledBinding PropertyGroupViewModel.IsExpanded}"
|
|
HorizontalAlignment="Stretch">
|
|
<ItemsControl.DataTemplates>
|
|
<DataTemplate DataType="properties:PropertyGroupViewModel">
|
|
<ContentControl Content="{CompiledBinding TreeGroupViewModel}" IsVisible="{CompiledBinding IsVisible}" />
|
|
</DataTemplate>
|
|
<DataTemplate DataType="properties:PropertyViewModel">
|
|
<ContentControl Content="{CompiledBinding TreePropertyViewModel}" IsVisible="{CompiledBinding IsVisible}" />
|
|
</DataTemplate>
|
|
</ItemsControl.DataTemplates>
|
|
</ItemsControl>
|
|
</StackPanel>
|
|
</UserControl> |