SearchViewModel.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using Avalonia.Input;
  2. using ChunkyImageLib;
  3. using PixiEditor.AvaloniaUI.Models.Commands.Attributes.Commands;
  4. using PixiEditor.AvaloniaUI.Models.Commands.Attributes.Evaluators;
  5. using PixiEditor.AvaloniaUI.Models.Handlers;
  6. using PixiEditor.DrawingApi.Core.Numerics;
  7. using PixiEditor.Extensions.Common.Localization;
  8. namespace PixiEditor.AvaloniaUI.ViewModels.SubViewModels;
  9. [Command.Group("PixiEditor.Search", "SEARCH")]
  10. internal class SearchViewModel : SubViewModel<ViewModelMain>, ISearchHandler
  11. {
  12. private bool searchWindowOpen;
  13. private bool selectAll;
  14. private string searchTerm;
  15. public bool SearchWindowOpen
  16. {
  17. get => searchWindowOpen;
  18. set => SetProperty(ref searchWindowOpen, value);
  19. }
  20. public string SearchTerm
  21. {
  22. get => searchTerm;
  23. set => SetProperty(ref searchTerm, value);
  24. }
  25. public bool SelectAll
  26. {
  27. get => selectAll;
  28. set => SetProperty(ref selectAll, value);
  29. }
  30. public SearchViewModel(ViewModelMain owner) : base(owner)
  31. { }
  32. [Evaluator.CanExecute("PixiEditor.Search.CanOpenSearchWindow")]
  33. public bool CanToggleSearchWindow() => !ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.Busy ?? true;
  34. [Command.Basic("PixiEditor.Search.Toggle", "", "COMMAND_SEARCH", "OPEN_COMMAND_SEARCH", Key = Key.K, Modifiers = KeyModifiers.Control, CanExecute = "PixiEditor.Search.CanOpenSearchWindow")]
  35. [Command.Basic("PixiEditor.Search.BrowseDirectory", "./", "BROWSE_DIRECTORY", "BROWSE_DIRECTORY", Key = Key.F, Modifiers = KeyModifiers.Control, CanExecute = "PixiEditor.Search.CanOpenSearchWindow")]
  36. public void ToggleSearchWindow(string searchTerm)
  37. {
  38. SelectAll = true;
  39. SearchWindowOpen = !SearchWindowOpen;
  40. if (SearchWindowOpen)
  41. {
  42. SearchTerm = searchTerm;
  43. }
  44. }
  45. public void OpenSearchWindow(string searchTerm, bool selectAll = true)
  46. {
  47. SelectAll = selectAll;
  48. SearchWindowOpen = true;
  49. SearchTerm = searchTerm;
  50. }
  51. }