LayersViewModel.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using PixiEditor.Helpers;
  2. namespace PixiEditor.ViewModels.SubViewModels.Main
  3. {
  4. public class LayersViewModel : SubViewModel<ViewModelMain>
  5. {
  6. public RelayCommand SetActiveLayerCommand { get; set; }
  7. public RelayCommand NewLayerCommand { get; set; }
  8. public RelayCommand DeleteLayerCommand { get; set; }
  9. public RelayCommand RenameLayerCommand { get; set; }
  10. public RelayCommand MoveToBackCommand { get; set; }
  11. public RelayCommand MoveToFrontCommand { get; set; }
  12. public LayersViewModel(ViewModelMain owner)
  13. : base(owner)
  14. {
  15. SetActiveLayerCommand = new RelayCommand(SetActiveLayer);
  16. NewLayerCommand = new RelayCommand(NewLayer, CanCreateNewLayer);
  17. DeleteLayerCommand = new RelayCommand(DeleteLayer, CanDeleteLayer);
  18. MoveToBackCommand = new RelayCommand(MoveLayerToBack, CanMoveToBack);
  19. MoveToFrontCommand = new RelayCommand(MoveLayerToFront, CanMoveToFront);
  20. RenameLayerCommand = new RelayCommand(RenameLayer);
  21. }
  22. public void NewLayer(object parameter)
  23. {
  24. Owner.BitmapManager.AddNewLayer($"New Layer {Owner.BitmapManager.ActiveDocument.Layers.Count}");
  25. }
  26. public bool CanCreateNewLayer(object parameter)
  27. {
  28. return Owner.BitmapManager.ActiveDocument != null && Owner.BitmapManager.ActiveDocument.Layers.Count > 0;
  29. }
  30. public void SetActiveLayer(object parameter)
  31. {
  32. Owner.BitmapManager.SetActiveLayer((int)parameter);
  33. }
  34. public void DeleteLayer(object parameter)
  35. {
  36. Owner.BitmapManager.RemoveLayer((int)parameter);
  37. }
  38. public bool CanDeleteLayer(object property)
  39. {
  40. return Owner.BitmapManager.ActiveDocument != null && Owner.BitmapManager.ActiveDocument.Layers.Count > 1;
  41. }
  42. public void RenameLayer(object parameter)
  43. {
  44. Owner.BitmapManager.ActiveDocument.Layers[(int)parameter].IsRenaming = true;
  45. }
  46. public void MoveLayerToFront(object parameter)
  47. {
  48. int oldIndex = (int)parameter;
  49. Owner.BitmapManager.ActiveDocument.Layers.Move(oldIndex, oldIndex + 1);
  50. if (Owner.BitmapManager.ActiveDocument.ActiveLayerIndex == oldIndex)
  51. {
  52. Owner.BitmapManager.SetActiveLayer(oldIndex + 1);
  53. }
  54. }
  55. public void MoveLayerToBack(object parameter)
  56. {
  57. int oldIndex = (int)parameter;
  58. Owner.BitmapManager.ActiveDocument.Layers.Move(oldIndex, oldIndex - 1);
  59. if (Owner.BitmapManager.ActiveDocument.ActiveLayerIndex == oldIndex)
  60. {
  61. Owner.BitmapManager.SetActiveLayer(oldIndex - 1);
  62. }
  63. }
  64. public bool CanMoveToFront(object property)
  65. {
  66. return Owner.DocumentIsNotNull(null) && Owner.BitmapManager.ActiveDocument.Layers.Count - 1 > (int)property;
  67. }
  68. public bool CanMoveToBack(object property)
  69. {
  70. return (int)property > 0;
  71. }
  72. }
  73. }