|
|
@@ -1,12 +1,106 @@
|
|
|
// package win_main -- главное коно бото-фермы
|
|
|
package win_main
|
|
|
|
|
|
-import "fyne.io/fyne/v2"
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "image/color"
|
|
|
+ "log"
|
|
|
+
|
|
|
+ "fyne.io/fyne/v2"
|
|
|
+ "fyne.io/fyne/v2/canvas"
|
|
|
+ "fyne.io/fyne/v2/container"
|
|
|
+ "fyne.io/fyne/v2/layout"
|
|
|
+ "fyne.io/fyne/v2/widget"
|
|
|
+
|
|
|
+ "wartank/pkg/types"
|
|
|
+)
|
|
|
|
|
|
// WinMain -- главное окно приложения
|
|
|
-type WinMain struct{
|
|
|
+type WinMain struct {
|
|
|
fyne.Window
|
|
|
+ serv types.IServer
|
|
|
+ app fyne.App
|
|
|
+ botLogin string
|
|
|
+ botPass string
|
|
|
+ boxLeft *fyne.Container
|
|
|
}
|
|
|
|
|
|
// NewWinMain -- возвращает новое главное окно
|
|
|
-func NewWinMain(gui )
|
|
|
+func NewWinMain(serv types.IServer) (*WinMain, error) {
|
|
|
+ if serv == nil {
|
|
|
+ return nil, fmt.Errorf("NewWinMain(): IServer==nil")
|
|
|
+ }
|
|
|
+ sf := &WinMain{
|
|
|
+ Window: serv.Gui().FyneApp().NewWindow("Бото-ферма [wartank.ru]"),
|
|
|
+ app: serv.Gui().FyneApp(),
|
|
|
+ serv: serv,
|
|
|
+ }
|
|
|
+ green := color.NRGBA{R: 0, G: 180, B: 0, A: 255}
|
|
|
+ text1 := canvas.NewText("Список ботов", green)
|
|
|
+ sf.boxLeft = container.NewVBox(text1)
|
|
|
+ { // Получить список всех ботов
|
|
|
+ lstBots := sf.serv.ServBots().ListBot()
|
|
|
+ for _, bot := range lstBots {
|
|
|
+ sf.botLogin = bot.Name()
|
|
|
+ sf.btnAddClick()
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ btnAddBot := widget.NewButton("Добавить бота", sf.btnAddClick)
|
|
|
+ btnExit := widget.NewButton("Выход", sf.btnExitClick)
|
|
|
+ boxDown := container.NewHBox(btnAddBot, layout.NewSpacer(), btnExit)
|
|
|
+ boxBorder := container.NewBorder(nil, nil, sf.boxLeft, nil, sf.boxLeft)
|
|
|
+ boxMain := container.NewBorder(nil, boxDown, nil, nil, boxBorder)
|
|
|
+ sf.Resize(fyne.NewSize(640, 480))
|
|
|
+ sf.SetContent(boxMain)
|
|
|
+ return sf, nil
|
|
|
+}
|
|
|
+
|
|
|
+func (sf *WinMain) btnAddClick() {
|
|
|
+ log.Println("btnAddclick()")
|
|
|
+ winAddBot := sf.app.NewWindow("Новый бот")
|
|
|
+ entLogin := widget.NewEntry()
|
|
|
+ entPass := widget.NewEntry()
|
|
|
+ form := &widget.Form{
|
|
|
+ Items: []*widget.FormItem{ // we can specify items in the constructor
|
|
|
+ {Text: "Логин", Widget: entLogin},
|
|
|
+ {Text: "Пароль", Widget: entPass},
|
|
|
+ },
|
|
|
+ OnSubmit: func() { // optional, handle form submission
|
|
|
+ sf.botLogin = entLogin.Text
|
|
|
+ sf.botPass = entPass.Text
|
|
|
+ },
|
|
|
+ }
|
|
|
+ winAddBot.Resize(fyne.NewSize(640, 480))
|
|
|
+ winAddBot.SetContent(form)
|
|
|
+ winAddBot.Show()
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+// Добавляет бота на жкран
|
|
|
+func (sf *WinMain)addBot(){
|
|
|
+
|
|
|
+ log.Println("Form submitted:", entLogin.Text)
|
|
|
+
|
|
|
+ log.Println("multiline:", entPass.Text)
|
|
|
+ winAddBot.Close()
|
|
|
+ btnBot := widget.NewButton(sf.botLogin, sf.btnBotClick())
|
|
|
+ sf.boxLeft.Add(btnBot)
|
|
|
+ err := sf.serv.ServBots().AddBot(sf.botLogin, sf.botPass)
|
|
|
+ if err != nil {
|
|
|
+ log.Printf("WinMain.btnAddclick().OnSubmit(): in add bot to ferma, err=\n\t%v\n", err)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (sf *WinMain) btnBotClick() func() {
|
|
|
+ _botLogin := sf.botLogin
|
|
|
+ _botPass := sf.botPass
|
|
|
+ return func() {
|
|
|
+ log.Printf("btnBotClick().fn(): botName=%q\tbotPass=%q\n", _botLogin, _botPass)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (sf *WinMain) btnExitClick() {
|
|
|
+ log.Println("btnExitClick()")
|
|
|
+ sf.app.Quit()
|
|
|
+}
|