156 lines
3.2 KiB
Go
156 lines
3.2 KiB
Go
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
|
||
}
|