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() }