|
@@ -0,0 +1,172 @@
|
|
|
+<UserControl x:Class="PixiEditor.AvaloniaUI.Views.Layers.LayerControl"
|
|
|
+ x:ClassModifier="internal"
|
|
|
+ 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:controls="clr-namespace:PixiEditor.Views.UserControls"
|
|
|
+ xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
|
|
+ xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
|
|
+ xmlns:views="clr-namespace:PixiEditor.Views"
|
|
|
+ xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
|
|
|
+ xmlns:helpers="clr-namespace:PixiEditor.AvaloniaUI.Helpers.UI"
|
|
|
+ xmlns:converters="clr-namespace:PixiEditor.AvaloniaUI.Helpers.Converters"
|
|
|
+ xmlns:behaviours="clr-namespace:PixiEditor.AvaloniaUI.Helpers.Behaviours"
|
|
|
+ xmlns:input="clr-namespace:PixiEditor.AvaloniaUI.Views.Input"
|
|
|
+ xmlns:xaml="clr-namespace:PixiEditor.AvaloniaUI.Models.Commands.XAML"
|
|
|
+ mc:Ignorable="d"
|
|
|
+ Focusable="True"
|
|
|
+ d:DesignHeight="35" d:DesignWidth="250" Name="uc"
|
|
|
+ PointerExited="LayerItem_OnMouseLeave" PointerEntered="LayerItem_OnMouseEnter">
|
|
|
+ <UserControl.Resources>
|
|
|
+ <converters:BoolToBrushConverter x:Key="LayerBorderConverter" FalseBrush="White" TrueBrush="Black"/>
|
|
|
+ <converters:BoolToBrushConverter x:Key="MaskBorderConverter" FalseBrush="Black" TrueBrush="White"/>
|
|
|
+ </UserControl.Resources>
|
|
|
+ <Border BorderThickness="0 0 0 0.5" BorderBrush="Gray" MinWidth="60" Focusable="True" Tag="{Binding ElementName=uc}">
|
|
|
+ <Border.Background>
|
|
|
+ <Binding ElementName="uc" Path="Layer.Selection">
|
|
|
+ <Binding.Converter>
|
|
|
+ <converters:StructureMemberSelectionTypeToColorConverter
|
|
|
+ SoftColor="{StaticResource SoftSelectedLayerBrush}"
|
|
|
+ HardColor="{StaticResource SelectedLayerBrush}"
|
|
|
+ NoneColor="Transparent"
|
|
|
+ />
|
|
|
+ </Binding.Converter>
|
|
|
+ </Binding>
|
|
|
+ </Border.Background>
|
|
|
+ <Interaction.Behaviors>
|
|
|
+ <behaviours:ClearFocusOnClickBehavior/>
|
|
|
+ </Interaction.Behaviors>
|
|
|
+ <Grid>
|
|
|
+ <Grid.RowDefinitions>
|
|
|
+ <RowDefinition Height="10"/>
|
|
|
+ <RowDefinition Height="25"/>
|
|
|
+ </Grid.RowDefinitions>
|
|
|
+ <Grid DragDrop.AllowDrop="True" Grid.Row="0" Grid.ColumnSpan="3" Background="Transparent"/>
|
|
|
+ <Grid Grid.Row="1" Grid.RowSpan="3" Margin="0,-10,0,0" VerticalAlignment="Center" DragDrop.AllowDrop="False">
|
|
|
+ <Grid.ColumnDefinitions>
|
|
|
+ <ColumnDefinition Width="24"/>
|
|
|
+ <ColumnDefinition Width="*"/>
|
|
|
+ </Grid.ColumnDefinitions>
|
|
|
+ <CheckBox Classes="ImageCheckBox" VerticalAlignment="Center"
|
|
|
+ IsThreeState="False" HorizontalAlignment="Center"
|
|
|
+ IsChecked="{Binding Path=Layer.IsVisibleBindable, ElementName=uc}"
|
|
|
+ Grid.Column="0" Height="16" />
|
|
|
+ <StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Left">
|
|
|
+ <Rectangle Width="{Binding Path=(helpers:TreeViewItemHelper.Indent).Value, Mode=OneWay, RelativeSource={RelativeSource AncestorType=ItemsPresenter}}" Fill="Transparent" StrokeThickness="0"/>
|
|
|
+ <Border
|
|
|
+ IsVisible="{Binding Layer.ClipToMemberBelowEnabledBindable, ElementName=uc}"
|
|
|
+ Background="{DynamicResource ThemeAccentBrush}" Width="3" Margin="1,1,2,1" CornerRadius="1"/>
|
|
|
+ <Border
|
|
|
+ Width="32" Height="32"
|
|
|
+ BorderThickness="1"
|
|
|
+ RenderOptions.BitmapInterpolationMode="None"
|
|
|
+ PointerPressed="LayerMouseDown">
|
|
|
+ <Border.Background>
|
|
|
+ <ImageBrush Source="/Images/CheckerTile.png" TileMode="Tile" DestinationRect="0, 0, 0.20, 0.20"/>
|
|
|
+ </Border.Background>
|
|
|
+ <Border.BorderBrush>
|
|
|
+ <MultiBinding Converter="{StaticResource LayerBorderConverter}">
|
|
|
+ <Binding ElementName="uc" Path="Layer.ShouldDrawOnMask"/>
|
|
|
+ <Binding ElementName="uc" Path="Layer.HasMaskBindable"/>
|
|
|
+ </MultiBinding>
|
|
|
+ </Border.BorderBrush>
|
|
|
+ <Image Source="{Binding Layer.PreviewBitmap,ElementName=uc}" Stretch="Uniform" Width="30" Height="30"
|
|
|
+ RenderOptions.BitmapInterpolationMode="None" IsHitTestVisible="False"/>
|
|
|
+ </Border>
|
|
|
+ <Border
|
|
|
+ Width="32" Height="32"
|
|
|
+ BorderThickness="1"
|
|
|
+ Margin="3,0,0,0"
|
|
|
+ RenderOptions.BitmapInterpolationMode="None"
|
|
|
+ IsVisible="{Binding Layer.HasMaskBindable, ElementName=uc}"
|
|
|
+ PointerPressed="MaskMouseDown">
|
|
|
+ <Border.Background>
|
|
|
+ <ImageBrush Source="/Images/CheckerTile.png" TileMode="Tile" DestinationRect="0, 0, 0.20, 0.20"/>
|
|
|
+ </Border.Background>
|
|
|
+ <Border.BorderBrush>
|
|
|
+ <MultiBinding Converter="{StaticResource MaskBorderConverter}">
|
|
|
+ <Binding ElementName="uc" Path="Layer.ShouldDrawOnMask"/>
|
|
|
+ </MultiBinding>
|
|
|
+ </Border.BorderBrush>
|
|
|
+ <Grid IsHitTestVisible="False">
|
|
|
+ <Image Source="{Binding Layer.MaskPreviewBitmap,ElementName=uc}" Stretch="Uniform" Width="30" Height="30"
|
|
|
+ RenderOptions.BitmapInterpolationMode="None" IsHitTestVisible="False"/>
|
|
|
+ <Path
|
|
|
+ Data="M 2 0 L 10 8 L 18 0 L 20 2 L 12 10 L 20 18 L 18 20 L 10 12 L 2 20 L 0 18 L 8 10 L 0 2 Z"
|
|
|
+ Fill="{DynamicResource ThemeAccentBrush}" HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
|
+ IsVisible="{Binding !Layer.MaskIsVisibleBindable, ElementName=uc}"/>
|
|
|
+ </Grid>
|
|
|
+ </Border>
|
|
|
+ <StackPanel Margin="3,0,5,0">
|
|
|
+ <input:EditableTextBlock
|
|
|
+ x:Name="editableTextBlock"
|
|
|
+ VerticalAlignment="Center"
|
|
|
+ d:Text="New Layer" FontSize="14"
|
|
|
+ Text="{Binding Layer.NameBindable, ElementName=uc, Mode=TwoWay}" />
|
|
|
+
|
|
|
+ <StackPanel Orientation="Horizontal">
|
|
|
+ <TextBlock d:Text="100" Foreground="White" FontSize="11">
|
|
|
+ <TextBlock.Text>
|
|
|
+ <Binding ElementName="uc" Path="Layer.OpacityBindable" Converter="{converters:MultiplyConverter}" StringFormat="N0">
|
|
|
+ <Binding.ConverterParameter>
|
|
|
+ <sys:Double>100.0</sys:Double>
|
|
|
+ </Binding.ConverterParameter>
|
|
|
+ </Binding>
|
|
|
+ </TextBlock.Text>
|
|
|
+ </TextBlock>
|
|
|
+ <TextBlock Foreground="White" FontSize="11">%</TextBlock>
|
|
|
+ <TextBlock FontSize="11"
|
|
|
+ Margin="5,0,0,0"
|
|
|
+ d:Text="Normal"
|
|
|
+ Foreground="White"
|
|
|
+ Text="{Binding Layer.BlendModeBindable, ElementName=uc, Converter={converters:BlendModeToStringConverter}}"/>
|
|
|
+ </StackPanel>
|
|
|
+ </StackPanel>
|
|
|
+ <WrapPanel Orientation="Vertical" Margin="0,3,3,3">
|
|
|
+ <Image
|
|
|
+ Source="/Images/Lock-alpha.png" Width="14" Height="14"
|
|
|
+ IsVisible="{Binding Layer.LockTransparencyBindable, ElementName=uc}"/>
|
|
|
+ </WrapPanel>
|
|
|
+ </StackPanel>
|
|
|
+ <Grid Margin="0, 0, 0, -2.5" VerticalAlignment="Bottom" Height="10" Grid.Row="2" Grid.Column="0" DragDrop.AllowDrop="True" Background="Transparent" Name="dropBelowGrid"/>
|
|
|
+ <Grid Margin="0, 0, 0, -2.5" VerticalAlignment="Bottom" Height="10" Grid.Row="2" Grid.Column="1" Background="{Binding ElementName=dropBelowGrid, Path=Background}"/>
|
|
|
+
|
|
|
+ <Grid Margin="0, 0, 0, -2.5" VerticalAlignment="Bottom" Height="10" Grid.Row="2" Grid.Column="2" DragDrop.AllowDrop="True" Background="Transparent"/>
|
|
|
+ </Grid>
|
|
|
+ </Grid>
|
|
|
+ <Border.ContextMenu>
|
|
|
+ <ContextMenu>
|
|
|
+ <MenuItem ui:Translator.Key="DUPLICATE" Command="{xaml:Command PixiEditor.Layer.DuplicateSelectedLayer}"/>
|
|
|
+ <MenuItem ui:Translator.Key="DELETE" Command="{xaml:Command PixiEditor.Layer.DeleteAllSelected}"/>
|
|
|
+ <MenuItem ui:Translator.Key="RENAME" Click="RenameMenuItem_Click"/>
|
|
|
+ <!--TODO: Add checkable menu item-->
|
|
|
+ <!--<MenuItem
|
|
|
+ IsCheckable="True"
|
|
|
+ IsChecked="{Binding PlacementTarget.Tag.Layer.ClipToMemberBelowEnabledBindable, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
|
|
+ ui:Translator.Key="CLIP_TO_BELOW"/>
|
|
|
+ <MenuItem
|
|
|
+ IsCheckable="True"
|
|
|
+ IsChecked="{Binding PlacementTarget.Tag.Layer.LockTransparencyBindable, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
|
|
+ ui:Translator.Key="LOCK_TRANSPARENCY"/>-->
|
|
|
+ <Separator/>
|
|
|
+ <MenuItem ui:Translator.Key="MOVE_UPWARDS" Command="{xaml:Command PixiEditor.Layer.MoveSelectedMemberUpwards}"/>
|
|
|
+ <MenuItem ui:Translator.Key="MOVE_DOWNWARDS" Command="{xaml:Command PixiEditor.Layer.MoveSelectedMemberDownwards}"/>
|
|
|
+ <Separator/>
|
|
|
+ <MenuItem ui:Translator.Key="CREATE_MASK" Command="{xaml:Command PixiEditor.Layer.CreateMask}"/>
|
|
|
+ <MenuItem ui:Translator.Key="DELETE_MASK" Command="{xaml:Command PixiEditor.Layer.DeleteMask}"/>
|
|
|
+ <!--TODO: Add checkable menu item-->
|
|
|
+ <!--<MenuItem
|
|
|
+ IsCheckable="True"
|
|
|
+ IsChecked="{Binding PlacementTarget.Tag.Layer.MaskIsVisibleBindable, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
|
|
+ IsEnabled="{Binding PlacementTarget.Tag.Layer.HasMaskBindable, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
|
|
|
+ ui:Translator.Key="ENABLE_MASK"/>-->
|
|
|
+ <MenuItem ui:Translator.Key="APPLY_MASK" Command="{xaml:Command PixiEditor.Layer.ApplyMask}"/>
|
|
|
+ <Separator/>
|
|
|
+ <MenuItem ui:Translator.Key="MERGE_SELECTED" Command="{xaml:Command PixiEditor.Layer.MergeSelected}"/>
|
|
|
+ <MenuItem ui:Translator.Key="MERGE_WITH_ABOVE" Command="{xaml:Command PixiEditor.Layer.MergeWithAbove}"/>
|
|
|
+ <MenuItem ui:Translator.Key="MERGE_WITH_BELOW" Command="{xaml:Command PixiEditor.Layer.MergeWithBelow}"/>
|
|
|
+ </ContextMenu>
|
|
|
+ </Border.ContextMenu>
|
|
|
+ </Border>
|
|
|
+</UserControl>
|