win_bots_menu.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // package win_bots_menu -- меню бото-фермы
  2. package win_bots_menu
  3. import (
  4. "fmt"
  5. tea "github.com/charmbracelet/bubbletea"
  6. "wartank/desktop/win_base"
  7. "wartank/pkg/alias"
  8. "wartank/pkg/cons"
  9. "wartank/pkg/types"
  10. )
  11. // WinBotsMenu -- окно меню бото-фермы
  12. type WinBotsMenu struct {
  13. *win_base.WinBase
  14. model tea.Model // Модель для обработки
  15. }
  16. // NewWinBotsMenu -- возвращает новое окно меню бото-фермы
  17. func NewWinBotsMenu(desk types.IDesktop) (*WinBotsMenu, error) {
  18. winBase, err := win_base.NewWinBase(desk, cons.WinBotsMenu)
  19. if err != nil {
  20. return nil, fmt.Errorf("NewWinBotsMenu(): in create WinBase, err=\n\t%w", err)
  21. }
  22. sf := &WinBotsMenu{
  23. WinBase: winBase,
  24. }
  25. return sf, nil
  26. }
  27. // Update -- обрабатывает команду цикла
  28. func (sf *WinBotsMenu) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
  29. winName := alias.AWinName("")
  30. switch msg := msg.(type) {
  31. // Может клавиша нажата
  32. case tea.KeyMsg:
  33. switch msg.String() { // Да, нажато, а что именно?
  34. case "esc": // Вернуться на шаг назад
  35. winName = cons.WinDefault
  36. case "1": // Выбор один
  37. winName = cons.WinBotsAddLogin
  38. case "3": // Список ботов
  39. winName = cons.WinBotsList
  40. }
  41. }
  42. if winName != "" {
  43. sf.Desk().SetWin(winName)
  44. return sf.model, nil
  45. }
  46. return nil, nil
  47. }
  48. // View -- перерисовывание окна по требованию
  49. func (sf *WinBotsMenu) View() string {
  50. s := "=Меню бото-фермы вар-танк=\n\n"
  51. s += "[1]-Добавить бота\n"
  52. s += "[2]-Удалить бота\n"
  53. s += "[3]-Список ботов\n"
  54. s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
  55. return s
  56. }