Browse Source

Added remove pictogram and fixed opacity changing

flabbet 4 years ago
parent
commit
2a6aaa9750

BIN
PixiEditor/Images/Trash.png


+ 2 - 0
PixiEditor/PixiEditor.csproj

@@ -45,6 +45,7 @@
     <None Remove="Images\PixiBotLogo.png" />
     <None Remove="Images\PixiEditorLogo.png" />
     <None Remove="Images\SelectImage.png" />
+    <None Remove="Images\Trash.png" />
     <None Remove="Images\ZoomImage.png" />
     <None Include="..\icon.ico">
       <Pack>True</Pack>
@@ -92,6 +93,7 @@
     <Resource Include="Images\RectangleImage.png" />
     <Resource Include="Images\SelectImage.png" />
     <Resource Include="Images\transparentbg.png" />
+    <Resource Include="Images\Trash.png" />
     <Resource Include="Images\ZoomImage.png" />
   </ItemGroup>
   <ItemGroup>

+ 19 - 1
PixiEditor/ViewModels/SubViewModels/Main/LayersViewModel.cs

@@ -15,7 +15,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
         public RelayCommand NewLayerCommand { get; set; }
 
         public RelayCommand NewGroupCommand { get; set; }
-
+        public RelayCommand DeleteSelectedCommand { get; set; }
         public RelayCommand DeleteGroupCommand { get; set; }
 
         public RelayCommand DeleteLayersCommand { get; set; }
@@ -49,9 +49,27 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
             MergeWithBelowCommand = new RelayCommand(MergeWithBelow, CanMergeWithBelow);
             RenameGroupCommand = new RelayCommand(RenameGroup);
             DeleteGroupCommand = new RelayCommand(DeleteGroup);
+            DeleteSelectedCommand = new RelayCommand(DeleteSelected, CanDeleteSelected);
             Owner.BitmapManager.DocumentChanged += BitmapManager_DocumentChanged;
         }
 
+        public bool CanDeleteSelected(object parameter)
+        {
+            return parameter is not null and (Layer or LayerGroup);
+        }
+
+        public void DeleteSelected(object parameter)
+        {
+            if(parameter is Layer layer)
+            {
+                DeleteLayer(Owner.BitmapManager.ActiveDocument.Layers.IndexOf(layer));
+            }
+            else if(parameter is LayerGroup group)
+            {
+                DeleteGroup(group.GroupGuid);
+            }
+        }
+
         public void DeleteGroup(object parameter)
         {
             if (parameter is Guid guid)

+ 1 - 1
PixiEditor/Views/MainWindow.xaml

@@ -297,7 +297,7 @@
                                                          CanClose="False" CanAutoHide="False"
                                                          CanDockAsTabbedDocument="True" CanFloat="True">
                                         <usercontrols:LayersManager
-                                            LayerOpacity="{Binding BitmapManager.ActiveDocument.ActiveLayer.OpacityUndoTriggerable}"
+                                            LayerOpacity="{Binding BitmapManager.ActiveDocument.ActiveLayer.OpacityUndoTriggerable, Mode=TwoWay}"
                                             LayerCommandsViewModel="{Binding LayersSubViewModel}"
                                             OpacityInputEnabled="{Binding BitmapManager.ActiveDocument, 
                     Converter={StaticResource NotNullToBoolConverter}}">

+ 38 - 27
PixiEditor/Views/UserControls/LayersManager.xaml

@@ -20,34 +20,45 @@
             <RowDefinition Height="15"/>
             <RowDefinition Height="1*"/>
         </Grid.RowDefinitions>
