package main import ( "fmt" "go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service/observer" "go_dreamfactory/cmd/v2/theme" "go_dreamfactory/cmd/v2/ui" "io" "log" "os" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" ) var ( connService service.ConnService pttService service.PttService configService service.ConfigService dbService service.DbService obs = observer.NewObserver() logger *logrus.Logger ) // func init() { _ = os.Setenv("FYNE_SCALE", "0.9") var err error if err = setupConfig(); err != nil { fmt.Println(err) os.Exit(1) } if err = setupDb(); err != nil { fmt.Println(err) os.Exit(1) } // initialize logger if err = setupLogger(); err != nil { fmt.Println(err) os.Exit(1) } if err = setupWsConn(); err != nil { fmt.Println(err) os.Exit(1) } if err = setupPtt(); err != nil { fmt.Println(err) os.Exit(1) } } func main() { // create a new ui app := app.NewWithID("protocol-test-tool") app.SetIcon(theme.ResourceIconPng) appUI := ui.NewUI(app, configService, connService, pttService, obs) // logLifecycle(app) //创建enter w := fyne.CurrentApp().NewWindow("传送门") w.SetContent(container.NewGridWithColumns(2, widget.NewButton("工具", func() { toolWindow := ui.NewToolWindow(appUI) toolWindow.CreateWindow(common.APP_NAME, 1366, 768, true) w.Hide() }), widget.NewButton("登服", func() { mainWindow := ui.NewMainWindow(appUI) mainWindow.CreateWindow(common.APP_NAME, 1366, 768, true) w.Hide() }))) w.SetFixedSize(true) w.Resize(fyne.NewSize(300, 100)) w.CenterOnScreen() logrus.WithField("version", app.Metadata().Version).Info("app starting") w.Show() appUI.Run() } func logLifecycle(a fyne.App) { a.Lifecycle().SetOnStarted(func() { log.Println("Lifecycle: Started") }) a.Lifecycle().SetOnStopped(func() { log.Println("Lifecycle: Stopped") }) a.Lifecycle().SetOnEnteredForeground(func() { log.Println("Lifecycle: Entered Foreground") }) a.Lifecycle().SetOnExitedForeground(func() { log.Println("Lifecycle: Exited Foreground") }) } func setupPtt() (err error) { pttService = service.NewPttService(connService, obs) return } func setupWsConn() (err error) { connService = service.NewConnService(obs) return } func setupDb() (err error) { dbService = service.NewDbService() return } func setupConfig() (err error) { configService, err = service.NewConfigService() if err != nil { return } if err = configService.ApplyConfig(); err != nil { return } return } func setupLogger() (err error) { logrus.SetFormatter(&logrus.TextFormatter{ DisableColors: true, FullTimestamp: true, }) logrus.SetLevel(logrus.DebugLevel) logrus.SetOutput(os.Stdout) //设置output,默认为stderr,可以为任何io.Writer,比如文件*os.File file, err := os.OpenFile("robot.log", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666) writers := []io.Writer{ file, os.Stdout} //同时写文件和屏幕 fileAndStdoutWriter := io.MultiWriter(writers...) if err == nil { logrus.SetOutput(fileAndStdoutWriter) } else { logrus.Fatal("failed to log to file.") } return nil }