win_config.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // package win_config -- окно конфигурирования
  2. package win_config
  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. // WinConfig -- окно конфигурирования
  12. type WinConfig struct {
  13. *win_base.WinBase
  14. model tea.Model // Модель для обработки
  15. }
  16. // NewWinConfig -- возвращает новое окно конфигурирования
  17. func NewWinConfig(desk types.IDesktop) (*WinConfig, error) {
  18. winBase, err := win_base.NewWinBase(desk, cons.WinConfig)
  19. if err != nil {
  20. return nil, fmt.Errorf("NewWinConfig(): in create WinBase, err=\n\t%w", err)
  21. }
  22. sf := &WinConfig{
  23. WinBase: winBase,
  24. }
  25. return sf, nil
  26. }
  27. // Update -- обрабатывает команду цикла
  28. func (sf *WinConfig) 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.WinConfigServer
  38. case "2": // Вход на сервер
  39. if !sf.Desk().IsConnect() {
  40. winName = cons.WinConnectServer
  41. }
  42. case "3": // Логин на сервер
  43. if !sf.Desk().IsLogin() {
  44. winName = cons.WinLoginServer
  45. }
  46. case "4": // Создать админа
  47. winName = cons.WinServerMakeAdmin
  48. case "5": // Показать меню бото-фермы
  49. winName = cons.WinShowMenuBot
  50. }
  51. }
  52. if winName != "" {
  53. sf.Desk().SetWin(winName)
  54. return sf.model, nil
  55. }
  56. return nil, nil
  57. }
  58. // View -- перерисовывание окна по требованию
  59. func (sf *WinConfig) View() string {
  60. s := "Настройки клиента\n\n"
  61. s += "[1]-Настройки сервера\n"
  62. s += "[2]-Вход на сервер\n"
  63. s += "[3]-Логин на сервер\n"
  64. s += "[4]-Сделать админа на бот-сервере\n"
  65. s += "[5]-Меню бото-фермы\n"
  66. s += "\n\n[ctrl+q]-выход [esc]-назад\n"
  67. return s
  68. }