win_config.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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.WinServerConnect
  41. }
  42. case "3": // Логин на сервер
  43. if !sf.Desk().IsLogin() {
  44. winName = cons.WinServerLogin
  45. }
  46. case "4": // Показать меню бото-фермы
  47. winName = cons.WinBotsMenu
  48. }
  49. }
  50. if winName != "" {
  51. sf.Desk().SetWin(winName)
  52. return sf.model, nil
  53. }
  54. return nil, nil
  55. }
  56. // View -- перерисовывание окна по требованию
  57. func (sf *WinConfig) View() string {
  58. _ = tea.ClearScreen()
  59. s := "Настройки клиента\n\n"
  60. s += "[1]-Настройки сервера\n"
  61. if !sf.Desk().IsConnect() {
  62. s += "[2]-Вход на сервер\n"
  63. }
  64. if !sf.Desk().IsLogin() {
  65. s += "[3]-Логин на сервер\n"
  66. }
  67. if sf.Desk().IsLogin() {
  68. s += "[4]-Меню бото-фермы\n"
  69. }
  70. s += "\n\n[ctrl+q]-выход [esc]-назад\n"
  71. return s
  72. }