拓展类型 自定义工具类型
This commit is contained in:
@@ -1,57 +1,91 @@
|
||||
package createView
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/dialog"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
dialogWin "github.com/sqweek/dialog"
|
||||
"log"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"time"
|
||||
"work_cation/global"
|
||||
"work_cation/models"
|
||||
"work_cation/pkg/utils"
|
||||
"work_cation/repo"
|
||||
"work_cation/service"
|
||||
)
|
||||
|
||||
var chooseDir string
|
||||
|
||||
func CreateExecFile(w fyne.Window) fyne.CanvasObject {
|
||||
if erlangCard == nil {
|
||||
erlangCard = &models.ErlangCards{
|
||||
UUID: utils.Uuid.CreateUUID(),
|
||||
UserID: repo.User.GetUserInfo(global.DB).ID,
|
||||
}
|
||||
}
|
||||
var (
|
||||
// 基础表单
|
||||
formBase = &widget.Form{}
|
||||
// 变量表单
|
||||
formVars = &widget.Form{}
|
||||
info = &models.ExecFiles{BaseCard: models.NewBaseCard(
|
||||
models.ToolTypeExecFiles,
|
||||
repo.User.GetUserInfo(global.DB).ID,
|
||||
)}
|
||||
)
|
||||
|
||||
formBase.AppendItem(&widget.FormItem{Text: "名称", Widget: newDefaultEntry(&erlangCard.Title)})
|
||||
formBase.AppendItem(&widget.FormItem{Text: "描述", Widget: newDefaultEntry(&erlangCard.Text)})
|
||||
formBase.AppendItem(&widget.FormItem{Text: "封面", Widget: newDefaultEntry(&erlangCard.Covers), HintText: "暂未支持可不填"})
|
||||
formBase.AppendItem(&widget.FormItem{Text: "是否默认展示", Widget: newDefaultEntry(&erlangCard.IsShowOut)})
|
||||
formBase.AppendItem(&widget.FormItem{Text: "模版内容", Widget: newDefaultEntryCallback(&erlangCard.Template, func() { generateVariableForm1(erlangCard, formVars) })})
|
||||
formBase.AppendItem(&widget.FormItem{Text: "名称", Widget: newDefaultEntry(&info.Title)})
|
||||
formBase.AppendItem(&widget.FormItem{Text: "描述", Widget: newDefaultEntry(&info.Text)})
|
||||
formBase.AppendItem(&widget.FormItem{Text: "封面", Widget: newDefaultEntry(&info.Covers), HintText: "暂未支持可不填"})
|
||||
|
||||
// 刷新变量表单
|
||||
generateVariableForm1(erlangCard, formVars)
|
||||
formBase.AppendItem(&widget.FormItem{Text: "执行命令", Widget: newDefaultEntry(&info.Cmd), HintText: "shell 命令 例: ./数据回档.exe"})
|
||||
formBase.AppendItem(&widget.FormItem{Text: "执行路径", Widget: newDefaultEntry(&info.Pwd), HintText: ". 默认路径"})
|
||||
|
||||
chooseDirEntry := newDefaultEntry(&chooseDir)
|
||||
formBase.AppendItem(&widget.FormItem{Text: "文件夹", Widget: chooseDirEntry})
|
||||
|
||||
buttonDir := widget.NewButton("选择路径", func() {
|
||||
chooseDir1, err := dialogWin.Directory().Title("选择工具所在文件夹").SetStartDir(chooseDir).Browse()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
chooseDirEntry.SetText(chooseDir1)
|
||||
log.Println("Selected folder:", chooseDir)
|
||||
|
||||
})
|
||||
|
||||
// 保存按钮
|
||||
buttonSave := widget.NewButton("保存", func() {
|
||||
err := service.ErlangCard.Create(erlangCard)
|
||||
fmt.Println("info:", info)
|
||||
err := service.ExecFile.Create(info, chooseDir)
|
||||
if err != nil {
|
||||
dialog.ShowError(err, w)
|
||||
dialog.ShowInformation("创建失败", err.Error(), w)
|
||||
return
|
||||
}
|
||||
dialog.ShowInformation("ok", "创建成功", w)
|
||||
// 更换
|
||||
erlangCard.UUID = utils.Uuid.CreateUUID()
|
||||
time.AfterFunc(2*time.Second, func() { w.Close() })
|
||||
})
|
||||
|
||||
buttonTest := widget.NewButton("测试", func() {
|
||||
if info.Cmd == "" {
|
||||
dialog.ShowInformation("测试失败", "未填写执行命令", w)
|
||||
return
|
||||
}
|
||||
ex := exec.Command(info.Cmd)
|
||||
ex.Dir = filepath.Join(chooseDir, info.Pwd)
|
||||
if err := ex.Start(); err != nil {
|
||||
dialog.ShowInformation("测试失败", err.Error(), w)
|
||||
return
|
||||
}
|
||||
go func() {
|
||||
if err := ex.Wait(); err != nil {
|
||||
dialog.ShowInformation("测试失败", err.Error(), w)
|
||||
}
|
||||
}()
|
||||
})
|
||||
|
||||
return container.NewBorder(container.NewHBox(widget.NewLabel("新建"), widget.NewSeparator()),
|
||||
nil, nil, nil, container.NewScroll(
|
||||
container.NewVBox(
|
||||
formBase,
|
||||
formVars,
|
||||
buttonSave,
|
||||
buttonDir,
|
||||
buttonTest,
|
||||
container.NewHBox(buttonSave),
|
||||
)))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user