keybinds.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package chat
  2. import (
  3. "github.com/ayn2op/tview/help"
  4. "github.com/ayn2op/tview/keybind"
  5. )
  6. var _ help.KeyMap = (*View)(nil)
  7. func (v *View) ShortHelp() []keybind.Keybind {
  8. short := make([]keybind.Keybind, 0, 16)
  9. if active := v.activeKeyMap(); active != nil {
  10. short = append(short, active.ShortHelp()...)
  11. }
  12. short = append(short, v.baseShortHelp()...)
  13. return short
  14. }
  15. func (v *View) FullHelp() [][]keybind.Keybind {
  16. full := make([][]keybind.Keybind, 0, 8)
  17. if active := v.activeKeyMap(); active != nil {
  18. full = append(full, active.FullHelp()...)
  19. }
  20. full = append(full, v.baseFullHelp()...)
  21. return full
  22. }
  23. func (v *View) activeKeyMap() help.KeyMap {
  24. if v.GetVisible(channelsPickerLayerName) {
  25. return v.channelsPicker
  26. }
  27. if v.app == nil {
  28. return nil
  29. }
  30. switch v.app.GetFocus() {
  31. case v.guildsTree:
  32. return v.guildsTree
  33. case v.messagesList:
  34. return v.messagesList
  35. case v.messageInput:
  36. return v.messageInput
  37. default:
  38. return nil
  39. }
  40. }
  41. func (v *View) baseShortHelp() []keybind.Keybind {
  42. cfg := v.cfg.Keybinds
  43. short := []keybind.Keybind{cfg.FocusGuildsTree.Keybind, cfg.FocusMessagesList.Keybind}
  44. if !v.messageInput.GetDisabled() {
  45. short = append(short, cfg.FocusMessageInput.Keybind)
  46. }
  47. short = append(short, cfg.ToggleGuildsTree.Keybind, cfg.ToggleChannelsPicker.Keybind, cfg.ToggleHelp.Keybind)
  48. return short
  49. }
  50. func (v *View) baseFullHelp() [][]keybind.Keybind {
  51. cfg := v.cfg.Keybinds
  52. focus := []keybind.Keybind{cfg.FocusGuildsTree.Keybind, cfg.FocusMessagesList.Keybind}
  53. if !v.messageInput.GetDisabled() {
  54. focus = append(focus, cfg.FocusMessageInput.Keybind)
  55. }
  56. return [][]keybind.Keybind{
  57. focus,
  58. {cfg.FocusPrevious.Keybind, cfg.FocusNext.Keybind},
  59. {cfg.ToggleGuildsTree.Keybind, cfg.ToggleChannelsPicker.Keybind},
  60. {cfg.ToggleHelp.Keybind, cfg.Suspend.Keybind, cfg.Logout.Keybind, cfg.Quit.Keybind},
  61. }
  62. }