|
@@ -3,62 +3,65 @@ package desktop
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
"fmt"
|
|
"fmt"
|
|
|
- "os"
|
|
|
|
|
"time"
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/charmbracelet/bubbles/textinput"
|
|
"github.com/charmbracelet/bubbles/textinput"
|
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
|
|
|
|
|
|
"wartank/desktop/client_serv"
|
|
"wartank/desktop/client_serv"
|
|
|
|
|
+ "wartank/desktop/win_config"
|
|
|
|
|
+ "wartank/desktop/win_default"
|
|
|
|
|
+ "wartank/pkg/alias"
|
|
|
|
|
+ "wartank/pkg/cons"
|
|
|
|
|
+ "wartank/pkg/types"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
// Desktop -- консольный клиент для вар-танка
|
|
// Desktop -- консольный клиент для вар-танка
|
|
|
type Desktop struct {
|
|
type Desktop struct {
|
|
|
TeaModel
|
|
TeaModel
|
|
|
- p *tea.Program // Объект приложения
|
|
|
|
|
- client *client_serv.ClientServ // Клиент подключния к бото-серверу
|
|
|
|
|
- isConnect bool // Признак подключения к бот-серверу
|
|
|
|
|
- isLogin bool // Признак логина на сервер
|
|
|
|
|
- isMakeAdmin bool // Признак создания админа
|
|
|
|
|
|
|
+ winName alias.AWinName // Режим показа на экране
|
|
|
|
|
+ p *tea.Program // Объект приложения
|
|
|
|
|
+ client *client_serv.ClientServ // Клиент подключния к бото-серверу
|
|
|
|
|
+ isConnect bool // Признак подключения к бот-серверу
|
|
|
|
|
+ isLogin bool // Признак логина на сервер
|
|
|
|
|
+ isMakeAdmin bool // Признак создания админа
|
|
|
|
|
+ dictWin map[alias.AWinName]types.ITermWin // Список окон показа
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
var desk *Desktop
|
|
var desk *Desktop
|
|
|
|
|
|
|
|
-func NewDesktop() *Desktop {
|
|
|
|
|
|
|
+func NewDesktop() (*Desktop, error) {
|
|
|
sf := &Desktop{
|
|
sf := &Desktop{
|
|
|
- client: client_serv.NewClientServ(),
|
|
|
|
|
|
|
+ client: client_serv.NewClientServ(),
|
|
|
|
|
+ dictWin: make(map[alias.AWinName]types.ITermWin),
|
|
|
}
|
|
}
|
|
|
sf.TeaModel = NewModel()
|
|
sf.TeaModel = NewModel()
|
|
|
- go sf.tick()
|
|
|
|
|
sf.p = tea.NewProgram(sf, tea.WithAltScreen(), tea.WithANSICompressor())
|
|
sf.p = tea.NewProgram(sf, tea.WithAltScreen(), tea.WithANSICompressor())
|
|
|
desk = sf
|
|
desk = sf
|
|
|
- if _, err := sf.p.Run(); err != nil {
|
|
|
|
|
- fmt.Printf("Опа! здесь какая-то ошибочка: %v", err)
|
|
|
|
|
- os.Exit(1)
|
|
|
|
|
|
|
+ { // Создание окон
|
|
|
|
|
+ winDefault, err := win_default.NewWinDefault(sf)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil, fmt.Errorf("NewDesktop(): in create WinDefault, err=\n\t%w", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ sf.dictWin[winDefault.Name()] = winDefault
|
|
|
|
|
+
|
|
|
|
|
+ winConfig, err := win_config.NewWinConfig(sf)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil, fmt.Errorf("NewDesktop(): in create WinConfig, err=\n\t%w", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ sf.dictWin[winConfig.Name()] = winConfig
|
|
|
}
|
|
}
|
|
|
- return sf
|
|
|
|
|
|
|
+ sf.winName = cons.WinDefault
|
|
|
|
|
+ go sf.tick()
|
|
|
|
|
+ return sf, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// AMode -- режим обработки клавиш
|
|
|
|
|
-type AMode int
|
|
|
|
|
-
|
|
|
|
|
-const (
|
|
|
|
|
- ModeDefault AMode = iota
|
|
|
|
|
- ModeConfig // Режим конфигурирования
|
|
|
|
|
- ModeConfigServer // Режим конфигуррования сервера
|
|
|
|
|
- ModeInputHostServer // Режим ввода хоста сервера
|
|
|
|
|
- ModeInputLoginServer // Режим ввода логина на сервер
|
|
|
|
|
- ModeInputPassServer // Режим ввода пароля входа на сервер
|
|
|
|
|
- ModeConnectServer // Режим подключения к серверу
|
|
|
|
|
- ModeLoginServer // Режим логина на сервер
|
|
|
|
|
- ModeServerMakeAdmin // Создать админа для бот-сервера
|
|
|
|
|
-)
|
|
|
|
|
|
|
+// SetWin -- устанавливает главное окно
|
|
|
|
|
+func (sf *Desktop) SetWin(winName alias.AWinName) {
|
|
|
|
|
+ sf.winName = winName
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
type TeaModel struct {
|
|
type TeaModel struct {
|
|
|
- choices []string // выбранный пункт в списке
|
|
|
|
|
- cursor int // позиция курсора в списке
|
|
|
|
|
- selected map[int]struct{} // что выбрано из списка
|
|
|
|
|
- mode AMode // Режим показа на экране
|
|
|
|
|
textInput textinput.Model
|
|
textInput textinput.Model
|
|
|
host string // Имя хоста сервера (с портом)
|
|
host string // Имя хоста сервера (с портом)
|
|
|
login string // Логин для сервера
|
|
login string // Логин для сервера
|
|
@@ -73,9 +76,6 @@ func NewModel() TeaModel {
|
|
|
ti.Width = 20
|
|
ti.Width = 20
|
|
|
|
|
|
|
|
m := TeaModel{
|
|
m := TeaModel{
|
|
|
- // Список дел
|
|
|
|
|
- choices: []string{"Купить картошку", "Оплатить мобилку", "Заплатить за кредит"},
|
|
|
|
|
- selected: make(map[int]struct{}),
|
|
|
|
|
textInput: ti,
|
|
textInput: ti,
|
|
|
}
|
|
}
|
|
|
return m
|
|
return m
|
|
@@ -92,15 +92,18 @@ func (sf *Desktop) tick() {
|
|
|
|
|
|
|
|
// Run -- запускает в работу консольный клиент
|
|
// Run -- запускает в работу консольный клиент
|
|
|
func (sf *Desktop) Run() error {
|
|
func (sf *Desktop) Run() error {
|
|
|
|
|
+ if _, err := sf.p.Run(); err != nil {
|
|
|
|
|
+ return fmt.Errorf("Deskto.Run(): err=\n\t%w", err)
|
|
|
|
|
+ }
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (sf Desktop) Init() tea.Cmd {
|
|
|
|
|
|
|
+func (sf *Desktop) Init() tea.Cmd {
|
|
|
// Просто вернуть `nil`, т.е. никаких команд
|
|
// Просто вернуть `nil`, т.е. никаких команд
|
|
|
return textinput.Blink
|
|
return textinput.Blink
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (sf Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
|
|
|
|
+func (sf *Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
var cmd tea.Cmd
|
|
var cmd tea.Cmd
|
|
|
switch msg := msg.(type) {
|
|
switch msg := msg.(type) {
|
|
|
// Может клавиша нажата
|
|
// Может клавиша нажата
|
|
@@ -110,176 +113,152 @@ func (sf Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
return sf, tea.Quit
|
|
return sf, tea.Quit
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- switch desk.mode {
|
|
|
|
|
- case ModeDefault:
|
|
|
|
|
- switch msg := msg.(type) {
|
|
|
|
|
- // Может клавиша нажата
|
|
|
|
|
- case tea.KeyMsg:
|
|
|
|
|
- switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
- case "up", "k": // Если "up" или "k" перемещение курсора вверх
|
|
|
|
|
- if desk.cursor > 0 {
|
|
|
|
|
- desk.cursor--
|
|
|
|
|
- }
|
|
|
|
|
- case "down", "j": // Если "down" или "j" перемещение курсора вниз
|
|
|
|
|
- if desk.cursor < len(desk.choices)-1 {
|
|
|
|
|
- desk.cursor++
|
|
|
|
|
- }
|
|
|
|
|
- case "enter", " ": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
|
|
- _, ok := desk.selected[desk.cursor]
|
|
|
|
|
- if ok {
|
|
|
|
|
- delete(desk.selected, desk.cursor)
|
|
|
|
|
- } else {
|
|
|
|
|
- desk.selected[desk.cursor] = struct{}{}
|
|
|
|
|
- }
|
|
|
|
|
- case "w": // Настройки графического клиента
|
|
|
|
|
- desk.mode = ModeConfig
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- case ModeConfig:
|
|
|
|
|
- switch msg := msg.(type) {
|
|
|
|
|
- // Может клавиша нажата
|
|
|
|
|
- case tea.KeyMsg:
|
|
|
|
|
- switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
- case "esc": // Вернуться на шаг назад
|
|
|
|
|
- desk.mode = ModeDefault
|
|
|
|
|
- case "1": // Выбор один
|
|
|
|
|
- desk.mode = ModeConfigServer
|
|
|
|
|
- case "2": // Вход на сервер
|
|
|
|
|
- if !desk.isConnect {
|
|
|
|
|
- desk.mode = ModeConnectServer
|
|
|
|
|
- }
|
|
|
|
|
- case "3": // Логин на сервер
|
|
|
|
|
- if !desk.isLogin {
|
|
|
|
|
- desk.mode = ModeLoginServer
|
|
|
|
|
- }
|
|
|
|
|
- case "4": // Создать админа
|
|
|
|
|
- desk.mode = ModeServerMakeAdmin
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- case ModeConfigServer:
|
|
|
|
|
- switch msg := msg.(type) {
|
|
|
|
|
- // Может клавиша нажата
|
|
|
|
|
- case tea.KeyMsg:
|
|
|
|
|
- switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
- case "esc": // Вернуться на шаг назад
|
|
|
|
|
- desk.mode = ModeConfig
|
|
|
|
|
- case "1": // Выбор хоста сервера
|
|
|
|
|
- desk.mode = ModeInputHostServer
|
|
|
|
|
- desk.textInput.Reset()
|
|
|
|
|
- desk.textInput.Placeholder = "localhost:18050"
|
|
|
|
|
- case "2": // Выбор логина для входа
|
|
|
|
|
- desk.mode = ModeInputLoginServer
|
|
|
|
|
- desk.textInput.Reset()
|
|
|
|
|
- desk.textInput.Placeholder = "login"
|
|
|
|
|
- case "3": // Выбор пароля для входа
|
|
|
|
|
- desk.mode = ModeInputPassServer
|
|
|
|
|
- desk.textInput.Reset()
|
|
|
|
|
- desk.textInput.Placeholder = "pass"
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- case ModeInputHostServer:
|
|
|
|
|
- switch msg := msg.(type) {
|
|
|
|
|
- // Может клавиша нажата
|
|
|
|
|
- case tea.KeyMsg:
|
|
|
|
|
- switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
- case "esc": // Вернуться на шаг назад
|
|
|
|
|
- desk.mode = ModeConfigServer
|
|
|
|
|
- case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
|
|
- desk.host = desk.textInput.Value()
|
|
|
|
|
- desk.mode = ModeConfigServer
|
|
|
|
|
- default:
|
|
|
|
|
- desk.textInput, cmd = desk.textInput.Update(msg)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- case ModeInputLoginServer:
|
|
|
|
|
- switch msg := msg.(type) {
|
|
|
|
|
- // Может клавиша нажата
|
|
|
|
|
- case tea.KeyMsg:
|
|
|
|
|
- switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
- case "esc": // Вернуться на шаг назад
|
|
|
|
|
- desk.mode = ModeConfigServer
|
|
|
|
|
- case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
|
|
- desk.login = desk.textInput.Value()
|
|
|
|
|
- desk.mode = ModeConfigServer
|
|
|
|
|
- default:
|
|
|
|
|
- desk.textInput, cmd = desk.textInput.Update(msg)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- case ModeInputPassServer:
|
|
|
|
|
- switch msg := msg.(type) {
|
|
|
|
|
- // Может клавиша нажата
|
|
|
|
|
- case tea.KeyMsg:
|
|
|
|
|
- switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
- case "esc": // Вернуться на шаг назад
|
|
|
|
|
- desk.mode = ModeConfigServer
|
|
|
|
|
- case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
|
|
- desk.pass = desk.textInput.Value()
|
|
|
|
|
- desk.mode = ModeConfigServer
|
|
|
|
|
- default:
|
|
|
|
|
- desk.textInput, cmd = desk.textInput.Update(msg)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- case ModeConnectServer:
|
|
|
|
|
- switch msg := msg.(type) {
|
|
|
|
|
- // Может клавиша нажата
|
|
|
|
|
- case tea.KeyMsg:
|
|
|
|
|
- switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
- case "esc": // Нажатие "esc" прекращает подключение к серверу
|
|
|
|
|
- desk.mode = ModeConfigServer
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- case ModeLoginServer:
|
|
|
|
|
- switch msg := msg.(type) {
|
|
|
|
|
- // Может клавиша нажата
|
|
|
|
|
- case tea.KeyMsg:
|
|
|
|
|
- switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
- case "esc": // Нажатие "esc" прекращает логин на сервер
|
|
|
|
|
- desk.mode = ModeConfig
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- case ModeServerMakeAdmin:
|
|
|
|
|
- switch msg := msg.(type) {
|
|
|
|
|
- // Может клавиша нажата
|
|
|
|
|
- case tea.KeyMsg:
|
|
|
|
|
- switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
- case "esc": // Нажатие "esc" прекращает логин на сервер
|
|
|
|
|
- desk.mode = ModeConfig
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ mod_, cmd_ := sf.dictWin[sf.winName].Update(msg)
|
|
|
|
|
+ if mod_ != nil {
|
|
|
|
|
+ return mod_, cmd_
|
|
|
}
|
|
}
|
|
|
- // Возвращает обновлённую модель дляe Bubble Tea runtime для обработки.
|
|
|
|
|
- //Здесь команду возвращать надо.
|
|
|
|
|
-
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ case ModeConfigServer:
|
|
|
|
|
+ // switch msg := msg.(type) {
|
|
|
|
|
+ // // Может клавиша нажата
|
|
|
|
|
+ // case tea.KeyMsg:
|
|
|
|
|
+ // switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
+ // case "esc": // Вернуться на шаг назад
|
|
|
|
|
+ // desk.winName = ModeConfig
|
|
|
|
|
+ // case "1": // Выбор хоста сервера
|
|
|
|
|
+ // desk.winName = ModeInputHostServer
|
|
|
|
|
+ // desk.textInput.Reset()
|
|
|
|
|
+ // desk.textInput.Placeholder = "localhost:18050"
|
|
|
|
|
+ // case "2": // Выбор логина для входа
|
|
|
|
|
+ // desk.winName = ModeInputLoginServer
|
|
|
|
|
+ // desk.textInput.Reset()
|
|
|
|
|
+ // desk.textInput.Placeholder = "login"
|
|
|
|
|
+ // case "3": // Выбор пароля для входа
|
|
|
|
|
+ // desk.winName = ModeInputPassServer
|
|
|
|
|
+ // desk.textInput.Reset()
|
|
|
|
|
+ // desk.textInput.Placeholder = "pass"
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ case ModeInputHostServer:
|
|
|
|
|
+ // switch msg := msg.(type) {
|
|
|
|
|
+ // // Может клавиша нажата
|
|
|
|
|
+ // case tea.KeyMsg:
|
|
|
|
|
+ // switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
+ // case "esc": // Вернуться на шаг назад
|
|
|
|
|
+ // desk.winName = ModeConfigServer
|
|
|
|
|
+ // case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
|
|
+ // desk.host = desk.textInput.Value()
|
|
|
|
|
+ // desk.winName = ModeConfigServer
|
|
|
|
|
+ // default:
|
|
|
|
|
+ // desk.textInput, cmd = desk.textInput.Update(msg)
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ case ModeInputLoginServer:
|
|
|
|
|
+ // switch msg := msg.(type) {
|
|
|
|
|
+ // // Может клавиша нажата
|
|
|
|
|
+ // case tea.KeyMsg:
|
|
|
|
|
+ // switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
+ // case "esc": // Вернуться на шаг назад
|
|
|
|
|
+ // desk.winName = ModeConfigServer
|
|
|
|
|
+ // case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
|
|
+ // desk.login = desk.textInput.Value()
|
|
|
|
|
+ // desk.winName = ModeConfigServer
|
|
|
|
|
+ // default:
|
|
|
|
|
+ // desk.textInput, cmd = desk.textInput.Update(msg)
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ case ModeInputPassServer:
|
|
|
|
|
+ // switch msg := msg.(type) {
|
|
|
|
|
+ // // Может клавиша нажата
|
|
|
|
|
+ // case tea.KeyMsg:
|
|
|
|
|
+ // switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
+ // case "esc": // Вернуться на шаг назад
|
|
|
|
|
+ // desk.winName = ModeConfigServer
|
|
|
|
|
+ // case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
|
|
+ // desk.pass = desk.textInput.Value()
|
|
|
|
|
+ // desk.winName = ModeConfigServer
|
|
|
|
|
+ // default:
|
|
|
|
|
+ // desk.textInput, cmd = desk.textInput.Update(msg)
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ case ModeConnectServer:
|
|
|
|
|
+ // switch msg := msg.(type) {
|
|
|
|
|
+ // // Может клавиша нажата
|
|
|
|
|
+ // case tea.KeyMsg:
|
|
|
|
|
+ // switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
+ // case "esc": // Нажатие "esc" прекращает подключение к серверу
|
|
|
|
|
+ // desk.winName = ModeConfigServer
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ case ModeLoginServer:
|
|
|
|
|
+ // switch msg := msg.(type) {
|
|
|
|
|
+ // // Может клавиша нажата
|
|
|
|
|
+ // case tea.KeyMsg:
|
|
|
|
|
+ // switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
+ // case "esc": // Нажатие "esc" прекращает логин на сервер
|
|
|
|
|
+ // desk.winName = ModeConfig
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ case ModeServerMakeAdmin:
|
|
|
|
|
+ // switch msg := msg.(type) {
|
|
|
|
|
+ // // Может клавиша нажата
|
|
|
|
|
+ // case tea.KeyMsg:
|
|
|
|
|
+ // switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
+ // case "esc": // Нажатие "esc" прекращает создание админа
|
|
|
|
|
+ // desk.winName = ModeConfig
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ case ModeShowMenuBot:
|
|
|
|
|
+ // Может клавиша нажата
|
|
|
|
|
+ switch msg := msg.(type) {
|
|
|
|
|
+ // case tea.KeyMsg:
|
|
|
|
|
+ // switch msg.String() { // Да, нажато, а что именно?
|
|
|
|
|
+ // case "esc": // Нажатие "esc" прекращает показ меню
|
|
|
|
|
+ // desk.winName = ModeConfig
|
|
|
|
|
+ // }
|
|
|
|
|
+ }
|
|
|
|
|
+ // Возвращает обновлённую модель дляe Bubble Tea runtime для обработки.
|
|
|
|
|
+ //Здесь команду возвращать надо.
|
|
|
|
|
+ */
|
|
|
return desk, cmd
|
|
return desk, cmd
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (sf Desktop) View() string {
|
|
func (sf Desktop) View() string {
|
|
|
s := time.Now().Local().Format("[ WarTank ] = 2006-01-02 15:04:05.000")
|
|
s := time.Now().Local().Format("[ WarTank ] = 2006-01-02 15:04:05.000")
|
|
|
s += fmt.Sprintf("\tХост=%q\tЛогин=%q\tПароль=%q\tПодключено=%v\tЛогин=%v\tЕстьАдмин=%v\n\n", desk.host, desk.login, desk.pass, desk.isConnect, desk.isLogin, desk.isMakeAdmin)
|
|
s += fmt.Sprintf("\tХост=%q\tЛогин=%q\tПароль=%q\tПодключено=%v\tЛогин=%v\tЕстьАдмин=%v\n\n", desk.host, desk.login, desk.pass, desk.isConnect, desk.isLogin, desk.isMakeAdmin)
|
|
|
- switch desk.mode {
|
|
|
|
|
- case ModeDefault: // Исходное содержимое
|
|
|
|
|
- s += desk.winDefault()
|
|
|
|
|
- case ModeConfig: // Показать настройки клиента
|
|
|
|
|
- s += desk.winConfig()
|
|
|
|
|
- case ModeConfigServer: // Конфигурация сервера
|
|
|
|
|
- s += desk.winConfigServer()
|
|
|
|
|
- case ModeInputHostServer: // Ввод хоста для сервера
|
|
|
|
|
- s += desk.winHostServer()
|
|
|
|
|
- case ModeInputLoginServer: // Ввод логина для входа на сервер
|
|
|
|
|
- s += desk.winLoginServer()
|
|
|
|
|
- case ModeInputPassServer: // ввод пароля
|
|
|
|
|
- s += desk.winPassServer()
|
|
|
|
|
- case ModeConnectServer: // Режим подключения к серверу
|
|
|
|
|
- s += desk.winConnectServer()
|
|
|
|
|
- case ModeLoginServer: // Режим логина на сервер
|
|
|
|
|
- s += desk.winServerLogin()
|
|
|
|
|
- case ModeServerMakeAdmin: // Режим содания админа на бот-сервере
|
|
|
|
|
- s += desk.winServerMakeAdmin()
|
|
|
|
|
|
|
+ s += desk.dictWin[desk.winName].View()
|
|
|
|
|
+ switch desk.winName {
|
|
|
|
|
+ // case ModeConfigServer: // Конфигурация сервера
|
|
|
|
|
+ // s += desk.winConfigServer()
|
|
|
|
|
+ // case ModeInputHostServer: // Ввод хоста для сервера
|
|
|
|
|
+ // s += desk.winHostServer()
|
|
|
|
|
+ // case ModeInputLoginServer: // Ввод логина для входа на сервер
|
|
|
|
|
+ // s += desk.winLoginServer()
|
|
|
|
|
+ // case ModeInputPassServer: // ввод пароля
|
|
|
|
|
+ // s += desk.winPassServer()
|
|
|
|
|
+ // case ModeConnectServer: // Режим подключения к серверу
|
|
|
|
|
+ // s += desk.winConnectServer()
|
|
|
|
|
+ // case ModeLoginServer: // Режим логина на сервер
|
|
|
|
|
+ // s += desk.winServerLogin()
|
|
|
|
|
+ // case ModeServerMakeAdmin: // Режим содания админа на бот-сервере
|
|
|
|
|
+ // s += desk.winServerMakeAdmin()
|
|
|
|
|
+ // case ModeShowMenuBot: // Меню бото-фермы
|
|
|
|
|
+ // s += desk.winMenuBotoFerma()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return s
|
|
return s
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+/*
|
|
|
|
|
+func (sf *Desktop) winMenuBotoFerma() string {
|
|
|
|
|
+ s := "=Меню бото-фермы вар-танк=\n\n"
|
|
|
|
|
+ s += "[1]-Список ботов\n"
|
|
|
|
|
+ s += "[2]-Добавить бота\n"
|
|
|
|
|
+ s += "[3]-Удалить бота\n"
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
|
|
|
|
|
+ return s
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func (sf *Desktop) winServerMakeAdmin() string {
|
|
func (sf *Desktop) winServerMakeAdmin() string {
|
|
|
s := "=Создание админа на бот-сервере вар-танк=\n\n"
|
|
s := "=Создание админа на бот-сервере вар-танк=\n\n"
|
|
|
if !desk.isMakeAdmin {
|
|
if !desk.isMakeAdmin {
|
|
@@ -356,42 +335,14 @@ func (sf *Desktop) winConfigServer() string {
|
|
|
return s
|
|
return s
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (sf *Desktop) winConfig() string {
|
|
|
|
|
- s := "Настройки клиента\n\n"
|
|
|
|
|
- s += "[1]-Настройки сервера\n"
|
|
|
|
|
- s += "[2]-Вход на сервер\n"
|
|
|
|
|
- s += "[3]-Логин на сервер\n"
|
|
|
|
|
- s += "[4]-Сделать админа на бот-сервере\n"
|
|
|
|
|
- s += "\n\n[ctrl+q]-выход [esc]-назад\n"
|
|
|
|
|
- return s
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func (sf *Desktop) winDefault() string {
|
|
|
|
|
- // Заголовок
|
|
|
|
|
- s := "Что нам нужно сделать?\n\n"
|
|
|
|
|
-
|
|
|
|
|
- // Перебор по списку выбора
|
|
|
|
|
- for i, choice := range desk.choices {
|
|
|
|
|
-
|
|
|
|
|
- // Курсор указывает на этот выбор?
|
|
|
|
|
- cursor := " " // нет курсора
|
|
|
|
|
- if desk.cursor == i {
|
|
|
|
|
- cursor = ">" // есть курсор
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // Этот элемент выбран?
|
|
|
|
|
- checked := " " // не выбран
|
|
|
|
|
- if _, ok := desk.selected[i]; ok {
|
|
|
|
|
- checked = "+" // выбран!
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // отрендерить заново
|
|
|
|
|
- s += fmt.Sprintf("%s [%s] %s\n", cursor, checked, choice)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+*/
|
|
|
|
|
|
|
|
- // Подвал
|
|
|
|
|
- s += "\n\n[ctrl+q]-выход [w]-настройки\n"
|
|
|
|
|
|
|
+// IsLogin -- возвращает признак логина на сервер ботов
|
|
|
|
|
+func (sf *Desktop) IsLogin() bool {
|
|
|
|
|
+ return sf.isLogin
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
- // Вернуть строку экрана для отрисовки
|
|
|
|
|
- return s
|
|
|
|
|
|
|
+// IsConnect -- возвращает признак подключения на сервер ботов
|
|
|
|
|
+func (sf *Desktop) IsConnect() bool {
|
|
|
|
|
+ return sf.isConnect
|
|
|
}
|
|
}
|