| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- // package win_config_server -- конфигурация для подключения к бото-серверу вар-танк
- package win_config_server
- import (
- "fmt"
- "github.com/charmbracelet/bubbles/textinput"
- tea "github.com/charmbracelet/bubbletea"
- "wartank/desktop/win_base"
- "wartank/pkg/alias"
- "wartank/pkg/cons"
- "wartank/pkg/types"
- )
- // WinConfigServer -- конфигурация для подключения к бото-серверу вар-танк
- type WinConfigServer struct {
- *win_base.WinBase
- model tea.Model
- textInput textinput.Model
- }
- // NewWinConfigServer -- возвращает новое окно для подключения к бото-серверу вар-танк
- func NewWinConfigServer(desk types.IDesktop) (*WinConfigServer, error) {
- winBase, err := win_base.NewWinBase(desk, cons.WinConfigServer)
- if err != nil {
- return nil, fmt.Errorf("NewWinConfigServer(): in create WinBase, err=\n\t%w", err)
- }
- sf := &WinConfigServer{
- WinBase: winBase,
- }
- return sf, nil
- }
- // Init -- настраивает окно для бабл-теа
- func (sf *WinConfigServer) Init() tea.Cmd {
- return textinput.Blink
- }
- // Update -- обрабатывает команду цикла
- func (sf *WinConfigServer) 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.WinConfig
- case "1": // Выбор хоста сервера
- winName = cons.WinConfigServerHostInput
- sf.textInput.Reset()
- sf.textInput.Placeholder = "localhost:18050"
- case "2": // Выбор логина для входа
- winName = cons.WinInputLoginServer
- sf.textInput.Reset()
- sf.textInput.Placeholder = "login"
- case "3": // Выбор пароля для входа
- winName = cons.WinInputPassServer
- sf.textInput.Reset()
- sf.textInput.Placeholder = "pass"
- }
- }
- if winName != "" {
- sf.Desk().SetWin(winName)
- return sf.model, nil
- }
- return nil, nil
- }
- // View -- перерисовывание окна по требованию
- func (sf *WinConfigServer) View() string {
- s := "Настройки сервера вар-танк\n\n"
- s += "[1]-Настройки хоста сервера\n"
- s += "[2]-Логин для входа\n"
- s += "[3]-Пароль для входа\n"
- s += "\n\n[ctrl+q]-выход [esc]-назад\n"
- return s
- }
|