package ui import ( "errors" "fmt" "go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/service/observer" "os/exec" "runtime" "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" ) type appGen struct { appAdapter obs observer.Observer } func (this *appGen) LazyInit(obs observer.Observer) error { this.obs = obs this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_GEN, theme.ContentCopyIcon(), nil) content := container.NewMax() content.Objects = []fyne.CanvasObject{} serverAddr := widget.NewEntry() serverAddr.PlaceHolder = "服务器地址" serverAddr.Text = "10.0.1.11" projectDir := widget.NewEntry() projectDir.PlaceHolder = "项目目录" projectDir.Text = "E:\\projects\\workspace\\go_dreamfactory" workDir := widget.NewEntry() workDir.PlaceHolder = "LuBan目录" workDir.Text = "E:\\svn\\dreamworks\\client\\dreamworks\\ExcelFile" // client client := widget.NewEntry() client.PlaceHolder = "配置Luban Client.exe路径" client.Text = "\\Luban.Client\\Luban.Client.exe" //define define := widget.NewEntry() define.PlaceHolder = "定义文件" define.Text = "\\Defines\\__root__.xml" // output outputCodeDir := widget.NewEntry() outputCodeDir.Text = "\\sys\\configure\\structs" outputJsonDir := widget.NewEntry() outputJsonDir.Text = "\\bin\\json" //input inputDir := widget.NewEntry() inputDir.Text = "\\Datas" //genType var genTypeText string genType := widget.NewSelect([]string{"go", "json", "all"}, func(s string) { genTypeText = s }) genType.PlaceHolder = "生成类型" form := widget.NewForm( widget.NewFormItem("工作目录", workDir), widget.NewFormItem("Client", client), widget.NewFormItem("输入目录", inputDir), widget.NewFormItem("输出Code目录", outputCodeDir), widget.NewFormItem("输出JSON目录", outputJsonDir), widget.NewFormItem("生成类型", genType), ) getType := func() string { if genTypeText == "" { return "" } else { if genTypeText == "go" { return "code_go_json" } else if genTypeText == "json" { return "data_json" } else if genTypeText == "all" { return "code_go_json,data_json" } } return "" } form.SubmitText = "确定" form.OnSubmit = func() { if runtime.GOOS != "windows" { dialog.ShowError(errors.New("no support "+runtime.GOOS), toolWin.w) return } if genTypeText == "" { dialog.ShowError(errors.New("类型未选择"), toolWin.w) return } // service.GetBoltDb().Update(func(tx *bolt.Tx) error { // return nil // }) str := `%s -h %s -j cfg -- -d %s --input_data_dir %s --output_code_dir %s --output_data_dir %s --gen_types %s --go:bright_module_name bright -s server` arg := fmt.Sprintf(str, workDir.Text+client.Text, serverAddr.Text, workDir.Text+define.Text, workDir.Text+inputDir.Text, projectDir.Text+outputCodeDir.Text, projectDir.Text+outputJsonDir.Text, getType(), ) logrus.Debug(arg) c := exec.Command("cmd.exe", "/c", arg) if err := c.Run(); err != nil { dialog.ShowError(err, toolWin.w) return } } content.Objects = append(content.Objects, form) this.tabItem.Content = content return nil } func (a *appGen) OpenDefault() bool { return true } func (a *appGen) GetAppName() string { return common.TOOLBAR_GEN } func (a appGen) OnClose() bool { return false }