56 lines
875 B
Go
56 lines
875 B
Go
package ui
|
|
|
|
import (
|
|
"os"
|
|
|
|
"fyne.io/fyne/v2"
|
|
"github.com/sirupsen/logrus"
|
|
|
|
"legu.airobot/lib"
|
|
"legu.airobot/storage"
|
|
"legu.airobot/theme"
|
|
)
|
|
|
|
type UIImpl struct {
|
|
app fyne.App
|
|
storage storage.Storage
|
|
config *storage.Config
|
|
callers []lib.ICaller
|
|
}
|
|
|
|
func NewUI(app fyne.App, callers []lib.ICaller) (*UIImpl, error) {
|
|
app.Settings().SetTheme(&theme.MyTheme{})
|
|
|
|
storage, err := storage.NewOSStorage()
|
|
if err != nil {
|
|
logrus.Errorf("new storage err:%v", err)
|
|
return nil, err
|
|
}
|
|
|
|
// 加载配置
|
|
config, err := storage.LoadConfig()
|
|
if err != nil {
|
|
logrus.Errorf("Load config err:%v", err)
|
|
return nil, err
|
|
}
|
|
|
|
return &UIImpl{
|
|
app: app,
|
|
storage: storage,
|
|
config: config,
|
|
callers: callers,
|
|
}, nil
|
|
}
|
|
|
|
func (ui *UIImpl) Run() {
|
|
defer func() {
|
|
_ = os.Unsetenv("FYNE_SCALE")
|
|
}()
|
|
|
|
ui.app.Run()
|
|
}
|
|
|
|
func (ui *UIImpl) Stop() {
|
|
ui.app.Quit()
|
|
}
|