|
@@ -8,24 +8,33 @@ import (
|
|
|
|
|
|
|
|
"github.com/charmbracelet/bubbles/textinput"
|
|
"github.com/charmbracelet/bubbles/textinput"
|
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
|
|
|
+
|
|
|
|
|
+ "wartank/desktop/client_serv"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
// Desktop -- консольный клиент для вар-танка
|
|
// Desktop -- консольный клиент для вар-танка
|
|
|
type Desktop struct {
|
|
type Desktop struct {
|
|
|
TeaModel
|
|
TeaModel
|
|
|
- p *tea.Program // Объект приложения
|
|
|
|
|
|
|
+ p *tea.Program // Объект приложения
|
|
|
|
|
+ client *client_serv.ClientServ // Клиент подключния к бото-серверу
|
|
|
|
|
+ isConnect bool // Признак подключения к бот-серверу
|
|
|
|
|
+ isLogin bool // Признак логина на сервер
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+var desk *Desktop
|
|
|
|
|
+
|
|
|
func NewDesktop() *Desktop {
|
|
func NewDesktop() *Desktop {
|
|
|
- sf := &Desktop{}
|
|
|
|
|
|
|
+ sf := &Desktop{
|
|
|
|
|
+ client: client_serv.NewClientServ(),
|
|
|
|
|
+ }
|
|
|
sf.TeaModel = NewModel()
|
|
sf.TeaModel = NewModel()
|
|
|
go sf.tick()
|
|
go sf.tick()
|
|
|
sf.p = tea.NewProgram(sf, tea.WithAltScreen(), tea.WithANSICompressor())
|
|
sf.p = tea.NewProgram(sf, tea.WithAltScreen(), tea.WithANSICompressor())
|
|
|
|
|
+ desk = sf
|
|
|
if _, err := sf.p.Run(); err != nil {
|
|
if _, err := sf.p.Run(); err != nil {
|
|
|
fmt.Printf("Опа! здесь какая-то ошибочка: %v", err)
|
|
fmt.Printf("Опа! здесь какая-то ошибочка: %v", err)
|
|
|
os.Exit(1)
|
|
os.Exit(1)
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
return sf
|
|
return sf
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -40,6 +49,8 @@ const (
|
|
|
ModeInputLoginServer // Режим ввода логина на сервер
|
|
ModeInputLoginServer // Режим ввода логина на сервер
|
|
|
ModeInputPassServer // Режим ввода пароля входа на сервер
|
|
ModeInputPassServer // Режим ввода пароля входа на сервер
|
|
|
ModeConnectServer // Режим подключения к серверу
|
|
ModeConnectServer // Режим подключения к серверу
|
|
|
|
|
+ ModeLoginServer // Режим логина на сервер
|
|
|
|
|
+ ModeServerMakeAdmin // Создать админа для бот-сервера
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
type TeaModel struct {
|
|
type TeaModel struct {
|
|
@@ -98,29 +109,29 @@ func (sf Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
return sf, tea.Quit
|
|
return sf, tea.Quit
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- switch sf.mode {
|
|
|
|
|
|
|
+ switch desk.mode {
|
|
|
case ModeDefault:
|
|
case ModeDefault:
|
|
|
switch msg := msg.(type) {
|
|
switch msg := msg.(type) {
|
|
|
// Может клавиша нажата
|
|
// Может клавиша нажата
|
|
|
case tea.KeyMsg:
|
|
case tea.KeyMsg:
|
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
|
case "up", "k": // Если "up" или "k" перемещение курсора вверх
|
|
case "up", "k": // Если "up" или "k" перемещение курсора вверх
|
|
|
- if sf.cursor > 0 {
|
|
|
|
|
- sf.cursor--
|
|
|
|
|
|
|
+ if desk.cursor > 0 {
|
|
|
|
|
+ desk.cursor--
|
|
|
}
|
|
}
|
|
|
case "down", "j": // Если "down" или "j" перемещение курсора вниз
|
|
case "down", "j": // Если "down" или "j" перемещение курсора вниз
|
|
|
- if sf.cursor < len(sf.choices)-1 {
|
|
|
|
|
- sf.cursor++
|
|
|
|
|
|
|
+ if desk.cursor < len(desk.choices)-1 {
|
|
|
|
|
+ desk.cursor++
|
|
|
}
|
|
}
|
|
|
case "enter", " ": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
case "enter", " ": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
- _, ok := sf.selected[sf.cursor]
|
|
|
|
|
|
|
+ _, ok := desk.selected[desk.cursor]
|
|
|
if ok {
|
|
if ok {
|
|
|
- delete(sf.selected, sf.cursor)
|
|
|
|
|
|
|
+ delete(desk.selected, desk.cursor)
|
|
|
} else {
|
|
} else {
|
|
|
- sf.selected[sf.cursor] = struct{}{}
|
|
|
|
|
|
|
+ desk.selected[desk.cursor] = struct{}{}
|
|
|
}
|
|
}
|
|
|
case "w": // Настройки графического клиента
|
|
case "w": // Настройки графического клиента
|
|
|
- sf.mode = ModeConfig
|
|
|
|
|
|
|
+ desk.mode = ModeConfig
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
case ModeConfig:
|
|
case ModeConfig:
|
|
@@ -128,12 +139,20 @@ func (sf Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
// Может клавиша нажата
|
|
// Может клавиша нажата
|
|
|
case tea.KeyMsg:
|
|
case tea.KeyMsg:
|
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
|
- case "q": // Вернуться на шаг назад
|
|
|
|
|
- sf.mode = ModeDefault
|
|
|
|
|
|
|
+ case "esc": // Вернуться на шаг назад
|
|
|
|
|
+ desk.mode = ModeDefault
|
|
|
case "1": // Выбор один
|
|
case "1": // Выбор один
|
|
|
- sf.mode = ModeConfigServer
|
|
|
|
|
|
|
+ desk.mode = ModeConfigServer
|
|
|
case "2": // Вход на сервер
|
|
case "2": // Вход на сервер
|
|
|
- sf.mode = ModeConnectServer
|
|
|
|
|
|
|
+ if !desk.isConnect {
|
|
|
|
|
+ desk.mode = ModeConnectServer
|
|
|
|
|
+ }
|
|
|
|
|
+ case "3": // Логин на сервер
|
|
|
|
|
+ if !desk.isLogin {
|
|
|
|
|
+ desk.mode = ModeLoginServer
|
|
|
|
|
+ }
|
|
|
|
|
+ case "4": // Создать админа
|
|
|
|
|
+ desk.mode = ModeServerMakeAdmin
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
case ModeConfigServer:
|
|
case ModeConfigServer:
|
|
@@ -141,20 +160,20 @@ func (sf Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
// Может клавиша нажата
|
|
// Может клавиша нажата
|
|
|
case tea.KeyMsg:
|
|
case tea.KeyMsg:
|
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
|
- case "q": // Вернуться на шаг назад
|
|
|
|
|
- sf.mode = ModeConfig
|
|
|
|
|
|
|
+ case "esc": // Вернуться на шаг назад
|
|
|
|
|
+ desk.mode = ModeConfig
|
|
|
case "1": // Выбор хоста сервера
|
|
case "1": // Выбор хоста сервера
|
|
|
- sf.mode = ModeInputHostServer
|
|
|
|
|
- sf.textInput.Reset()
|
|
|
|
|
- sf.textInput.Placeholder = "localhost:18050"
|
|
|
|
|
|
|
+ desk.mode = ModeInputHostServer
|
|
|
|
|
+ desk.textInput.Reset()
|
|
|
|
|
+ desk.textInput.Placeholder = "localhost:18050"
|
|
|
case "2": // Выбор логина для входа
|
|
case "2": // Выбор логина для входа
|
|
|
- sf.mode = ModeInputLoginServer
|
|
|
|
|
- sf.textInput.Reset()
|
|
|
|
|
- sf.textInput.Placeholder = "login"
|
|
|
|
|
|
|
+ desk.mode = ModeInputLoginServer
|
|
|
|
|
+ desk.textInput.Reset()
|
|
|
|
|
+ desk.textInput.Placeholder = "login"
|
|
|
case "3": // Выбор пароля для входа
|
|
case "3": // Выбор пароля для входа
|
|
|
- sf.mode = ModeInputPassServer
|
|
|
|
|
- sf.textInput.Reset()
|
|
|
|
|
- sf.textInput.Placeholder = "pass"
|
|
|
|
|
|
|
+ desk.mode = ModeInputPassServer
|
|
|
|
|
+ desk.textInput.Reset()
|
|
|
|
|
+ desk.textInput.Placeholder = "pass"
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
case ModeInputHostServer:
|
|
case ModeInputHostServer:
|
|
@@ -162,13 +181,13 @@ func (sf Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
// Может клавиша нажата
|
|
// Может клавиша нажата
|
|
|
case tea.KeyMsg:
|
|
case tea.KeyMsg:
|
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
|
- case "q": // Вернуться на шаг назад
|
|
|
|
|
- sf.mode = ModeConfigServer
|
|
|
|
|
|
|
+ case "esc": // Вернуться на шаг назад
|
|
|
|
|
+ desk.mode = ModeConfigServer
|
|
|
case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
- sf.host = sf.textInput.Value()
|
|
|
|
|
- sf.mode = ModeConfigServer
|
|
|
|
|
|
|
+ desk.host = desk.textInput.Value()
|
|
|
|
|
+ desk.mode = ModeConfigServer
|
|
|
default:
|
|
default:
|
|
|
- sf.textInput, cmd = sf.textInput.Update(msg)
|
|
|
|
|
|
|
+ desk.textInput, cmd = desk.textInput.Update(msg)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
case ModeInputLoginServer:
|
|
case ModeInputLoginServer:
|
|
@@ -176,13 +195,13 @@ func (sf Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
// Может клавиша нажата
|
|
// Может клавиша нажата
|
|
|
case tea.KeyMsg:
|
|
case tea.KeyMsg:
|
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
|
- case "q": // Вернуться на шаг назад
|
|
|
|
|
- sf.mode = ModeConfigServer
|
|
|
|
|
|
|
+ case "esc": // Вернуться на шаг назад
|
|
|
|
|
+ desk.mode = ModeConfigServer
|
|
|
case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
- sf.login = sf.textInput.Value()
|
|
|
|
|
- sf.mode = ModeConfigServer
|
|
|
|
|
|
|
+ desk.login = desk.textInput.Value()
|
|
|
|
|
+ desk.mode = ModeConfigServer
|
|
|
default:
|
|
default:
|
|
|
- sf.textInput, cmd = sf.textInput.Update(msg)
|
|
|
|
|
|
|
+ desk.textInput, cmd = desk.textInput.Update(msg)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
case ModeInputPassServer:
|
|
case ModeInputPassServer:
|
|
@@ -190,13 +209,13 @@ func (sf Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
// Может клавиша нажата
|
|
// Может клавиша нажата
|
|
|
case tea.KeyMsg:
|
|
case tea.KeyMsg:
|
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
|
- case "q": // Вернуться на шаг назад
|
|
|
|
|
- sf.mode = ModeConfigServer
|
|
|
|
|
|
|
+ case "esc": // Вернуться на шаг назад
|
|
|
|
|
+ desk.mode = ModeConfigServer
|
|
|
case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
case "enter": // Нажатие "enter" или "пробел" переключает выбранный элемент списка
|
|
|
- sf.pass = sf.textInput.Value()
|
|
|
|
|
- sf.mode = ModeConfigServer
|
|
|
|
|
|
|
+ desk.pass = desk.textInput.Value()
|
|
|
|
|
+ desk.mode = ModeConfigServer
|
|
|
default:
|
|
default:
|
|
|
- sf.textInput, cmd = sf.textInput.Update(msg)
|
|
|
|
|
|
|
+ desk.textInput, cmd = desk.textInput.Update(msg)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
case ModeConnectServer:
|
|
case ModeConnectServer:
|
|
@@ -204,98 +223,163 @@ func (sf Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
// Может клавиша нажата
|
|
// Может клавиша нажата
|
|
|
case tea.KeyMsg:
|
|
case tea.KeyMsg:
|
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
|
- case "q": // Вернуться на шаг назад
|
|
|
|
|
- sf.mode = ModeConfigServer
|
|
|
|
|
- case "esc": // Нажатие "esc" или "пробел" прекращает подключение к серверу
|
|
|
|
|
- sf.pass = sf.textInput.Value()
|
|
|
|
|
- sf.mode = ModeConfigServer
|
|
|
|
|
- default:
|
|
|
|
|
- sf.textInput, cmd = sf.textInput.Update(msg)
|
|
|
|
|
|
|
+ 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
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
// Возвращает обновлённую модель дляe Bubble Tea runtime для обработки.
|
|
// Возвращает обновлённую модель дляe Bubble Tea runtime для обработки.
|
|
|
//Здесь команду возвращать надо.
|
|
//Здесь команду возвращать надо.
|
|
|
|
|
|
|
|
- return sf, 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\n\n", sf.host, sf.login, sf.pass)
|
|
|
|
|
- switch sf.mode {
|
|
|
|
|
|
|
+ s += fmt.Sprintf("\tХост=%q\tЛогин=%q\tПароль=%q\tПодключено=%v\tЛогин=%v\n\n", desk.host, desk.login, desk.pass, desk.isConnect, desk.isLogin)
|
|
|
|
|
+ switch desk.mode {
|
|
|
case ModeDefault: // Исходное содержимое
|
|
case ModeDefault: // Исходное содержимое
|
|
|
- s += sf.winDefault()
|
|
|
|
|
|
|
+ s += desk.winDefault()
|
|
|
case ModeConfig: // Показать настройки клиента
|
|
case ModeConfig: // Показать настройки клиента
|
|
|
- s += sf.winConfig()
|
|
|
|
|
|
|
+ s += desk.winConfig()
|
|
|
case ModeConfigServer: // Конфигурация сервера
|
|
case ModeConfigServer: // Конфигурация сервера
|
|
|
- s += sf.winConfigServer()
|
|
|
|
|
|
|
+ s += desk.winConfigServer()
|
|
|
case ModeInputHostServer: // Ввод хоста для сервера
|
|
case ModeInputHostServer: // Ввод хоста для сервера
|
|
|
- s += sf.winHostServer()
|
|
|
|
|
|
|
+ s += desk.winHostServer()
|
|
|
case ModeInputLoginServer: // Ввод логина для входа на сервер
|
|
case ModeInputLoginServer: // Ввод логина для входа на сервер
|
|
|
- s += sf.winLoginServer()
|
|
|
|
|
|
|
+ s += desk.winLoginServer()
|
|
|
case ModeInputPassServer: // ввод пароля
|
|
case ModeInputPassServer: // ввод пароля
|
|
|
- s += sf.winPassServer()
|
|
|
|
|
|
|
+ s += desk.winPassServer()
|
|
|
|
|
+ case ModeConnectServer: // Режим подключения к серверу
|
|
|
|
|
+ s += desk.winConnectServer()
|
|
|
|
|
+ case ModeLoginServer: // Режим логина на сервер
|
|
|
|
|
+ s += desk.winServerLogin()
|
|
|
|
|
+ case ModeServerMakeAdmin: // Режим содания админа на бот-сервере
|
|
|
|
|
+ s += desk.winServerMakeAdmin()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return s
|
|
return s
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (sf Desktop) winPassServer() string {
|
|
|
|
|
- s := "=Ввод пароля для сервера вар-танк=\n\n"
|
|
|
|
|
- s += fmt.Sprintf(">%v\n", sf.textInput.View())
|
|
|
|
|
- s += "\n\n[ctrl+q]-выход [q]-назад\n"
|
|
|
|
|
|
|
+func (sf *Desktop) winServerMakeAdmin() string {
|
|
|
|
|
+ s := "=Создание админа на бот-сервере вар-танк=\n\n"
|
|
|
|
|
+ err := desk.client.MakeAdmin(desk.pass)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ s += fmt.Sprintf("Desktop.winServerMakeAdmin(): err=\n\t%v", err)
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
|
|
|
|
|
+ return s
|
|
|
|
|
+ }
|
|
|
|
|
+ s += "Desktop.winServerMakeAdmin(): ok\n"
|
|
|
|
|
+ desk.isLogin = true
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
|
|
|
return s
|
|
return s
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (sf Desktop) winLoginServer() string {
|
|
|
|
|
|
|
+func (sf *Desktop) winServerLogin() string {
|
|
|
|
|
+ s := "=Логин на бот-сервер вар-танк=\n\n"
|
|
|
|
|
+ err := desk.client.Login(desk.login, desk.pass)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ s += fmt.Sprintf("Desktop.winServerLogin(): err=\n\t%v", err)
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
|
|
|
|
|
+ return s
|
|
|
|
|
+ }
|
|
|
|
|
+ s += "Desktop.winServerLogin(): ok\n"
|
|
|
|
|
+ desk.isLogin = true
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
|
|
|
|
|
+ return s
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (sf *Desktop) winConnectServer() string {
|
|
|
|
|
+ s := "=Подключение к бот-серверу вар-танк=\n\n"
|
|
|
|
|
+ if !desk.isConnect {
|
|
|
|
|
+ err := desk.client.Connect(desk.host)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ s += fmt.Sprintf("Desktop.winConnectServer(): err=\n\t%v", err)
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
|
|
|
|
|
+ return s
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ s += "Desktop.winConnectServer(): ok\n"
|
|
|
|
|
+ desk.isConnect = true
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
|
|
|
|
|
+ return s
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (sf *Desktop) winPassServer() string {
|
|
|
|
|
+ s := "=Ввод пароля для бот-сервера вар-танк=\n\n"
|
|
|
|
|
+ s += fmt.Sprintf(">%v\n", desk.textInput.View())
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-назад\n"
|
|
|
|
|
+ return s
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (sf *Desktop) winLoginServer() string {
|
|
|
s := "=Ввод логина для сервера вар-танк=\n\n"
|
|
s := "=Ввод логина для сервера вар-танк=\n\n"
|
|
|
- s += fmt.Sprintf(">%v\n", sf.textInput.View())
|
|
|
|
|
- s += "\n\n[ctrl+q]-выход [q]-назад\n"
|
|
|
|
|
|
|
+ s += fmt.Sprintf(">%v\n", desk.textInput.View())
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-назад\n"
|
|
|
return s
|
|
return s
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (sf Desktop) winHostServer() string {
|
|
|
|
|
|
|
+func (sf *Desktop) winHostServer() string {
|
|
|
s := "=Ввод хоста для сервера вар-танк=\n\n"
|
|
s := "=Ввод хоста для сервера вар-танк=\n\n"
|
|
|
- s += fmt.Sprintf(">%v\n", sf.textInput.View())
|
|
|
|
|
- s += "\n\n[ctrl+q]-выход [q]-назад\n"
|
|
|
|
|
|
|
+ s += fmt.Sprintf(">%v\n", desk.textInput.View())
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-назад\n"
|
|
|
return s
|
|
return s
|
|
|
}
|
|
}
|
|
|
-func (sf Desktop) winConfigServer() string {
|
|
|
|
|
|
|
+
|
|
|
|
|
+func (sf *Desktop) winConfigServer() string {
|
|
|
s := "Настройки сервера вар-танк\n\n"
|
|
s := "Настройки сервера вар-танк\n\n"
|
|
|
s += "[1]-Настройки хоста сервера\n"
|
|
s += "[1]-Настройки хоста сервера\n"
|
|
|
s += "[2]-Логин для входа\n"
|
|
s += "[2]-Логин для входа\n"
|
|
|
s += "[3]-Пароль для входа\n"
|
|
s += "[3]-Пароль для входа\n"
|
|
|
- s += "\n\n[ctrl+q]-выход [q]-назад\n"
|
|
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-назад\n"
|
|
|
return s
|
|
return s
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (m TeaModel) winConfig() string {
|
|
|
|
|
|
|
+func (sf *Desktop) winConfig() string {
|
|
|
s := "Настройки клиента\n\n"
|
|
s := "Настройки клиента\n\n"
|
|
|
s += "[1]-Настройки сервера\n"
|
|
s += "[1]-Настройки сервера\n"
|
|
|
s += "[2]-Вход на сервер\n"
|
|
s += "[2]-Вход на сервер\n"
|
|
|
- s += "\n\n[ctrl+q]-выход [q]-назад\n"
|
|
|
|
|
|
|
+ s += "[3]-Логин на сервер\n"
|
|
|
|
|
+ s += "[4]-Сделать админа на бот-сервере\n"
|
|
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-назад\n"
|
|
|
return s
|
|
return s
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (m TeaModel) winDefault() string {
|
|
|
|
|
|
|
+func (sf *Desktop) winDefault() string {
|
|
|
// Заголовок
|
|
// Заголовок
|
|
|
s := "Что нам нужно сделать?\n\n"
|
|
s := "Что нам нужно сделать?\n\n"
|
|
|
|
|
|
|
|
// Перебор по списку выбора
|
|
// Перебор по списку выбора
|
|
|
- for i, choice := range m.choices {
|
|
|
|
|
|
|
+ for i, choice := range desk.choices {
|
|
|
|
|
|
|
|
// Курсор указывает на этот выбор?
|
|
// Курсор указывает на этот выбор?
|
|
|
cursor := " " // нет курсора
|
|
cursor := " " // нет курсора
|
|
|
- if m.cursor == i {
|
|
|
|
|
|
|
+ if desk.cursor == i {
|
|
|
cursor = ">" // есть курсор
|
|
cursor = ">" // есть курсор
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Этот элемент выбран?
|
|
// Этот элемент выбран?
|
|
|
checked := " " // не выбран
|
|
checked := " " // не выбран
|
|
|
- if _, ok := m.selected[i]; ok {
|
|
|
|
|
- checked = "x" // выбран!
|
|
|
|
|
|
|
+ if _, ok := desk.selected[i]; ok {
|
|
|
|
|
+ checked = "+" // выбран!
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// отрендерить заново
|
|
// отрендерить заново
|