// package win_bots_menu -- меню бото-фермы package win_bots_menu import ( "fmt" tea "github.com/charmbracelet/bubbletea" "wartank/desktop/win_base" "wartank/pkg/alias" "wartank/pkg/cons" "wartank/pkg/types" ) // WinBotsMenu -- окно меню бото-фермы type WinBotsMenu struct { *win_base.WinBase model tea.Model // Модель для обработки } // NewWinBotsMenu -- возвращает новое окно меню бото-фермы func NewWinBotsMenu(desk types.IDesktop) (*WinBotsMenu, error) { winBase, err := win_base.NewWinBase(desk, cons.WinBotsMenu) if err != nil { return nil, fmt.Errorf("NewWinBotsMenu(): in create WinBase, err=\n\t%w", err) } sf := &WinBotsMenu{ WinBase: winBase, } return sf, nil } // Update -- обрабатывает команду цикла func (sf *WinBotsMenu) Update(msg tea.Msg) (tea.Model, tea.Cmd) { winName := alias.AWinName("") switch msg := msg.(type) { // Может клавиша нажата case tea.KeyMsg: switch msg.String() { // Да, нажато, а что именно? case "esc": // Вернуться на шаг назад winName = cons.WinDefault case "1": // Выбор один winName = cons.WinBotsAddLogin } } if winName != "" { sf.Desk().SetWin(winName) return sf.model, nil } return nil, nil } // View -- перерисовывание окна по требованию func (sf *WinBotsMenu) View() string { s := "=Меню бото-фермы вар-танк=\n\n" s += "[1]-Добавить бота\n" s += "[2]-Удалить бота\n" s += "[3]-Список ботов\n" s += "\n\n[ctrl+q]-выход [esc]-отмена\n" return s }