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 scenes []lib.IScene obs lib.Observer } func NewUI(app fyne.App, scenes []lib.IScene) (*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, scenes: scenes, obs: lib.NewObserver(), }, nil } func (ui *UIImpl) Run() { defer func() { _ = os.Unsetenv("FYNE_SCALE") }() ui.app.Run() } func (ui *UIImpl) Stop() { ui.app.Quit() }