serv_gui.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // package serv_desktop -- графический интерфейс для сервера бото-фермы
  2. package serv_desktop
  3. import (
  4. "fmt"
  5. "log"
  6. "fyne.io/fyne/v2"
  7. "fyne.io/fyne/v2/app"
  8. "wartank/pkg/types"
  9. "wartank/server/serv_desktop/win_main"
  10. )
  11. // СерверДесктоп -- интерфейс к графике бото-фермы
  12. type СерверДесктоп struct {
  13. сервер types.ИСервер
  14. файн fyne.App
  15. окноГлав *win_main.ОкноГлав
  16. }
  17. // НовСерверДесктоп -- возвращает новый гуй для бото-фермы
  18. func НовСерверДесктоп(serv types.ИСервер) (*СерверДесктоп, error) {
  19. if serv == nil {
  20. return nil, fmt.Errorf("НовСерверДесктоп(): IServer==nil")
  21. }
  22. sf := &СерверДесктоп{
  23. сервер: serv,
  24. файн: app.New(),
  25. }
  26. return sf, nil
  27. }
  28. // Run -- запускает графику в работу
  29. func (sf *СерверДесктоп) Run() {
  30. log.Printf("Gui.Run()\n")
  31. var err error
  32. sf.окноГлав, err = win_main.NewWinMain(sf.сервер)
  33. if err != nil {
  34. log.Printf("Gui.Run(): in create winMain, err=\n\t%v\n", err)
  35. sf.сервер.CancelApp()
  36. return
  37. }
  38. sf.окноГлав.Show()
  39. sf.файн.Run()
  40. }
  41. // ФайнПрилож -- возвращает Fyne-приложение
  42. func (sf *СерверДесктоп) ФайнПрилож() fyne.App {
  43. return sf.файн
  44. }