MoveToolViewModel.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using Avalonia.Input;
  2. using PixiEditor.AvaloniaUI.Models.Commands.Attributes.Commands;
  3. using PixiEditor.AvaloniaUI.Models.Handlers.Tools;
  4. using PixiEditor.AvaloniaUI.ViewModels.Tools.ToolSettings.Toolbars;
  5. using PixiEditor.AvaloniaUI.Views.Overlays.BrushShapeOverlay;
  6. using PixiEditor.DrawingApi.Core.Numerics;
  7. using PixiEditor.Extensions.Common.Localization;
  8. namespace PixiEditor.AvaloniaUI.ViewModels.Tools.Tools;
  9. [Command.Tool(Key = Key.V)]
  10. internal class MoveToolViewModel : ToolViewModel, IMoveToolHandler
  11. {
  12. private string defaultActionDisplay = "MOVE_TOOL_ACTION_DISPLAY";
  13. public override string ToolNameLocalizationKey => "MOVE_TOOL";
  14. private string transformingActionDisplay = "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING";
  15. private bool transformingSelectedArea = false;
  16. public bool MoveAllLayers { get; set; }
  17. public MoveToolViewModel()
  18. {
  19. ActionDisplay = defaultActionDisplay;
  20. Toolbar = ToolbarFactory.Create(this);
  21. Cursor = new Cursor(StandardCursorType.Arrow);
  22. }
  23. public override LocalizedString Tooltip => new LocalizedString("MOVE_TOOL_TOOLTIP", Shortcut);
  24. [Settings.Bool("KEEP_ORIGINAL_IMAGE_SETTING")]
  25. public bool KeepOriginalImage => GetValue<bool>();
  26. public override BrushShape BrushShape => BrushShape.Hidden;
  27. public override bool HideHighlight => true;
  28. public bool TransformingSelectedArea
  29. {
  30. get => transformingSelectedArea;
  31. set
  32. {
  33. transformingSelectedArea = value;
  34. ActionDisplay = value ? transformingActionDisplay : defaultActionDisplay;
  35. }
  36. }
  37. public override void UseTool(VecD pos)
  38. {
  39. ViewModelMain.Current.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseShiftLayerTool();
  40. }
  41. public override void ModifierKeyChanged(bool ctrlIsDown, bool shiftIsDown, bool altIsDown)
  42. {
  43. if (TransformingSelectedArea)
  44. {
  45. return;
  46. }
  47. if (ctrlIsDown)
  48. {
  49. ActionDisplay = new LocalizedString("MOVE_TOOL_ACTION_DISPLAY_CTRL");
  50. MoveAllLayers = true;
  51. }
  52. else
  53. {
  54. ActionDisplay = defaultActionDisplay;
  55. MoveAllLayers = false;
  56. }
  57. }
  58. public override void OnSelected()
  59. {
  60. ViewModelMain.Current.DocumentManagerSubViewModel.ActiveDocument?.Operations.TransformSelectedArea(true);
  61. }
  62. }