package gui import ( "strings" "kingdee-dbapi/config" "kingdee-dbapi/kingdee" "kingdee-dbapi/logger" "kingdee-dbapi/static" "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(dbConnectedChan chan bool) *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() dbConnectedChan <- true }) 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() }