77 lines
2.0 KiB
Go
77 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/app"
|
|
"fyne.io/fyne/v2/canvas"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/dialog"
|
|
"fyne.io/fyne/v2/layout"
|
|
"fyne.io/fyne/v2/widget"
|
|
"golang.org/x/image/colornames"
|
|
)
|
|
|
|
func main() {
|
|
myApp := app.New()
|
|
myWindow := myApp.NewWindow("封面获取器")
|
|
myWindow.Resize(fyne.NewSize(640, 480))
|
|
|
|
// 创建显示框
|
|
sourceDirLabel := widget.NewLabel("未选择")
|
|
targetDirLabel := widget.NewLabel("未选择")
|
|
displayBoxInfo := canvas.NewText("", colornames.Blue)
|
|
|
|
// 创建目录选择框
|
|
selectSourceDir := widget.NewButton("选择作品存放目录", func() {
|
|
dialog.ShowFolderOpen(func(uri fyne.ListableURI, err error) {
|
|
if err != nil {
|
|
sourceDirLabel.SetText("选择目录失败: " + err.Error())
|
|
return
|
|
}
|
|
if uri != nil {
|
|
sourceDirLabel.SetText(uri.Path())
|
|
}
|
|
}, myWindow)
|
|
})
|
|
|
|
selectTargetDir := widget.NewButton("选择输出目录", func() {
|
|
dialog.ShowFolderOpen(func(uri fyne.ListableURI, err error) {
|
|
if err != nil {
|
|
targetDirLabel.SetText("选择目录失败: " + err.Error())
|
|
return
|
|
}
|
|
if uri != nil {
|
|
targetDirLabel.SetText(uri.Path())
|
|
}
|
|
}, myWindow)
|
|
})
|
|
|
|
// 创建主布局
|
|
content := container.NewVBox(
|
|
container.NewHBox(selectSourceDir, sourceDirLabel),
|
|
container.NewHBox(selectTargetDir, targetDirLabel),
|
|
container.NewCenter(displayBoxInfo),
|
|
layout.NewSpacer(),
|
|
container.NewCenter(
|
|
widget.NewButton("开始处理", func() {
|
|
displayBoxInfo.Text = "处理中..."
|
|
displayBoxInfo.Color = colornames.Blue
|
|
displayBoxInfo.Refresh()
|
|
|
|
crawler := NewCrawler(sourceDirLabel.Text, targetDirLabel.Text)
|
|
if err := crawler.Handle(); err != nil {
|
|
displayBoxInfo.Text = "处理失败: " + err.Error()
|
|
displayBoxInfo.Color = colornames.Red
|
|
} else {
|
|
displayBoxInfo.Text = "处理完成"
|
|
displayBoxInfo.Color = colornames.Green
|
|
}
|
|
displayBoxInfo.Refresh()
|
|
}),
|
|
),
|
|
)
|
|
|
|
myWindow.SetContent(content)
|
|
myWindow.ShowAndRun()
|
|
}
|