| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- // package win_config -- окно конфигурирования
- package win_config
- import (
- "fmt"
- tea "github.com/charmbracelet/bubbletea"
- "wartank/desktop/win_base"
- "wartank/pkg/alias"
- "wartank/pkg/cons"
- "wartank/pkg/types"
- )
- // WinConfig -- окно конфигурирования
- type WinConfig struct {
- *win_base.WinBase
- model tea.Model // Модель для обработки
- }
- // NewWinConfig -- возвращает новое окно конфигурирования
- func NewWinConfig(desk types.IDesktop) (*WinConfig, error) {
- winBase, err := win_base.NewWinBase(desk, cons.WinConfig)
- if err != nil {
- return nil, fmt.Errorf("NewWinConfig(): in create WinBase, err=\n\t%w", err)
- }
- sf := &WinConfig{
- WinBase: winBase,
- }
- return sf, nil
- }
- // Update -- обрабатывает команду цикла
- func (sf *WinConfig) 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.WinConfigServer
- case "2": // Вход на сервер
- if !sf.Desk().IsConnect() {
- winName = cons.WinConnectServer
- }
- case "3": // Логин на сервер
- if !sf.Desk().IsLogin() {
- winName = cons.WinLoginServer
- }
- case "4": // Создать админа
- winName = cons.WinServerMakeAdmin
- case "5": // Показать меню бото-фермы
- winName = cons.WinShowMenuBot
- }
- }
- if winName != "" {
- sf.Desk().SetWin(winName)
- return sf.model, nil
- }
- return nil, nil
- }
- // View -- перерисовывание окна по требованию
- func (sf *WinConfig) View() string {
- s := "Настройки клиента\n\n"
- s += "[1]-Настройки сервера\n"
- s += "[2]-Вход на сервер\n"
- s += "[3]-Логин на сервер\n"
- s += "[4]-Сделать админа на бот-сервере\n"
- s += "[5]-Меню бото-фермы\n"
- s += "\n\n[ctrl+q]-выход [esc]-назад\n"
- return s
- }
|