-        <StackPanel Background="{StaticResource MainColor}" Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Stretch">
-            <Button Command="{Binding LayerCommandsViewModel.NewLayerCommand, ElementName=layersManager}" 
-                    Height="24" Width="24" Cursor="Hand" ToolTip="New Layer"
-                                            HorizontalAlignment="Stretch" Margin="5"
-                                            Style="{StaticResource DarkRoundButton}">
-                <Button.Background>
-                    <ImageBrush ImageSource="/Images/Layer-add.png"/>
-                </Button.Background>
-            </Button>
-            <Button Command="{Binding LayerCommandsViewModel.NewGroupCommand, ElementName=layersManager}" Height="24" Width="24" ToolTip="New Group"
-                                            HorizontalAlignment="Stretch" Margin="5"
-                                            Style="{StaticResource DarkRoundButton}">
-                <Button.Background>
-                    <ImageBrush ImageSource="/Images/Folder-add.png"/>
-                </Button.Background>
-            </Button>
-            <Label Content="Opacity" Foreground="White" VerticalAlignment="Center"/>
-            <vws:NumberInput
-                    Min="0" Max="100"
-                    IsEnabled="{Binding Path=OpacityInputEnabled, ElementName=layersManager}" 
-                    Width="40" Height="20"
-                    VerticalAlignment="Center"
-                    Value="{Binding LayerOpacity, Mode=TwoWay,
-                    Converter={StaticResource FloatNormalizeConverter}, ElementName=layersManager}" />
-            <Label Content="%" Foreground="White" VerticalAlignment="Center"/>
-        </StackPanel>
+        <DockPanel Background="{StaticResource MainColor}" Grid.Row="0" HorizontalAlignment="Stretch">
+            <StackPanel Orientation="Horizontal" DockPanel.Dock="Left">
+                <Button Command="{Binding LayerCommandsViewModel.NewLayerCommand, ElementName=layersManager}" 
+                        Height="24" Width="24" Cursor="Hand" ToolTip="New Layer"
+                                                HorizontalAlignment="Stretch" Margin="5"
+                                                Style="{StaticResource ToolButtonStyle}">
+                    <Button.Background>
+                        <ImageBrush ImageSource="/Images/Layer-add.png"/>
+                    </Button.Background>
+                </Button>
+                <Button Command="{Binding LayerCommandsViewModel.NewGroupCommand, ElementName=layersManager}" Height="24" Width="24" ToolTip="New Group" Cursor="Hand"
+                                                HorizontalAlignment="Stretch" Margin="5"
+                                                Style="{StaticResource ToolButtonStyle}">
+                    <Button.Background>
+                        <ImageBrush ImageSource="/Images/Folder-add.png"/>
+                    </Button.Background>
+                </Button>
+                <Button Command="{Binding LayerCommandsViewModel.DeleteSelectedCommand, ElementName=layersManager}" Height="24" Width="24" ToolTip="Delete selected" CommandParameter="{Binding ElementName=treeView, Path=SelectedItem}" Cursor="Hand"
+                                                HorizontalAlignment="Stretch" Margin="5"
+                                                Style="{StaticResource ToolButtonStyle}">
+                    <Button.Background>
+                        <ImageBrush ImageSource="/Images/Trash.png"/>
+                    </Button.Background>
+                </Button>
+            </StackPanel>
+            <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" Margin="0,0,10,0" HorizontalAlignment="Right">
+                <Label Content="Opacity" Foreground="White" VerticalAlignment="Center"/>
+                <vws:NumberInput
+                        Min="0" Max="100"
+                        IsEnabled="{Binding Path=OpacityInputEnabled, ElementName=layersManager}" 
+                        Width="40" Height="20"
+                        VerticalAlignment="Center"
+                        Value="{Binding LayerOpacity, Mode=TwoWay,
+                        Converter={StaticResource FloatNormalizeConverter}, ElementName=layersManager}" />
+                <Label Content="%" Foreground="White" VerticalAlignment="Center"/>
+            </StackPanel>
+        </DockPanel>
         <Separator Grid.Row="1" Margin="0,-12, 0, 0" BorderBrush="{StaticResource DarkerAccentColor}" BorderThickness="2" />
-        <TreeView Grid.Row="2" Margin="0, -12, 0, 0" ItemsSource="{Binding LayerTreeRoot, ElementName=layersManager}">
+        <TreeView Name="treeView" Grid.Row="2" Margin="0, -12, 0, 0" ItemsSource="{Binding LayerTreeRoot, ElementName=layersManager}">
                 <TreeView.ItemsPanel>
                     <ItemsPanelTemplate>
                         <ui:ReversedOrderStackPanel/>