Files
work_cation/views/createView/createExecFile.go
T

87 lines
2.5 KiB
Go

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"
"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 {
var (
// 基础表单
formBase = &widget.Form{}
info = &models.ExecFiles{BaseCard: models.NewBaseCard(
models.ToolTypeExecFiles,
repo.User.GetUserInfo(global.DB).ID,
)}
)
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: "暂未支持可不填"})
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() {
fmt.Println("info:", info)
err := service.ExecFile.Create(info, chooseDir)
if err != nil {
dialog.ShowInformation("创建失败", err.Error(), w)
return
}
dialog.ShowInformation("ok", "创建成功", w)
// 更换
time.AfterFunc(2*time.Second, func() { w.Close() })
})
buttonTest := widget.NewButton("测试", func() {
if info.Cmd == "" {
dialog.ShowInformation("测试失败", "未填写执行命令", w)
return
}
dir := filepath.Join(chooseDir, info.Pwd)
err := utils.File.WinOpenFile(dir, info.Cmd)
if err != nil {
dialog.ShowInformation("测试失败", err.Error(), w)
return
}
})
return container.NewBorder(container.NewHBox(widget.NewLabel("新建"), widget.NewSeparator()),
nil, nil, nil, container.NewScroll(
container.NewVBox(
formBase,
buttonDir,
buttonTest,
container.NewHBox(buttonSave),
)))
}