|
@@ -1,7 +1,10 @@
|
|
|
-using System.Collections;
|
|
|
+using System;
|
|
|
+using System.Collections;
|
|
|
using System.Collections.ObjectModel;
|
|
|
+using System.Diagnostics;
|
|
|
using System.Windows;
|
|
|
using System.Windows.Controls;
|
|
|
+using PixiEditor.Models.Layers;
|
|
|
using PixiEditor.ViewModels.SubViewModels.Main;
|
|
|
|
|
|
namespace PixiEditor.Views.UserControls
|
|
@@ -11,6 +14,8 @@ namespace PixiEditor.Views.UserControls
|
|
|
/// </summary>
|
|
|
public partial class LayersManager : UserControl
|
|
|
{
|
|
|
+ private object cachedItem = null;
|
|
|
+
|
|
|
public ObservableCollection<object> LayerTreeRoot
|
|
|
{
|
|
|
get { return (ObservableCollection<object>)GetValue(LayerTreeRootProperty); }
|
|
@@ -23,7 +28,32 @@ namespace PixiEditor.Views.UserControls
|
|
|
"LayerTreeRoot",
|
|
|
typeof(ObservableCollection<object>),
|
|
|
typeof(LayersManager),
|
|
|
- new PropertyMetadata(default(ObservableCollection<object>)));
|
|
|
+ new PropertyMetadata(default(ObservableCollection<object>), ItemsChanged));
|
|
|
+
|
|
|
+ private static void ItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
|
+ {
|
|
|
+ var items = (ObservableCollection<object>)e.NewValue;
|
|
|
+ LayersManager manager = (LayersManager)d;
|
|
|
+ if (items != null && items.Count > 0 && ((ObservableCollection<object>)e.OldValue).Count == 0)
|
|
|
+ {
|
|
|
+ var item = items[0];
|
|
|
+ manager.cachedItem = item;
|
|
|
+ var numberInput = manager.numberInput;
|
|
|
+ SetInputOpacity(item, numberInput);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void SetInputOpacity(object item, NumberInput numberInput)
|
|
|
+ {
|
|
|
+ if (item is Layer layer)
|
|
|
+ {
|
|
|
+ numberInput.Value = layer.Opacity * 100f;
|
|
|
+ }
|
|
|
+ else if (item is LayerGroup group)
|
|
|
+ {
|
|
|
+ numberInput.Value = group.StructureData.Opacity * 100f;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public LayersViewModel LayerCommandsViewModel
|
|
|
{
|
|
@@ -65,5 +95,32 @@ namespace PixiEditor.Views.UserControls
|
|
|
DragDrop.DoDragDrop(container, container, DragDropEffects.Move);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void NumberInput_LostFocus(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ float val = numberInput.Value / 100f;
|
|
|
+
|
|
|
+ object item = treeView.SelectedItem;
|
|
|
+
|
|
|
+ if (item == null && cachedItem != null)
|
|
|
+ {
|
|
|
+ item = cachedItem;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (item is Layer layer)
|
|
|
+ {
|
|
|
+ layer.Opacity = val;
|
|
|
+ }
|
|
|
+ else if(item is LayerGroup group)
|
|
|
+ {
|
|
|
+ var groupData = LayerCommandsViewModel.Owner.BitmapManager.ActiveDocument.LayerStructure.GetGroupByGuid(group.GroupGuid);
|
|
|
+ groupData.Opacity = val;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
|
|
|
+ {
|
|
|
+ SetInputOpacity(treeView.SelectedItem, numberInput);
|
|
|
+ }
|
|
|
}
|
|
|
}
|