package ui import ( "go_dreamfactory/cmd/v2/lib/common" os_storage "go_dreamfactory/cmd/v2/lib/storage" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service/observer" mytheme "go_dreamfactory/cmd/v2/theme" "io/ioutil" "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" fyne_storage "fyne.io/fyne/v2/storage" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" ) type jsonFileList struct { selItemId string //选择的文件ID cacheList common.List itemList *widget.List fileTotal int //文件数 } func newJsonFileList() *jsonFileList { return &jsonFileList{ cacheList: common.NewList(""), } } type appConfigValid struct { appAdapter jsonFileList } func (a *appConfigValid) LazyInit(pt service.PttService, obs observer.Observer) error { a.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_VALID, mytheme.ResourceExcelJpg, nil) a.jsonFileList = *newJsonFileList() //load conf storage, _ := os_storage.NewOSStorage() conf, err := storage.LoadConfig() if err != nil { logrus.Error(err) return err } if conf.JsonDir!=""{ } content := container.NewMax() content.Objects = []fyne.CanvasObject{} // 打开目录 openFolder := func(entry *widget.Entry) { dConf := dialog.NewFolderOpen(func(lu fyne.ListableURI, err error) { if lu == nil { return } entry.Text = lu.Path() entry.Refresh() }, toolWin.w) luri, _ := fyne_storage.ListerForURI(fyne_storage.NewFileURI(".")) dConf.SetLocation(luri) dConf.SetConfirmText("打开") dConf.SetDismissText("取消") dConf.Resize(fyne.NewSize(750, 500)) dConf.Show() } //配置json路径 jsonDir := widget.NewEntry() jsonDir.PlaceHolder = "json目录" form := widget.NewForm( widget.NewFormItem("json目录", container.NewBorder(nil, nil, nil, widget.NewButtonWithIcon("", theme.FolderIcon(), func() { openFolder(jsonDir) a.jsonFileList.initItem(jsonDir.Text) }), jsonDir)), ) jsonDir.SetText(conf.JsonDir) c := container.NewBorder(form, nil, nil, nil) content.Objects = append(content.Objects, c) a.tabItem.Content = content return nil } func (a *appConfigValid) GetAppName() string { return common.TOOLBAR_VALID } func (a *appConfigValid) Icon() fyne.Resource { return mytheme.ResourceExcelJpg } func (f *jsonFileList) initItem(dir string) { files, err := ioutil.ReadDir(dir) if err != nil { logrus.Error(err) return } for _, file := range files { if file.IsDir() { if file.Name() == ".vscode" { continue } fm := common.Item{ Text: file.Name(), Checked: false, } f.cacheList.Items = append(f.cacheList.Items, fm) // f.selItemIds = append(f.selItemIds, fm.Id) f.fileTotal++ // logrus.Debugf("%v", fm.Id) } } }