win_bot_show.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // package win_bot_show -- показывает состояние бота
  2. package win_bot_show
  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. // WinBotShow -- показывает состояние бота на бото-сервере вар-танк
  12. type WinBotShow struct {
  13. *win_base.WinBase
  14. model tea.Model
  15. }
  16. // NewWinBotShow -- возвращает новое окно для показа состояния бота на бото-сервере вар-танк
  17. func NewWinBotShow(desk types.IDesktop) (*WinBotShow, error) {
  18. winBase, err := win_base.NewWinBase(desk, cons.WinConfigServer)
  19. if err != nil {
  20. return nil, fmt.Errorf("NewWinBotShow(): in create WinBase, err=\n\t%w", err)
  21. }
  22. sf := &WinBotShow{
  23. WinBase: winBase,
  24. }
  25. return sf, nil
  26. }
  27. // Init -- настраивает окно для бабл-теа
  28. func (sf *WinBotShow) Init() tea.Cmd {
  29. return nil
  30. }
  31. // Update -- обрабатывает команду цикла
  32. func (sf *WinBotShow) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
  33. winName := alias.AWinName("")
  34. switch msg := msg.(type) {
  35. // Может клавиша нажата
  36. case tea.KeyMsg:
  37. switch msg.String() { // Да, нажато, а что именно?
  38. case "esc": // Вернуться на шаг назад
  39. winName = cons.WinConfig
  40. case "1": // Запустить сервер
  41. sf.Desk().CurrentBotStart()
  42. }
  43. }
  44. if winName != "" {
  45. sf.Desk().SetWin(winName)
  46. return sf.model, nil
  47. }
  48. return nil, nil
  49. }
  50. // View -- перерисовывание окна по требованию
  51. func (sf *WinBotShow) View() string {
  52. _ = tea.ClearScreen()
  53. s := "Настройки сервера вар-танк\n\n"
  54. s += "[1]-Настройки хоста сервера\n"
  55. s += "[2]-Логин для входа\n"
  56. s += "[3]-Пароль для входа\n"
  57. s += "\n\n[ctrl+q]-выход [esc]-назад\n"
  58. return s
  59. }