win_config.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. s := "Настройки клиента\n\n"
  59. s += "[1]-Настройки сервера\n"
  60. if !sf.Desk().IsConnect() {
  61. s += "[2]-Вход на сервер\n"
  62. }
  63. if !sf.Desk().IsLogin() {
  64. s += "[3]-Логин на сервер\n"
  65. }
  66. if sf.Desk().IsLogin() {
  67. s += "[4]-Меню бото-фермы\n"
  68. }
  69. s += "\n\n[ctrl+q]-выход [esc]-назад\n"
  70. return s
  71. }