package gui
|
|
import (
|
"strings"
|
|
"kingdee-dbapi/config"
|
"kingdee-dbapi/kingdee"
|
"kingdee-dbapi/logger"
|
"kingdee-dbapi/nsqclient"
|
"kingdee-dbapi/report"
|
"kingdee-dbapi/static"
|
"kingdee-dbapi/webserver"
|
|
"fyne.io/fyne/v2"
|
"fyne.io/fyne/v2/app"
|
"fyne.io/fyne/v2/container"
|
"fyne.io/fyne/v2/dialog"
|
"fyne.io/fyne/v2/layout"
|
"fyne.io/fyne/v2/theme"
|
"fyne.io/fyne/v2/widget"
|
)
|
|
type Display struct {
|
Window fyne.Window
|
FullScreen bool
|
}
|
|
func NewDisplay() *Display {
|
a := app.New()
|
|
// 设置图标
|
a.SetIcon(static.IconPng)
|
|
// 创建窗口
|
w := a.NewWindow("金蝶数据接口服务 v14.02")
|
|
// 设置为主窗口
|
w.SetMaster()
|
|
serverPort := widget.NewEntry()
|
sqlAddr := widget.NewEntry()
|
sqlDBName := widget.NewEntry()
|
sqlUsername := widget.NewEntry()
|
sqlPassword := widget.NewEntry()
|
sqlPassword.Password = true
|
serverPort.Text = config.Options.WebPort
|
sqlAddr.Text = config.Options.SqlAddr
|
sqlUsername.Text = config.Options.SqlUsername
|
sqlPassword.Text = config.Options.SqlPassword
|
sqlDBName.Text = config.Options.SqlDBName
|
|
form := &widget.Form{
|
Items: []*widget.FormItem{
|
// we can specify items in the constructor
|
{Text: "服务端口", Widget: serverPort},
|
{Text: "数据库地址", Widget: sqlAddr},
|
{Text: "数据库名称", Widget: sqlDBName},
|
{Text: "数据用户名", Widget: sqlUsername},
|
{Text: "数据库密码", Widget: sqlPassword},
|
},
|
//SubmitText: "确定",
|
//
|
//OnSubmit: func() {
|
// // optional, handle form submission
|
// fmt.Println("Form submitted:", serverPort.Text)
|
// //myWindow.Close()
|
//},
|
}
|
var submitBtn *widget.Button
|
submitBtn = widget.NewButtonWithIcon("启动", theme.MailSendIcon(), func() {
|
config.Options.WebPort = strings.Trim(serverPort.Text, " ")
|
config.Options.SqlAddr = strings.Trim(sqlAddr.Text, " ")
|
config.Options.SqlUsername = strings.Trim(sqlUsername.Text, " ")
|
config.Options.SqlPassword = strings.Trim(sqlPassword.Text, " ")
|
config.Options.SqlDBName = strings.Trim(sqlDBName.Text, " ")
|
|
config.SaveConfig()
|
|
// 连接数据库
|
err := kingdee.Init(config.Options.SqlUsername, config.Options.SqlPassword, config.Options.SqlAddr, config.Options.SqlDBName)
|
if err != nil {
|
logger.Error("db init error:%s", err.Error())
|
dialog.ShowError(err, w)
|
}
|
|
form.Disable()
|
submitBtn.Text = "已启动"
|
submitBtn.Disable()
|
|
report.Start()
|
|
// 开启订阅SQL查询
|
go nsqclient.InitNsqConsumer(config.Options.SqlQueryTopic, "sensor01", kingdee.SqlQueryHandle)
|
go nsqclient.InitNsqConsumer(config.Options.CSTQueryTopic, "sensor01", kingdee.CSTQueryHandle)
|
|
go webserver.Serve(serverPort.Text)
|
})
|
|
content := container.New(layout.NewGridWrapLayout(fyne.NewSize(300, 200)), form)
|
|
content1 := container.NewVBox(content, submitBtn)
|
w.SetContent(content1)
|
return &Display{
|
w,
|
false,
|
}
|
}
|
|
func (d *Display) ShowMainWindow() {
|
d.Window.Resize(fyne.NewSize(330, 250))
|
|
d.Window.Canvas().SetOnTypedKey(func(event *fyne.KeyEvent) {
|
if event.Name == "F12" {
|
d.Window.SetFullScreen(!d.FullScreen)
|
d.FullScreen = !d.FullScreen
|
}
|
})
|
|
d.Window.ShowAndRun()
|
}
|